{
  "version": 3,
  "sources": ["ssg:https://app.framerstatic.com/chunk-4Z6NVKPU.mjs", "ssg:https://ga.jspm.io/npm:react-dom@18.2.0/index.js", "ssg:https://ga.jspm.io/npm:scheduler@0.23.0/index.js", "ssg:https://app.framerstatic.com/framer.73H42MHI.mjs"],
  "sourcesContent": ["import {\n  __commonJS,\n  __export\n} from \"./chunk-QLPHEVXG.mjs\";\n\n// ../../../node_modules/@emotion/memoize/dist/memoize.browser.cjs.js\nvar require_memoize_browser_cjs = __commonJS({\n  \"../../../node_modules/@emotion/memoize/dist/memoize.browser.cjs.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function memoize(fn) {\n      var cache = {};\n      return function(arg) {\n        if (cache[arg] === void 0)\n          cache[arg] = fn(arg);\n        return cache[arg];\n      };\n    }\n    exports.default = memoize;\n  }\n});\n\n// ../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.cjs.js\nvar require_is_prop_valid_browser_cjs = __commonJS({\n  \"../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.cjs.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function _interopDefault(ex) {\n      return ex && typeof ex === \"object\" && \"default\" in ex ? ex[\"default\"] : ex;\n    }\n    var memoize = _interopDefault(require_memoize_browser_cjs());\n    var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/;\n    var index = memoize(\n      function(prop) {\n        return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91;\n      }\n      /* Z+1 */\n    );\n    exports.default = index;\n  }\n});\n\n// ../../../node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs\nvar MotionGlobalConfig = {\n  skipAnimations: false,\n  useManualTiming: false\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/noop.mjs\nvar noop = (any) => any;\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/render-step.mjs\nfunction createRenderStep(runNextFrame) {\n  let thisFrame = /* @__PURE__ */ new Set();\n  let nextFrame = /* @__PURE__ */ new Set();\n  let isProcessing = false;\n  let flushNextFrame = false;\n  const toKeepAlive = /* @__PURE__ */ new WeakSet();\n  let latestFrameData = {\n    delta: 0,\n    timestamp: 0,\n    isProcessing: false\n  };\n  function triggerCallback(callback) {\n    if (toKeepAlive.has(callback)) {\n      step.schedule(callback);\n      runNextFrame();\n    }\n    callback(latestFrameData);\n  }\n  const step = {\n    /**\n     * Schedule a process to run on the next frame.\n     */\n    schedule: (callback, keepAlive = false, immediate = false) => {\n      const addToCurrentFrame = immediate && isProcessing;\n      const queue = addToCurrentFrame ? thisFrame : nextFrame;\n      if (keepAlive)\n        toKeepAlive.add(callback);\n      if (!queue.has(callback))\n        queue.add(callback);\n      return callback;\n    },\n    /**\n     * Cancel the provided callback from running on the next frame.\n     */\n    cancel: (callback) => {\n      nextFrame.delete(callback);\n      toKeepAlive.delete(callback);\n    },\n    /**\n     * Execute all schedule callbacks.\n     */\n    process: (frameData2) => {\n      latestFrameData = frameData2;\n      if (isProcessing) {\n        flushNextFrame = true;\n        return;\n      }\n      isProcessing = true;\n      [thisFrame, nextFrame] = [nextFrame, thisFrame];\n      nextFrame.clear();\n      thisFrame.forEach(triggerCallback);\n      isProcessing = false;\n      if (flushNextFrame) {\n        flushNextFrame = false;\n        step.process(frameData2);\n      }\n    }\n  };\n  return step;\n}\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/batcher.mjs\nvar stepsOrder = [\n  \"read\",\n  // Read\n  \"resolveKeyframes\",\n  // Write/Read/Write/Read\n  \"update\",\n  // Compute\n  \"preRender\",\n  // Compute\n  \"render\",\n  // Write\n  \"postRender\"\n  // Compute\n];\nvar maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n  let runNextFrame = false;\n  let useDefaultElapsed = true;\n  const state2 = {\n    delta: 0,\n    timestamp: 0,\n    isProcessing: false\n  };\n  const flagRunNextFrame = () => runNextFrame = true;\n  const steps2 = stepsOrder.reduce((acc, key) => {\n    acc[key] = createRenderStep(flagRunNextFrame);\n    return acc;\n  }, {});\n  const { read, resolveKeyframes, update, preRender, render, postRender } = steps2;\n  const processBatch = () => {\n    const timestamp = MotionGlobalConfig.useManualTiming ? state2.timestamp : performance.now();\n    runNextFrame = false;\n    state2.delta = useDefaultElapsed ? 1e3 / 60 : Math.max(Math.min(timestamp - state2.timestamp, maxElapsed), 1);\n    state2.timestamp = timestamp;\n    state2.isProcessing = true;\n    read.process(state2);\n    resolveKeyframes.process(state2);\n    update.process(state2);\n    preRender.process(state2);\n    render.process(state2);\n    postRender.process(state2);\n    state2.isProcessing = false;\n    if (runNextFrame && allowKeepAlive) {\n      useDefaultElapsed = false;\n      scheduleNextBatch(processBatch);\n    }\n  };\n  const wake = () => {\n    runNextFrame = true;\n    useDefaultElapsed = true;\n    if (!state2.isProcessing) {\n      scheduleNextBatch(processBatch);\n    }\n  };\n  const schedule = stepsOrder.reduce((acc, key) => {\n    const step = steps2[key];\n    acc[key] = (process2, keepAlive = false, immediate = false) => {\n      if (!runNextFrame)\n        wake();\n      return step.schedule(process2, keepAlive, immediate);\n    };\n    return acc;\n  }, {});\n  const cancel = (process2) => {\n    for (let i = 0; i < stepsOrder.length; i++) {\n      steps2[stepsOrder[i]].cancel(process2);\n    }\n  };\n  return { schedule, cancel, state: state2, steps: steps2 };\n}\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/frame.mjs\nvar { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\n// ../../../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs\nvar calcBezier = (t, a1, a2) => (((1 - 3 * a2 + 3 * a1) * t + (3 * a2 - 6 * a1)) * t + 3 * a1) * t;\nvar subdivisionPrecision = 1e-7;\nvar subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n  let currentX;\n  let currentT;\n  let i = 0;\n  do {\n    currentT = lowerBound + (upperBound - lowerBound) / 2;\n    currentX = calcBezier(currentT, mX1, mX2) - x;\n    if (currentX > 0) {\n      upperBound = currentT;\n    } else {\n      lowerBound = currentT;\n    }\n  } while (Math.abs(currentX) > subdivisionPrecision && ++i < subdivisionMaxIterations);\n  return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n  if (mX1 === mY1 && mX2 === mY2)\n    return noop;\n  const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n  return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs\nvar mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\n// ../../../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs\nvar reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\n// ../../../node_modules/framer-motion/dist/es/easing/back.mjs\nvar backOut = /* @__PURE__ */ cubicBezier(0.33, 1.53, 0.69, 0.99);\nvar backIn = /* @__PURE__ */ reverseEasing(backOut);\nvar backInOut = /* @__PURE__ */ mirrorEasing(backIn);\n\n// ../../../node_modules/framer-motion/dist/es/easing/anticipate.mjs\nvar anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\n// ../../../node_modules/framer-motion/dist/es/easing/circ.mjs\nvar circIn = (p) => 1 - Math.sin(Math.acos(p));\nvar circOut = reverseEasing(circIn);\nvar circInOut = mirrorEasing(circIn);\n\n// ../../../node_modules/framer-motion/dist/es/utils/errors.mjs\nvar warning = noop;\nvar invariant = noop;\nif (false) {\n  warning = (check, message) => {\n    if (!check && typeof console !== \"undefined\") {\n      console.warn(message);\n    }\n  };\n  invariant = (check, message) => {\n    if (!check) {\n      throw new Error(message);\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/clamp.mjs\nvar clamp = (min, max, v) => {\n  if (v > max)\n    return max;\n  if (v < min)\n    return min;\n  return v;\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/numbers/units.mjs\nvar createUnitType = (unit) => ({\n  test: (v) => typeof v === \"string\" && v.endsWith(unit) && v.split(\" \").length === 1,\n  parse: parseFloat,\n  transform: (v) => `${v}${unit}`\n});\nvar degrees = /* @__PURE__ */ createUnitType(\"deg\");\nvar percent = /* @__PURE__ */ createUnitType(\"%\");\nvar px = /* @__PURE__ */ createUnitType(\"px\");\nvar vh = /* @__PURE__ */ createUnitType(\"vh\");\nvar vw = /* @__PURE__ */ createUnitType(\"vw\");\nvar progressPercentage = {\n  ...percent,\n  parse: (v) => percent.parse(v) / 100,\n  transform: (v) => percent.transform(v * 100)\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs\nvar number = {\n  test: (v) => typeof v === \"number\",\n  parse: parseFloat,\n  transform: (v) => v\n};\nvar alpha = {\n  ...number,\n  transform: (v) => clamp(0, 1, v)\n};\nvar scale = {\n  ...number,\n  default: 1\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/utils/sanitize.mjs\nvar sanitize = (v) => Math.round(v * 1e5) / 1e5;\n\n// ../../../node_modules/framer-motion/dist/es/value/types/utils/float-regex.mjs\nvar floatRegex = /-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/gu;\n\n// ../../../node_modules/framer-motion/dist/es/value/types/utils/is-nullish.mjs\nfunction isNullish(v) {\n  return v == null;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/types/utils/single-color-regex.mjs\nvar singleColorRegex = /^(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))$/iu;\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/utils.mjs\nvar isColorString = (type, testProp) => (v) => {\n  return Boolean(typeof v === \"string\" && singleColorRegex.test(v) && v.startsWith(type) || testProp && !isNullish(v) && Object.prototype.hasOwnProperty.call(v, testProp));\n};\nvar splitColor = (aName, bName, cName) => (v) => {\n  if (typeof v !== \"string\")\n    return v;\n  const [a, b, c, alpha2] = v.match(floatRegex);\n  return {\n    [aName]: parseFloat(a),\n    [bName]: parseFloat(b),\n    [cName]: parseFloat(c),\n    alpha: alpha2 !== void 0 ? parseFloat(alpha2) : 1\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/rgba.mjs\nvar clampRgbUnit = (v) => clamp(0, 255, v);\nvar rgbUnit = {\n  ...number,\n  transform: (v) => Math.round(clampRgbUnit(v))\n};\nvar rgba = {\n  test: /* @__PURE__ */ isColorString(\"rgb\", \"red\"),\n  parse: /* @__PURE__ */ splitColor(\"red\", \"green\", \"blue\"),\n  transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" + rgbUnit.transform(red) + \", \" + rgbUnit.transform(green) + \", \" + rgbUnit.transform(blue) + \", \" + sanitize(alpha.transform(alpha$1)) + \")\"\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/hex.mjs\nfunction parseHex(v) {\n  let r = \"\";\n  let g = \"\";\n  let b = \"\";\n  let a = \"\";\n  if (v.length > 5) {\n    r = v.substring(1, 3);\n    g = v.substring(3, 5);\n    b = v.substring(5, 7);\n    a = v.substring(7, 9);\n  } else {\n    r = v.substring(1, 2);\n    g = v.substring(2, 3);\n    b = v.substring(3, 4);\n    a = v.substring(4, 5);\n    r += r;\n    g += g;\n    b += b;\n    a += a;\n  }\n  return {\n    red: parseInt(r, 16),\n    green: parseInt(g, 16),\n    blue: parseInt(b, 16),\n    alpha: a ? parseInt(a, 16) / 255 : 1\n  };\n}\nvar hex = {\n  test: /* @__PURE__ */ isColorString(\"#\"),\n  parse: parseHex,\n  transform: rgba.transform\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/hsla.mjs\nvar hsla = {\n  test: /* @__PURE__ */ isColorString(\"hsl\", \"hue\"),\n  parse: /* @__PURE__ */ splitColor(\"hue\", \"saturation\", \"lightness\"),\n  transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n    return \"hsla(\" + Math.round(hue) + \", \" + percent.transform(sanitize(saturation)) + \", \" + percent.transform(sanitize(lightness)) + \", \" + sanitize(alpha.transform(alpha$1)) + \")\";\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/index.mjs\nvar color = {\n  test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n  parse: (v) => {\n    if (rgba.test(v)) {\n      return rgba.parse(v);\n    } else if (hsla.test(v)) {\n      return hsla.parse(v);\n    } else {\n      return hex.parse(v);\n    }\n  },\n  transform: (v) => {\n    return typeof v === \"string\" ? v : v.hasOwnProperty(\"red\") ? rgba.transform(v) : hsla.transform(v);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/utils/color-regex.mjs\nvar colorRegex = /(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))/giu;\n\n// ../../../node_modules/framer-motion/dist/es/value/types/complex/index.mjs\nfunction test(v) {\n  var _a, _b;\n  return isNaN(v) && typeof v === \"string\" && (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) + (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) > 0;\n}\nvar NUMBER_TOKEN = \"number\";\nvar COLOR_TOKEN = \"color\";\nvar VAR_TOKEN = \"var\";\nvar VAR_FUNCTION_TOKEN = \"var(\";\nvar SPLIT_TOKEN = \"${}\";\nvar complexRegex = /var\\s*\\(\\s*--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)|#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\)|-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/giu;\nfunction analyseComplexValue(value) {\n  const originalValue = value.toString();\n  const values = [];\n  const indexes = {\n    color: [],\n    number: [],\n    var: []\n  };\n  const types = [];\n  let i = 0;\n  const tokenised = originalValue.replace(complexRegex, (parsedValue) => {\n    if (color.test(parsedValue)) {\n      indexes.color.push(i);\n      types.push(COLOR_TOKEN);\n      values.push(color.parse(parsedValue));\n    } else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {\n      indexes.var.push(i);\n      types.push(VAR_TOKEN);\n      values.push(parsedValue);\n    } else {\n      indexes.number.push(i);\n      types.push(NUMBER_TOKEN);\n      values.push(parseFloat(parsedValue));\n    }\n    ++i;\n    return SPLIT_TOKEN;\n  });\n  const split = tokenised.split(SPLIT_TOKEN);\n  return { values, split, indexes, types };\n}\nfunction parseComplexValue(v) {\n  return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n  const { split, types } = analyseComplexValue(source);\n  const numSections = split.length;\n  return (v) => {\n    let output = \"\";\n    for (let i = 0; i < numSections; i++) {\n      output += split[i];\n      if (v[i] !== void 0) {\n        const type = types[i];\n        if (type === NUMBER_TOKEN) {\n          output += sanitize(v[i]);\n        } else if (type === COLOR_TOKEN) {\n          output += color.transform(v[i]);\n        } else {\n          output += v[i];\n        }\n      }\n    }\n    return output;\n  };\n}\nvar convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n  const parsed = parseComplexValue(v);\n  const transformer = createTransformer(v);\n  return transformer(parsed.map(convertNumbersToZero));\n}\nvar complex = {\n  test,\n  parse: parseComplexValue,\n  createTransformer,\n  getAnimatableNone\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/time-conversion.mjs\nvar secondsToMilliseconds = (seconds) => seconds * 1e3;\nvar millisecondsToSeconds = (milliseconds) => milliseconds / 1e3;\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs\nvar safeMin = 1e-3;\nvar minDuration = 0.01;\nvar maxDuration = 10;\nvar minDamping = 0.05;\nvar maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1 }) {\n  let envelope;\n  let derivative;\n  warning(duration <= secondsToMilliseconds(maxDuration), \"Spring duration must be 10 seconds or less\");\n  let dampingRatio = 1 - bounce;\n  dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n  duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));\n  if (dampingRatio < 1) {\n    envelope = (undampedFreq2) => {\n      const exponentialDecay = undampedFreq2 * dampingRatio;\n      const delta = exponentialDecay * duration;\n      const a = exponentialDecay - velocity;\n      const b = calcAngularFreq(undampedFreq2, dampingRatio);\n      const c = Math.exp(-delta);\n      return safeMin - a / b * c;\n    };\n    derivative = (undampedFreq2) => {\n      const exponentialDecay = undampedFreq2 * dampingRatio;\n      const delta = exponentialDecay * duration;\n      const d = delta * velocity + velocity;\n      const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq2, 2) * duration;\n      const f = Math.exp(-delta);\n      const g = calcAngularFreq(Math.pow(undampedFreq2, 2), dampingRatio);\n      const factor = -envelope(undampedFreq2) + safeMin > 0 ? -1 : 1;\n      return factor * ((d - e) * f) / g;\n    };\n  } else {\n    envelope = (undampedFreq2) => {\n      const a = Math.exp(-undampedFreq2 * duration);\n      const b = (undampedFreq2 - velocity) * duration + 1;\n      return -safeMin + a * b;\n    };\n    derivative = (undampedFreq2) => {\n      const a = Math.exp(-undampedFreq2 * duration);\n      const b = (velocity - undampedFreq2) * (duration * duration);\n      return a * b;\n    };\n  }\n  const initialGuess = 5 / duration;\n  const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n  duration = secondsToMilliseconds(duration);\n  if (isNaN(undampedFreq)) {\n    return {\n      stiffness: 100,\n      damping: 10,\n      duration\n    };\n  } else {\n    const stiffness = Math.pow(undampedFreq, 2) * mass;\n    return {\n      stiffness,\n      damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n      duration\n    };\n  }\n}\nvar rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n  let result = initialGuess;\n  for (let i = 1; i < rootIterations; i++) {\n    result = result - envelope(result) / derivative(result);\n  }\n  return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n  return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs\nfunction velocityPerSecond(velocity, frameDuration) {\n  return frameDuration ? velocity * (1e3 / frameDuration) : 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs\nvar velocitySampleDuration = 5;\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n  const prevT = Math.max(t - velocitySampleDuration, 0);\n  return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs\nvar durationKeys = [\"duration\", \"bounce\"];\nvar physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys2) {\n  return keys2.some((key) => options[key] !== void 0);\n}\nfunction getSpringOptions(options) {\n  let springOptions = {\n    velocity: 0,\n    stiffness: 100,\n    damping: 10,\n    mass: 1,\n    isResolvedFromDuration: false,\n    ...options\n  };\n  if (!isSpringType(options, physicsKeys) && isSpringType(options, durationKeys)) {\n    const derived = findSpring(options);\n    springOptions = {\n      ...springOptions,\n      ...derived,\n      mass: 1\n    };\n    springOptions.isResolvedFromDuration = true;\n  }\n  return springOptions;\n}\nfunction spring({ keyframes: keyframes2, restDelta, restSpeed, ...options }) {\n  const origin = keyframes2[0];\n  const target = keyframes2[keyframes2.length - 1];\n  const state2 = { done: false, value: origin };\n  const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration } = getSpringOptions({\n    ...options,\n    velocity: -millisecondsToSeconds(options.velocity || 0)\n  });\n  const initialVelocity = velocity || 0;\n  const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n  const initialDelta = target - origin;\n  const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n  const isGranularScale = Math.abs(initialDelta) < 5;\n  restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n  restDelta || (restDelta = isGranularScale ? 5e-3 : 0.5);\n  let resolveSpring;\n  if (dampingRatio < 1) {\n    const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n    resolveSpring = (t) => {\n      const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n      return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t));\n    };\n  } else if (dampingRatio === 1) {\n    resolveSpring = (t) => target - Math.exp(-undampedAngularFreq * t) * (initialDelta + (initialVelocity + undampedAngularFreq * initialDelta) * t);\n  } else {\n    const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n    resolveSpring = (t) => {\n      const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n      const freqForT = Math.min(dampedAngularFreq * t, 300);\n      return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) * Math.sinh(freqForT) + dampedAngularFreq * initialDelta * Math.cosh(freqForT)) / dampedAngularFreq;\n    };\n  }\n  return {\n    calculatedDuration: isResolvedFromDuration ? duration || null : null,\n    next: (t) => {\n      const current = resolveSpring(t);\n      if (!isResolvedFromDuration) {\n        let currentVelocity = 0;\n        if (dampingRatio < 1) {\n          currentVelocity = t === 0 ? secondsToMilliseconds(initialVelocity) : calcGeneratorVelocity(resolveSpring, t, current);\n        }\n        const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n        const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n        state2.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;\n      } else {\n        state2.done = t >= duration;\n      }\n      state2.value = state2.done ? target : current;\n      return state2;\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/inertia.mjs\nfunction inertia({ keyframes: keyframes2, velocity = 0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed }) {\n  const origin = keyframes2[0];\n  const state2 = {\n    done: false,\n    value: origin\n  };\n  const isOutOfBounds = (v) => min !== void 0 && v < min || max !== void 0 && v > max;\n  const nearestBoundary = (v) => {\n    if (min === void 0)\n      return max;\n    if (max === void 0)\n      return min;\n    return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n  };\n  let amplitude = power * velocity;\n  const ideal = origin + amplitude;\n  const target = modifyTarget === void 0 ? ideal : modifyTarget(ideal);\n  if (target !== ideal)\n    amplitude = target - origin;\n  const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n  const calcLatest = (t) => target + calcDelta(t);\n  const applyFriction = (t) => {\n    const delta = calcDelta(t);\n    const latest = calcLatest(t);\n    state2.done = Math.abs(delta) <= restDelta;\n    state2.value = state2.done ? target : latest;\n  };\n  let timeReachedBoundary;\n  let spring$1;\n  const checkCatchBoundary = (t) => {\n    if (!isOutOfBounds(state2.value))\n      return;\n    timeReachedBoundary = t;\n    spring$1 = spring({\n      keyframes: [state2.value, nearestBoundary(state2.value)],\n      velocity: calcGeneratorVelocity(calcLatest, t, state2.value),\n      // TODO: This should be passing * 1000\n      damping: bounceDamping,\n      stiffness: bounceStiffness,\n      restDelta,\n      restSpeed\n    });\n  };\n  checkCatchBoundary(0);\n  return {\n    calculatedDuration: null,\n    next: (t) => {\n      let hasUpdatedFrame = false;\n      if (!spring$1 && timeReachedBoundary === void 0) {\n        hasUpdatedFrame = true;\n        applyFriction(t);\n        checkCatchBoundary(t);\n      }\n      if (timeReachedBoundary !== void 0 && t >= timeReachedBoundary) {\n        return spring$1.next(t - timeReachedBoundary);\n      } else {\n        !hasUpdatedFrame && applyFriction(t);\n        return state2;\n      }\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/ease.mjs\nvar easeIn = /* @__PURE__ */ cubicBezier(0.42, 0, 1, 1);\nvar easeOut = /* @__PURE__ */ cubicBezier(0, 0, 0.58, 1);\nvar easeInOut = /* @__PURE__ */ cubicBezier(0.42, 0, 0.58, 1);\n\n// ../../../node_modules/framer-motion/dist/es/utils/pipe.mjs\nvar combineFunctions = (a, b) => (v) => b(a(v));\nvar pipe = (...transformers) => transformers.reduce(combineFunctions);\n\n// ../../../node_modules/framer-motion/dist/es/utils/progress.mjs\nvar progress = (from, to, value) => {\n  const toFromDifference = to - from;\n  return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix/number.mjs\nvar mixNumber = (from, to, progress2) => {\n  return from + (to - from) * progress2;\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs\nfunction hueToRgb(p, q, t) {\n  if (t < 0)\n    t += 1;\n  if (t > 1)\n    t -= 1;\n  if (t < 1 / 6)\n    return p + (q - p) * 6 * t;\n  if (t < 1 / 2)\n    return q;\n  if (t < 2 / 3)\n    return p + (q - p) * (2 / 3 - t) * 6;\n  return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha: alpha2 }) {\n  hue /= 360;\n  saturation /= 100;\n  lightness /= 100;\n  let red = 0;\n  let green = 0;\n  let blue = 0;\n  if (!saturation) {\n    red = green = blue = lightness;\n  } else {\n    const q = lightness < 0.5 ? lightness * (1 + saturation) : lightness + saturation - lightness * saturation;\n    const p = 2 * lightness - q;\n    red = hueToRgb(p, q, hue + 1 / 3);\n    green = hueToRgb(p, q, hue);\n    blue = hueToRgb(p, q, hue - 1 / 3);\n  }\n  return {\n    red: Math.round(red * 255),\n    green: Math.round(green * 255),\n    blue: Math.round(blue * 255),\n    alpha: alpha2\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix/immediate.mjs\nfunction mixImmediate(a, b) {\n  return (p) => p > 0 ? b : a;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix/color.mjs\nvar mixLinearColor = (from, to, v) => {\n  const fromExpo = from * from;\n  const expo = v * (to * to - fromExpo) + fromExpo;\n  return expo < 0 ? 0 : Math.sqrt(expo);\n};\nvar colorTypes = [hex, rgba, hsla];\nvar getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color2) {\n  const type = getColorType(color2);\n  warning(Boolean(type), `'${color2}' is not an animatable color. Use the equivalent color code instead.`);\n  if (!Boolean(type))\n    return false;\n  let model = type.parse(color2);\n  if (type === hsla) {\n    model = hslaToRgba(model);\n  }\n  return model;\n}\nvar mixColor = (from, to) => {\n  const fromRGBA = asRGBA(from);\n  const toRGBA = asRGBA(to);\n  if (!fromRGBA || !toRGBA) {\n    return mixImmediate(from, to);\n  }\n  const blended = { ...fromRGBA };\n  return (v) => {\n    blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n    blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n    blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n    blended.alpha = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);\n    return rgba.transform(blended);\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs\nvar checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nvar isCSSVariableName = /* @__PURE__ */ checkStringStartsWith(\"--\");\nvar startsAsVariableToken = /* @__PURE__ */ checkStringStartsWith(\"var(--\");\nvar isCSSVariableToken = (value) => {\n  const startsWithToken = startsAsVariableToken(value);\n  if (!startsWithToken)\n    return false;\n  return singleCssVariableRegex.test(value.split(\"/*\")[0].trim());\n};\nvar singleCssVariableRegex = /var\\(--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)$/iu;\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix/visibility.mjs\nvar invisibleValues = /* @__PURE__ */ new Set([\"none\", \"hidden\"]);\nfunction mixVisibility(origin, target) {\n  if (invisibleValues.has(origin)) {\n    return (p) => p <= 0 ? origin : target;\n  } else {\n    return (p) => p >= 1 ? target : origin;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix/complex.mjs\nfunction mixNumber2(a, b) {\n  return (p) => mixNumber(a, b, p);\n}\nfunction getMixer(a) {\n  if (typeof a === \"number\") {\n    return mixNumber2;\n  } else if (typeof a === \"string\") {\n    return isCSSVariableToken(a) ? mixImmediate : color.test(a) ? mixColor : mixComplex;\n  } else if (Array.isArray(a)) {\n    return mixArray;\n  } else if (typeof a === \"object\") {\n    return color.test(a) ? mixColor : mixObject;\n  }\n  return mixImmediate;\n}\nfunction mixArray(a, b) {\n  const output = [...a];\n  const numValues = output.length;\n  const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n  return (p) => {\n    for (let i = 0; i < numValues; i++) {\n      output[i] = blendValue[i](p);\n    }\n    return output;\n  };\n}\nfunction mixObject(a, b) {\n  const output = { ...a, ...b };\n  const blendValue = {};\n  for (const key in output) {\n    if (a[key] !== void 0 && b[key] !== void 0) {\n      blendValue[key] = getMixer(a[key])(a[key], b[key]);\n    }\n  }\n  return (v) => {\n    for (const key in blendValue) {\n      output[key] = blendValue[key](v);\n    }\n    return output;\n  };\n}\nfunction matchOrder(origin, target) {\n  var _a;\n  const orderedOrigin = [];\n  const pointers = { color: 0, var: 0, number: 0 };\n  for (let i = 0; i < target.values.length; i++) {\n    const type = target.types[i];\n    const originIndex = origin.indexes[type][pointers[type]];\n    const originValue = (_a = origin.values[originIndex]) !== null && _a !== void 0 ? _a : 0;\n    orderedOrigin[i] = originValue;\n    pointers[type]++;\n  }\n  return orderedOrigin;\n}\nvar mixComplex = (origin, target) => {\n  const template = complex.createTransformer(target);\n  const originStats = analyseComplexValue(origin);\n  const targetStats = analyseComplexValue(target);\n  const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length && originStats.indexes.color.length === targetStats.indexes.color.length && originStats.indexes.number.length >= targetStats.indexes.number.length;\n  if (canInterpolate) {\n    if (invisibleValues.has(origin) && !targetStats.values.length || invisibleValues.has(target) && !originStats.values.length) {\n      return mixVisibility(origin, target);\n    }\n    return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);\n  } else {\n    warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n    return mixImmediate(origin, target);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix/index.mjs\nfunction mix(from, to, p) {\n  if (typeof from === \"number\" && typeof to === \"number\" && typeof p === \"number\") {\n    return mixNumber(from, to, p);\n  }\n  const mixer = getMixer(from);\n  return mixer(from, to);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/interpolate.mjs\nfunction createMixers(output, ease2, customMixer) {\n  const mixers = [];\n  const mixerFactory = customMixer || mix;\n  const numMixers = output.length - 1;\n  for (let i = 0; i < numMixers; i++) {\n    let mixer = mixerFactory(output[i], output[i + 1]);\n    if (ease2) {\n      const easingFunction = Array.isArray(ease2) ? ease2[i] || noop : ease2;\n      mixer = pipe(easingFunction, mixer);\n    }\n    mixers.push(mixer);\n  }\n  return mixers;\n}\nfunction interpolate(input, output, { clamp: isClamp = true, ease: ease2, mixer } = {}) {\n  const inputLength = input.length;\n  invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n  if (inputLength === 1)\n    return () => output[0];\n  if (inputLength === 2 && input[0] === input[1])\n    return () => output[1];\n  if (input[0] > input[inputLength - 1]) {\n    input = [...input].reverse();\n    output = [...output].reverse();\n  }\n  const mixers = createMixers(output, ease2, mixer);\n  const numMixers = mixers.length;\n  const interpolator = (v) => {\n    let i = 0;\n    if (numMixers > 1) {\n      for (; i < input.length - 2; i++) {\n        if (v < input[i + 1])\n          break;\n      }\n    }\n    const progressInRange = progress(input[i], input[i + 1], v);\n    return mixers[i](progressInRange);\n  };\n  return isClamp ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v)) : interpolator;\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs\nvar isEasingArray = (ease2) => {\n  return Array.isArray(ease2) && typeof ease2[0] !== \"number\";\n};\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs\nvar isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/map.mjs\nvar easingLookup = {\n  linear: noop,\n  easeIn,\n  easeInOut,\n  easeOut,\n  circIn,\n  circInOut,\n  circOut,\n  backIn,\n  backInOut,\n  backOut,\n  anticipate\n};\nvar easingDefinitionToFunction = (definition) => {\n  if (isBezierDefinition(definition)) {\n    invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n    const [x1, y1, x2, y2] = definition;\n    return cubicBezier(x1, y1, x2, y2);\n  } else if (typeof definition === \"string\") {\n    invariant(easingLookup[definition] !== void 0, `Invalid easing type '${definition}'`);\n    return easingLookup[definition];\n  }\n  return definition;\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/offsets/fill.mjs\nfunction fillOffset(offset, remaining) {\n  const min = offset[offset.length - 1];\n  for (let i = 1; i <= remaining; i++) {\n    const offsetProgress = progress(0, remaining, i);\n    offset.push(mixNumber(min, 1, offsetProgress));\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/offsets/default.mjs\nfunction defaultOffset(arr) {\n  const offset = [0];\n  fillOffset(offset, arr.length - 1);\n  return offset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/offsets/time.mjs\nfunction convertOffsetToTimes(offset, duration) {\n  return offset.map((o) => o * duration);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs\nfunction defaultEasing(values, easing) {\n  return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease: ease2 = \"easeInOut\" }) {\n  const easingFunctions = isEasingArray(ease2) ? ease2.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease2);\n  const state2 = {\n    done: false,\n    value: keyframeValues[0]\n  };\n  const absoluteTimes = convertOffsetToTimes(\n    // Only use the provided offsets if they're the correct length\n    // TODO Maybe we should warn here if there's a length mismatch\n    times && times.length === keyframeValues.length ? times : defaultOffset(keyframeValues),\n    duration\n  );\n  const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n    ease: Array.isArray(easingFunctions) ? easingFunctions : defaultEasing(keyframeValues, easingFunctions)\n  });\n  return {\n    calculatedDuration: duration,\n    next: (t) => {\n      state2.value = mapTimeToKeyframe(t);\n      state2.done = t >= duration;\n      return state2;\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs\nvar transformPropOrder = [\n  \"transformPerspective\",\n  \"x\",\n  \"y\",\n  \"z\",\n  \"translateX\",\n  \"translateY\",\n  \"translateZ\",\n  \"scale\",\n  \"scaleX\",\n  \"scaleY\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"skew\",\n  \"skewX\",\n  \"skewY\"\n];\nvar transformProps = new Set(transformPropOrder);\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs\nvar positionalKeys = /* @__PURE__ */ new Set([\n  \"width\",\n  \"height\",\n  \"top\",\n  \"left\",\n  \"right\",\n  \"bottom\",\n  \"x\",\n  \"y\",\n  \"translateX\",\n  \"translateY\"\n]);\nvar isNumOrPxType = (v) => v === number || v === px;\nvar getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nvar getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform: transform2 }) => {\n  if (transform2 === \"none\" || !transform2)\n    return 0;\n  const matrix3d = transform2.match(/^matrix3d\\((.+)\\)$/u);\n  if (matrix3d) {\n    return getPosFromMatrix(matrix3d[1], pos3);\n  } else {\n    const matrix = transform2.match(/^matrix\\((.+)\\)$/u);\n    if (matrix) {\n      return getPosFromMatrix(matrix[1], pos2);\n    } else {\n      return 0;\n    }\n  }\n};\nvar transformKeys = /* @__PURE__ */ new Set([\"x\", \"y\", \"z\"]);\nvar nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n  const removedTransforms = [];\n  nonTranslationalTransformKeys.forEach((key) => {\n    const value = visualElement.getValue(key);\n    if (value !== void 0) {\n      removedTransforms.push([key, value.get()]);\n      value.set(key.startsWith(\"scale\") ? 1 : 0);\n    }\n  });\n  return removedTransforms;\n}\nvar positionalValues = {\n  // Dimensions\n  width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n  height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n  top: (_bbox, { top }) => parseFloat(top),\n  left: (_bbox, { left }) => parseFloat(left),\n  bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n  right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n  // Transform\n  x: getTranslateFromMatrix(4, 13),\n  y: getTranslateFromMatrix(5, 14)\n};\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs\nvar toResolve = /* @__PURE__ */ new Set();\nvar isScheduled = false;\nvar anyNeedsMeasurement = false;\nfunction measureAllKeyframes() {\n  if (anyNeedsMeasurement) {\n    const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n    const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n    const transformsToRestore = /* @__PURE__ */ new Map();\n    elementsToMeasure.forEach((element) => {\n      const removedTransforms = removeNonTranslationalTransform(element);\n      if (!removedTransforms.length)\n        return;\n      transformsToRestore.set(element, removedTransforms);\n      element.render();\n    });\n    resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n    elementsToMeasure.forEach((element) => {\n      element.render();\n      const restore = transformsToRestore.get(element);\n      if (restore) {\n        restore.forEach(([key, value]) => {\n          var _a;\n          (_a = element.getValue(key)) === null || _a === void 0 ? void 0 : _a.set(value);\n        });\n      }\n    });\n    resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n    resolversToMeasure.forEach((resolver) => {\n      if (resolver.suspendedScrollY !== void 0) {\n        window.scrollTo(0, resolver.suspendedScrollY);\n      }\n    });\n  }\n  anyNeedsMeasurement = false;\n  isScheduled = false;\n  toResolve.forEach((resolver) => resolver.complete());\n  toResolve.clear();\n}\nfunction readAllKeyframes() {\n  toResolve.forEach((resolver) => {\n    resolver.readKeyframes();\n    if (resolver.needsMeasurement) {\n      anyNeedsMeasurement = true;\n    }\n  });\n}\nfunction flushKeyframeResolvers() {\n  readAllKeyframes();\n  measureAllKeyframes();\n}\nvar KeyframeResolver = class {\n  constructor(unresolvedKeyframes, onComplete, name, motionValue2, element, isAsync = false) {\n    this.isComplete = false;\n    this.isAsync = false;\n    this.needsMeasurement = false;\n    this.isScheduled = false;\n    this.unresolvedKeyframes = [...unresolvedKeyframes];\n    this.onComplete = onComplete;\n    this.name = name;\n    this.motionValue = motionValue2;\n    this.element = element;\n    this.isAsync = isAsync;\n  }\n  scheduleResolve() {\n    this.isScheduled = true;\n    if (this.isAsync) {\n      toResolve.add(this);\n      if (!isScheduled) {\n        isScheduled = true;\n        frame.read(readAllKeyframes);\n        frame.resolveKeyframes(measureAllKeyframes);\n      }\n    } else {\n      this.readKeyframes();\n      this.complete();\n    }\n  }\n  readKeyframes() {\n    const { unresolvedKeyframes, name, element, motionValue: motionValue2 } = this;\n    for (let i = 0; i < unresolvedKeyframes.length; i++) {\n      if (unresolvedKeyframes[i] === null) {\n        if (i === 0) {\n          const currentValue = motionValue2 === null || motionValue2 === void 0 ? void 0 : motionValue2.get();\n          const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n          if (currentValue !== void 0) {\n            unresolvedKeyframes[0] = currentValue;\n          } else if (element && name) {\n            const valueAsRead = element.readValue(name, finalKeyframe);\n            if (valueAsRead !== void 0 && valueAsRead !== null) {\n              unresolvedKeyframes[0] = valueAsRead;\n            }\n          }\n          if (unresolvedKeyframes[0] === void 0) {\n            unresolvedKeyframes[0] = finalKeyframe;\n          }\n          if (motionValue2 && currentValue === void 0) {\n            motionValue2.set(unresolvedKeyframes[0]);\n          }\n        } else {\n          unresolvedKeyframes[i] = unresolvedKeyframes[i - 1];\n        }\n      }\n    }\n  }\n  setFinalKeyframe() {\n  }\n  measureInitialState() {\n  }\n  renderEndStyles() {\n  }\n  measureEndState() {\n  }\n  complete() {\n    this.isComplete = true;\n    this.onComplete(this.unresolvedKeyframes, this.finalKeyframe);\n    toResolve.delete(this);\n  }\n  cancel() {\n    if (!this.isComplete) {\n      this.isScheduled = false;\n      toResolve.delete(this);\n    }\n  }\n  resume() {\n    if (!this.isComplete)\n      this.scheduleResolve();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/sync-time.mjs\nvar now;\nfunction clearTime() {\n  now = void 0;\n}\nvar time = {\n  now: () => {\n    if (now === void 0) {\n      time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming ? frameData.timestamp : performance.now());\n    }\n    return now;\n  },\n  set: (newTime) => {\n    now = newTime;\n    queueMicrotask(clearTime);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs\nvar instantAnimationState = {\n  current: false\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/utils/is-generator.mjs\nfunction isGenerator(type) {\n  return typeof type === \"function\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs\nvar isAnimatable = (value, name) => {\n  if (name === \"zIndex\")\n    return false;\n  if (typeof value === \"number\" || Array.isArray(value))\n    return true;\n  if (typeof value === \"string\" && // It's animatable if we have a string\n  (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n  !value.startsWith(\"url(\")) {\n    return true;\n  }\n  return false;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/utils/can-animate.mjs\nfunction hasKeyframesChanged(keyframes2) {\n  const current = keyframes2[0];\n  if (keyframes2.length === 1)\n    return true;\n  for (let i = 0; i < keyframes2.length; i++) {\n    if (keyframes2[i] !== current)\n      return true;\n  }\n}\nfunction canAnimate(keyframes2, name, type, velocity) {\n  const originKeyframe = keyframes2[0];\n  if (originKeyframe === null)\n    return false;\n  if (name === \"display\" || name === \"visibility\")\n    return true;\n  const targetKeyframe = keyframes2[keyframes2.length - 1];\n  const isOriginAnimatable = isAnimatable(originKeyframe, name);\n  const isTargetAnimatable = isAnimatable(targetKeyframe, name);\n  warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} from \"${originKeyframe}\" to \"${targetKeyframe}\". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \\`style\\` property.`);\n  if (!isOriginAnimatable || !isTargetAnimatable) {\n    return false;\n  }\n  return hasKeyframesChanged(keyframes2) || (type === \"spring\" || isGenerator(type)) && velocity;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs\nvar isNotNull = (value) => value !== null;\nfunction getFinalKeyframe(keyframes2, { repeat, repeatType = \"loop\" }, finalKeyframe) {\n  const resolvedKeyframes = keyframes2.filter(isNotNull);\n  const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1 ? 0 : resolvedKeyframes.length - 1;\n  return !index || finalKeyframe === void 0 ? resolvedKeyframes[index] : finalKeyframe;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs\nvar MAX_RESOLVE_DELAY = 40;\nvar BaseAnimation = class {\n  constructor({ autoplay = true, delay: delay2 = 0, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", ...options }) {\n    this.isStopped = false;\n    this.hasAttemptedResolve = false;\n    this.createdAt = time.now();\n    this.options = {\n      autoplay,\n      delay: delay2,\n      type,\n      repeat,\n      repeatDelay,\n      repeatType,\n      ...options\n    };\n    this.updateFinishedPromise();\n  }\n  /**\n   * This method uses the createdAt and resolvedAt to calculate the\n   * animation startTime. *Ideally*, we would use the createdAt time as t=0\n   * as the following frame would then be the first frame of the animation in\n   * progress, which would feel snappier.\n   *\n   * However, if there's a delay (main thread work) between the creation of\n   * the animation and the first commited frame, we prefer to use resolvedAt\n   * to avoid a sudden jump into the animation.\n   */\n  calcStartTime() {\n    if (!this.resolvedAt)\n      return this.createdAt;\n    return this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY ? this.resolvedAt : this.createdAt;\n  }\n  /**\n   * A getter for resolved data. If keyframes are not yet resolved, accessing\n   * this.resolved will synchronously flush all pending keyframe resolvers.\n   * This is a deoptimisation, but at its worst still batches read/writes.\n   */\n  get resolved() {\n    if (!this._resolved && !this.hasAttemptedResolve) {\n      flushKeyframeResolvers();\n    }\n    return this._resolved;\n  }\n  /**\n   * A method to be called when the keyframes resolver completes. This method\n   * will check if its possible to run the animation and, if not, skip it.\n   * Otherwise, it will call initPlayback on the implementing class.\n   */\n  onKeyframesResolved(keyframes2, finalKeyframe) {\n    this.resolvedAt = time.now();\n    this.hasAttemptedResolve = true;\n    const { name, type, velocity, delay: delay2, onComplete, onUpdate, isGenerator: isGenerator2 } = this.options;\n    if (!isGenerator2 && !canAnimate(keyframes2, name, type, velocity)) {\n      if (instantAnimationState.current || !delay2) {\n        onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(getFinalKeyframe(keyframes2, this.options, finalKeyframe));\n        onComplete === null || onComplete === void 0 ? void 0 : onComplete();\n        this.resolveFinishedPromise();\n        return;\n      } else {\n        this.options.duration = 0;\n      }\n    }\n    const resolvedAnimation = this.initPlayback(keyframes2, finalKeyframe);\n    if (resolvedAnimation === false)\n      return;\n    this._resolved = {\n      keyframes: keyframes2,\n      finalKeyframe,\n      ...resolvedAnimation\n    };\n    this.onPostResolved();\n  }\n  onPostResolved() {\n  }\n  /**\n   * Allows the returned animation to be awaited or promise-chained. Currently\n   * resolves when the animation finishes at all but in a future update could/should\n   * reject if its cancels.\n   */\n  then(resolve, reject) {\n    return this.currentFinishedPromise.then(resolve, reject);\n  }\n  updateFinishedPromise() {\n    this.currentFinishedPromise = new Promise((resolve) => {\n      this.resolveFinishedPromise = resolve;\n    });\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs\nvar maxGeneratorDuration = 2e4;\nfunction calcGeneratorDuration(generator) {\n  let duration = 0;\n  const timeStep = 50;\n  let state2 = generator.next(duration);\n  while (!state2.done && duration < maxGeneratorDuration) {\n    duration += timeStep;\n    state2 = generator.next(duration);\n  }\n  return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs\nvar frameloopDriver = (update) => {\n  const passTimestamp = ({ timestamp }) => update(timestamp);\n  return {\n    start: () => frame.update(passTimestamp, true),\n    stop: () => cancelFrame(passTimestamp),\n    /**\n     * If we're processing this frame we can use the\n     * framelocked timestamp to keep things in sync.\n     */\n    now: () => frameData.isProcessing ? frameData.timestamp : time.now()\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs\nvar generators = {\n  decay: inertia,\n  inertia,\n  tween: keyframes,\n  keyframes,\n  spring\n};\nvar percentToProgress = (percent2) => percent2 / 100;\nvar MainThreadAnimation = class extends BaseAnimation {\n  constructor(options) {\n    super(options);\n    this.holdTime = null;\n    this.cancelTime = null;\n    this.currentTime = 0;\n    this.playbackSpeed = 1;\n    this.pendingPlayState = \"running\";\n    this.startTime = null;\n    this.state = \"idle\";\n    this.stop = () => {\n      this.resolver.cancel();\n      this.isStopped = true;\n      if (this.state === \"idle\")\n        return;\n      this.teardown();\n      const { onStop } = this.options;\n      onStop && onStop();\n    };\n    const { name, motionValue: motionValue2, element, keyframes: keyframes2 } = this.options;\n    const KeyframeResolver$1 = (element === null || element === void 0 ? void 0 : element.KeyframeResolver) || KeyframeResolver;\n    const onResolved = (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe);\n    this.resolver = new KeyframeResolver$1(keyframes2, onResolved, name, motionValue2, element);\n    this.resolver.scheduleResolve();\n  }\n  initPlayback(keyframes$1) {\n    const { type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType, velocity = 0 } = this.options;\n    const generatorFactory = isGenerator(type) ? type : generators[type] || keyframes;\n    let mapPercentToKeyframes;\n    let mirroredGenerator;\n    if (generatorFactory !== keyframes && typeof keyframes$1[0] !== \"number\") {\n      if (false) {\n        invariant(keyframes$1.length === 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`);\n      }\n      mapPercentToKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));\n      keyframes$1 = [0, 100];\n    }\n    const generator = generatorFactory({ ...this.options, keyframes: keyframes$1 });\n    if (repeatType === \"mirror\") {\n      mirroredGenerator = generatorFactory({\n        ...this.options,\n        keyframes: [...keyframes$1].reverse(),\n        velocity: -velocity\n      });\n    }\n    if (generator.calculatedDuration === null) {\n      generator.calculatedDuration = calcGeneratorDuration(generator);\n    }\n    const { calculatedDuration } = generator;\n    const resolvedDuration = calculatedDuration + repeatDelay;\n    const totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;\n    return {\n      generator,\n      mirroredGenerator,\n      mapPercentToKeyframes,\n      calculatedDuration,\n      resolvedDuration,\n      totalDuration\n    };\n  }\n  onPostResolved() {\n    const { autoplay = true } = this.options;\n    this.play();\n    if (this.pendingPlayState === \"paused\" || !autoplay) {\n      this.pause();\n    } else {\n      this.state = this.pendingPlayState;\n    }\n  }\n  tick(timestamp, sample = false) {\n    const { resolved } = this;\n    if (!resolved) {\n      const { keyframes: keyframes3 } = this.options;\n      return { done: true, value: keyframes3[keyframes3.length - 1] };\n    }\n    const { finalKeyframe, generator, mirroredGenerator, mapPercentToKeyframes, keyframes: keyframes2, calculatedDuration, totalDuration, resolvedDuration } = resolved;\n    if (this.startTime === null)\n      return generator.next(0);\n    const { delay: delay2, repeat, repeatType, repeatDelay, onUpdate } = this.options;\n    if (this.speed > 0) {\n      this.startTime = Math.min(this.startTime, timestamp);\n    } else if (this.speed < 0) {\n      this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);\n    }\n    if (sample) {\n      this.currentTime = timestamp;\n    } else if (this.holdTime !== null) {\n      this.currentTime = this.holdTime;\n    } else {\n      this.currentTime = Math.round(timestamp - this.startTime) * this.speed;\n    }\n    const timeWithoutDelay = this.currentTime - delay2 * (this.speed >= 0 ? 1 : -1);\n    const isInDelayPhase = this.speed >= 0 ? timeWithoutDelay < 0 : timeWithoutDelay > totalDuration;\n    this.currentTime = Math.max(timeWithoutDelay, 0);\n    if (this.state === \"finished\" && this.holdTime === null) {\n      this.currentTime = totalDuration;\n    }\n    let elapsed = this.currentTime;\n    let frameGenerator = generator;\n    if (repeat) {\n      const progress2 = Math.min(this.currentTime, totalDuration) / resolvedDuration;\n      let currentIteration = Math.floor(progress2);\n      let iterationProgress = progress2 % 1;\n      if (!iterationProgress && progress2 >= 1) {\n        iterationProgress = 1;\n      }\n      iterationProgress === 1 && currentIteration--;\n      currentIteration = Math.min(currentIteration, repeat + 1);\n      const isOddIteration = Boolean(currentIteration % 2);\n      if (isOddIteration) {\n        if (repeatType === \"reverse\") {\n          iterationProgress = 1 - iterationProgress;\n          if (repeatDelay) {\n            iterationProgress -= repeatDelay / resolvedDuration;\n          }\n        } else if (repeatType === \"mirror\") {\n          frameGenerator = mirroredGenerator;\n        }\n      }\n      elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;\n    }\n    const state2 = isInDelayPhase ? { done: false, value: keyframes2[0] } : frameGenerator.next(elapsed);\n    if (mapPercentToKeyframes) {\n      state2.value = mapPercentToKeyframes(state2.value);\n    }\n    let { done } = state2;\n    if (!isInDelayPhase && calculatedDuration !== null) {\n      done = this.speed >= 0 ? this.currentTime >= totalDuration : this.currentTime <= 0;\n    }\n    const isAnimationFinished = this.holdTime === null && (this.state === \"finished\" || this.state === \"running\" && done);\n    if (isAnimationFinished && finalKeyframe !== void 0) {\n      state2.value = getFinalKeyframe(keyframes2, this.options, finalKeyframe);\n    }\n    if (onUpdate) {\n      onUpdate(state2.value);\n    }\n    if (isAnimationFinished) {\n      this.finish();\n    }\n    return state2;\n  }\n  get duration() {\n    const { resolved } = this;\n    return resolved ? millisecondsToSeconds(resolved.calculatedDuration) : 0;\n  }\n  get time() {\n    return millisecondsToSeconds(this.currentTime);\n  }\n  set time(newTime) {\n    newTime = secondsToMilliseconds(newTime);\n    this.currentTime = newTime;\n    if (this.holdTime !== null || this.speed === 0) {\n      this.holdTime = newTime;\n    } else if (this.driver) {\n      this.startTime = this.driver.now() - newTime / this.speed;\n    }\n  }\n  get speed() {\n    return this.playbackSpeed;\n  }\n  set speed(newSpeed) {\n    const hasChanged = this.playbackSpeed !== newSpeed;\n    this.playbackSpeed = newSpeed;\n    if (hasChanged) {\n      this.time = millisecondsToSeconds(this.currentTime);\n    }\n  }\n  play() {\n    if (!this.resolver.isScheduled) {\n      this.resolver.resume();\n    }\n    if (!this._resolved) {\n      this.pendingPlayState = \"running\";\n      return;\n    }\n    if (this.isStopped)\n      return;\n    const { driver = frameloopDriver, onPlay, startTime } = this.options;\n    if (!this.driver) {\n      this.driver = driver((timestamp) => this.tick(timestamp));\n    }\n    onPlay && onPlay();\n    const now2 = this.driver.now();\n    if (this.holdTime !== null) {\n      this.startTime = now2 - this.holdTime;\n    } else if (!this.startTime) {\n      this.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();\n    } else if (this.state === \"finished\") {\n      this.startTime = now2;\n    }\n    if (this.state === \"finished\") {\n      this.updateFinishedPromise();\n    }\n    this.cancelTime = this.startTime;\n    this.holdTime = null;\n    this.state = \"running\";\n    this.driver.start();\n  }\n  pause() {\n    var _a;\n    if (!this._resolved) {\n      this.pendingPlayState = \"paused\";\n      return;\n    }\n    this.state = \"paused\";\n    this.holdTime = (_a = this.currentTime) !== null && _a !== void 0 ? _a : 0;\n  }\n  complete() {\n    if (this.state !== \"running\") {\n      this.play();\n    }\n    this.pendingPlayState = this.state = \"finished\";\n    this.holdTime = null;\n  }\n  finish() {\n    this.teardown();\n    this.state = \"finished\";\n    const { onComplete } = this.options;\n    onComplete && onComplete();\n  }\n  cancel() {\n    if (this.cancelTime !== null) {\n      this.tick(this.cancelTime);\n    }\n    this.teardown();\n    this.updateFinishedPromise();\n  }\n  teardown() {\n    this.state = \"idle\";\n    this.stopDriver();\n    this.resolveFinishedPromise();\n    this.updateFinishedPromise();\n    this.startTime = this.cancelTime = null;\n    this.resolver.cancel();\n  }\n  stopDriver() {\n    if (!this.driver)\n      return;\n    this.driver.stop();\n    this.driver = void 0;\n  }\n  sample(time2) {\n    this.startTime = 0;\n    return this.tick(time2, true);\n  }\n};\nfunction animateValue(options) {\n  return new MainThreadAnimation(options);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs\nvar isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-none.mjs\nfunction isNone(value) {\n  if (typeof value === \"number\") {\n    return value === 0;\n  } else if (value !== null) {\n    return value === \"none\" || value === \"0\" || isZeroValueString(value);\n  } else {\n    return true;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs\nvar isNumericalString = (v) => /^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/u.test(v);\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs\nvar splitCSSVariableRegex = (\n  // eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n  /^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u\n);\nfunction parseCSSVariable(current) {\n  const match = splitCSSVariableRegex.exec(current);\n  if (!match)\n    return [,];\n  const [, token1, token2, fallback] = match;\n  return [`--${token1 !== null && token1 !== void 0 ? token1 : token2}`, fallback];\n}\nvar maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n  invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n  const [token, fallback] = parseCSSVariable(current);\n  if (!token)\n    return;\n  const resolved = window.getComputedStyle(element).getPropertyValue(token);\n  if (resolved) {\n    const trimmed = resolved.trim();\n    return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n  }\n  return isCSSVariableToken(fallback) ? getVariableValue(fallback, element, depth + 1) : fallback;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs\nvar testValueType = (v) => (type) => type.test(v);\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs\nvar auto = {\n  test: (v) => v === \"auto\",\n  parse: (v) => v\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs\nvar dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\nvar findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\n// ../../../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs\nvar maxDefaults = /* @__PURE__ */ new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n  const [name, value] = v.slice(0, -1).split(\"(\");\n  if (name === \"drop-shadow\")\n    return v;\n  const [number2] = value.match(floatRegex) || [];\n  if (!number2)\n    return v;\n  const unit = value.replace(number2, \"\");\n  let defaultValue = maxDefaults.has(name) ? 1 : 0;\n  if (number2 !== value)\n    defaultValue *= 100;\n  return name + \"(\" + defaultValue + unit + \")\";\n}\nvar functionRegex = /\\b([a-z-]*)\\(.*?\\)/gu;\nvar filter = {\n  ...complex,\n  getAnimatableNone: (v) => {\n    const functions = v.match(functionRegex);\n    return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/number-browser.mjs\nvar browserNumberValueTypes = {\n  // Border props\n  borderWidth: px,\n  borderTopWidth: px,\n  borderRightWidth: px,\n  borderBottomWidth: px,\n  borderLeftWidth: px,\n  borderRadius: px,\n  radius: px,\n  borderTopLeftRadius: px,\n  borderTopRightRadius: px,\n  borderBottomRightRadius: px,\n  borderBottomLeftRadius: px,\n  // Positioning props\n  width: px,\n  maxWidth: px,\n  height: px,\n  maxHeight: px,\n  top: px,\n  right: px,\n  bottom: px,\n  left: px,\n  // Spacing props\n  padding: px,\n  paddingTop: px,\n  paddingRight: px,\n  paddingBottom: px,\n  paddingLeft: px,\n  margin: px,\n  marginTop: px,\n  marginRight: px,\n  marginBottom: px,\n  marginLeft: px,\n  // Misc\n  backgroundPositionX: px,\n  backgroundPositionY: px\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/transform.mjs\nvar transformValueTypes = {\n  rotate: degrees,\n  rotateX: degrees,\n  rotateY: degrees,\n  rotateZ: degrees,\n  scale,\n  scaleX: scale,\n  scaleY: scale,\n  scaleZ: scale,\n  skew: degrees,\n  skewX: degrees,\n  skewY: degrees,\n  distance: px,\n  translateX: px,\n  translateY: px,\n  translateZ: px,\n  x: px,\n  y: px,\n  z: px,\n  perspective: px,\n  transformPerspective: px,\n  opacity: alpha,\n  originX: progressPercentage,\n  originY: progressPercentage,\n  originZ: px\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs\nvar int = {\n  ...number,\n  transform: Math.round\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs\nvar numberValueTypes = {\n  ...browserNumberValueTypes,\n  ...transformValueTypes,\n  zIndex: int,\n  size: px,\n  // SVG\n  fillOpacity: alpha,\n  strokeOpacity: alpha,\n  numOctaves: int\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs\nvar defaultValueTypes = {\n  ...numberValueTypes,\n  // Color props\n  color,\n  backgroundColor: color,\n  outlineColor: color,\n  fill: color,\n  stroke: color,\n  // Border props\n  borderColor: color,\n  borderTopColor: color,\n  borderRightColor: color,\n  borderBottomColor: color,\n  borderLeftColor: color,\n  filter,\n  WebkitFilter: filter\n};\nvar getDefaultValueType = (key) => defaultValueTypes[key];\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs\nfunction getAnimatableNone2(key, value) {\n  let defaultValueType = getDefaultValueType(key);\n  if (defaultValueType !== filter)\n    defaultValueType = complex;\n  return defaultValueType.getAnimatableNone ? defaultValueType.getAnimatableNone(value) : void 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs\nvar invalidTemplates = /* @__PURE__ */ new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n  let i = 0;\n  let animatableTemplate = void 0;\n  while (i < unresolvedKeyframes.length && !animatableTemplate) {\n    const keyframe = unresolvedKeyframes[i];\n    if (typeof keyframe === \"string\" && !invalidTemplates.has(keyframe) && analyseComplexValue(keyframe).values.length) {\n      animatableTemplate = unresolvedKeyframes[i];\n    }\n    i++;\n  }\n  if (animatableTemplate && name) {\n    for (const noneIndex of noneKeyframeIndexes) {\n      unresolvedKeyframes[noneIndex] = getAnimatableNone2(name, animatableTemplate);\n    }\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs\nvar DOMKeyframesResolver = class extends KeyframeResolver {\n  constructor(unresolvedKeyframes, onComplete, name, motionValue2, element) {\n    super(unresolvedKeyframes, onComplete, name, motionValue2, element, true);\n  }\n  readKeyframes() {\n    const { unresolvedKeyframes, element, name } = this;\n    if (!element || !element.current)\n      return;\n    super.readKeyframes();\n    for (let i = 0; i < unresolvedKeyframes.length; i++) {\n      let keyframe = unresolvedKeyframes[i];\n      if (typeof keyframe === \"string\") {\n        keyframe = keyframe.trim();\n        if (isCSSVariableToken(keyframe)) {\n          const resolved = getVariableValue(keyframe, element.current);\n          if (resolved !== void 0) {\n            unresolvedKeyframes[i] = resolved;\n          }\n          if (i === unresolvedKeyframes.length - 1) {\n            this.finalKeyframe = keyframe;\n          }\n        }\n      }\n    }\n    this.resolveNoneKeyframes();\n    if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {\n      return;\n    }\n    const [origin, target] = unresolvedKeyframes;\n    const originType = findDimensionValueType(origin);\n    const targetType = findDimensionValueType(target);\n    if (originType === targetType)\n      return;\n    if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {\n      for (let i = 0; i < unresolvedKeyframes.length; i++) {\n        const value = unresolvedKeyframes[i];\n        if (typeof value === \"string\") {\n          unresolvedKeyframes[i] = parseFloat(value);\n        }\n      }\n    } else {\n      this.needsMeasurement = true;\n    }\n  }\n  resolveNoneKeyframes() {\n    const { unresolvedKeyframes, name } = this;\n    const noneKeyframeIndexes = [];\n    for (let i = 0; i < unresolvedKeyframes.length; i++) {\n      if (isNone(unresolvedKeyframes[i])) {\n        noneKeyframeIndexes.push(i);\n      }\n    }\n    if (noneKeyframeIndexes.length) {\n      makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);\n    }\n  }\n  measureInitialState() {\n    const { element, unresolvedKeyframes, name } = this;\n    if (!element || !element.current)\n      return;\n    if (name === \"height\") {\n      this.suspendedScrollY = window.pageYOffset;\n    }\n    this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n    unresolvedKeyframes[0] = this.measuredOrigin;\n    const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n    if (measureKeyframe !== void 0) {\n      element.getValue(name, measureKeyframe).jump(measureKeyframe, false);\n    }\n  }\n  measureEndState() {\n    var _a;\n    const { element, name, unresolvedKeyframes } = this;\n    if (!element || !element.current)\n      return;\n    const value = element.getValue(name);\n    value && value.jump(this.measuredOrigin, false);\n    const finalKeyframeIndex = unresolvedKeyframes.length - 1;\n    const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];\n    unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n    if (finalKeyframe !== null && this.finalKeyframe === void 0) {\n      this.finalKeyframe = finalKeyframe;\n    }\n    if ((_a = this.removedTransforms) === null || _a === void 0 ? void 0 : _a.length) {\n      this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {\n        element.getValue(unsetTransformName).set(unsetTransformValue);\n      });\n    }\n    this.resolveNoneKeyframes();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs\nvar acceleratedValues = /* @__PURE__ */ new Set([\n  \"opacity\",\n  \"clipPath\",\n  \"filter\",\n  \"transform\"\n  // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved\n  // or until we implement support for linear() easing.\n  // \"background-color\"\n]);\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/linear.mjs\nvar resolution = 10;\nvar generateLinearEasing = (easing, duration) => {\n  let points = \"\";\n  const numPoints = Math.max(Math.round(duration / resolution), 2);\n  for (let i = 0; i < numPoints; i++) {\n    points += easing(progress(0, numPoints - 1, i)) + \", \";\n  }\n  return `linear(${points.substring(0, points.length - 2)})`;\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/memo.mjs\nfunction memo(callback) {\n  let result;\n  return () => {\n    if (result === void 0)\n      result = callback();\n    return result;\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-flags.mjs\nvar supportsFlags = {\n  linearEasing: void 0\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/memo-supports.mjs\nfunction memoSupports(callback, supportsFlag) {\n  const memoized = memo(callback);\n  return () => {\n    var _a;\n    return (_a = supportsFlags[supportsFlag]) !== null && _a !== void 0 ? _a : memoized();\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-linear-easing.mjs\nvar supportsLinearEasing = /* @__PURE__ */ memoSupports(() => {\n  try {\n    document.createElement(\"div\").animate({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n  } catch (e) {\n    return false;\n  }\n  return true;\n}, \"linearEasing\");\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/easing.mjs\nfunction isWaapiSupportedEasing(easing) {\n  return Boolean(typeof easing === \"function\" && supportsLinearEasing() || !easing || typeof easing === \"string\" && (easing in supportedWaapiEasing || supportsLinearEasing()) || isBezierDefinition(easing) || Array.isArray(easing) && easing.every(isWaapiSupportedEasing));\n}\nvar cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\nvar supportedWaapiEasing = {\n  linear: \"linear\",\n  ease: \"ease\",\n  easeIn: \"ease-in\",\n  easeOut: \"ease-out\",\n  easeInOut: \"ease-in-out\",\n  circIn: /* @__PURE__ */ cubicBezierAsString([0, 0.65, 0.55, 1]),\n  circOut: /* @__PURE__ */ cubicBezierAsString([0.55, 0, 1, 0.45]),\n  backIn: /* @__PURE__ */ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n  backOut: /* @__PURE__ */ cubicBezierAsString([0.33, 1.53, 0.69, 0.99])\n};\nfunction mapEasingToNativeEasing(easing, duration) {\n  if (!easing) {\n    return void 0;\n  } else if (typeof easing === \"function\" && supportsLinearEasing()) {\n    return generateLinearEasing(easing, duration);\n  } else if (isBezierDefinition(easing)) {\n    return cubicBezierAsString(easing);\n  } else if (Array.isArray(easing)) {\n    return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) || supportedWaapiEasing.easeOut);\n  } else {\n    return supportedWaapiEasing[easing];\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs\nfunction startWaapiAnimation(element, valueName, keyframes2, { delay: delay2 = 0, duration = 300, repeat = 0, repeatType = \"loop\", ease: ease2, times } = {}) {\n  const keyframeOptions = { [valueName]: keyframes2 };\n  if (times)\n    keyframeOptions.offset = times;\n  const easing = mapEasingToNativeEasing(ease2, duration);\n  if (Array.isArray(easing))\n    keyframeOptions.easing = easing;\n  return element.animate(keyframeOptions, {\n    delay: delay2,\n    duration,\n    easing: !Array.isArray(easing) ? easing : \"linear\",\n    fill: \"both\",\n    iterations: repeat + 1,\n    direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\"\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/attach-timeline.mjs\nfunction attachTimeline(animation, timeline) {\n  animation.timeline = timeline;\n  animation.onfinish = null;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs\nvar supportsWaapi = /* @__PURE__ */ memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs\nvar sampleDelta = 10;\nvar maxDuration2 = 2e4;\nfunction requiresPregeneratedKeyframes(options) {\n  return isGenerator(options.type) || options.type === \"spring\" || !isWaapiSupportedEasing(options.ease);\n}\nfunction pregenerateKeyframes(keyframes2, options) {\n  const sampleAnimation = new MainThreadAnimation({\n    ...options,\n    keyframes: keyframes2,\n    repeat: 0,\n    delay: 0,\n    isGenerator: true\n  });\n  let state2 = { done: false, value: keyframes2[0] };\n  const pregeneratedKeyframes = [];\n  let t = 0;\n  while (!state2.done && t < maxDuration2) {\n    state2 = sampleAnimation.sample(t);\n    pregeneratedKeyframes.push(state2.value);\n    t += sampleDelta;\n  }\n  return {\n    times: void 0,\n    keyframes: pregeneratedKeyframes,\n    duration: t - sampleDelta,\n    ease: \"linear\"\n  };\n}\nvar unsupportedEasingFunctions = {\n  anticipate,\n  backInOut,\n  circInOut\n};\nfunction isUnsupportedEase(key) {\n  return key in unsupportedEasingFunctions;\n}\nvar AcceleratedAnimation = class extends BaseAnimation {\n  constructor(options) {\n    super(options);\n    const { name, motionValue: motionValue2, element, keyframes: keyframes2 } = this.options;\n    this.resolver = new DOMKeyframesResolver(keyframes2, (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe), name, motionValue2, element);\n    this.resolver.scheduleResolve();\n  }\n  initPlayback(keyframes2, finalKeyframe) {\n    var _a;\n    let { duration = 300, times, ease: ease2, type, motionValue: motionValue2, name, startTime } = this.options;\n    if (!((_a = motionValue2.owner) === null || _a === void 0 ? void 0 : _a.current)) {\n      return false;\n    }\n    if (typeof ease2 === \"string\" && supportsLinearEasing() && isUnsupportedEase(ease2)) {\n      ease2 = unsupportedEasingFunctions[ease2];\n    }\n    if (requiresPregeneratedKeyframes(this.options)) {\n      const { onComplete, onUpdate, motionValue: motionValue3, element, ...options } = this.options;\n      const pregeneratedAnimation = pregenerateKeyframes(keyframes2, options);\n      keyframes2 = pregeneratedAnimation.keyframes;\n      if (keyframes2.length === 1) {\n        keyframes2[1] = keyframes2[0];\n      }\n      duration = pregeneratedAnimation.duration;\n      times = pregeneratedAnimation.times;\n      ease2 = pregeneratedAnimation.ease;\n      type = \"keyframes\";\n    }\n    const animation = startWaapiAnimation(motionValue2.owner.current, name, keyframes2, { ...this.options, duration, times, ease: ease2 });\n    animation.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();\n    if (this.pendingTimeline) {\n      attachTimeline(animation, this.pendingTimeline);\n      this.pendingTimeline = void 0;\n    } else {\n      animation.onfinish = () => {\n        const { onComplete } = this.options;\n        motionValue2.set(getFinalKeyframe(keyframes2, this.options, finalKeyframe));\n        onComplete && onComplete();\n        this.cancel();\n        this.resolveFinishedPromise();\n      };\n    }\n    return {\n      animation,\n      duration,\n      times,\n      type,\n      ease: ease2,\n      keyframes: keyframes2\n    };\n  }\n  get duration() {\n    const { resolved } = this;\n    if (!resolved)\n      return 0;\n    const { duration } = resolved;\n    return millisecondsToSeconds(duration);\n  }\n  get time() {\n    const { resolved } = this;\n    if (!resolved)\n      return 0;\n    const { animation } = resolved;\n    return millisecondsToSeconds(animation.currentTime || 0);\n  }\n  set time(newTime) {\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    const { animation } = resolved;\n    animation.currentTime = secondsToMilliseconds(newTime);\n  }\n  get speed() {\n    const { resolved } = this;\n    if (!resolved)\n      return 1;\n    const { animation } = resolved;\n    return animation.playbackRate;\n  }\n  set speed(newSpeed) {\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    const { animation } = resolved;\n    animation.playbackRate = newSpeed;\n  }\n  get state() {\n    const { resolved } = this;\n    if (!resolved)\n      return \"idle\";\n    const { animation } = resolved;\n    return animation.playState;\n  }\n  get startTime() {\n    const { resolved } = this;\n    if (!resolved)\n      return null;\n    const { animation } = resolved;\n    return animation.startTime;\n  }\n  /**\n   * Replace the default DocumentTimeline with another AnimationTimeline.\n   * Currently used for scroll animations.\n   */\n  attachTimeline(timeline) {\n    if (!this._resolved) {\n      this.pendingTimeline = timeline;\n    } else {\n      const { resolved } = this;\n      if (!resolved)\n        return noop;\n      const { animation } = resolved;\n      attachTimeline(animation, timeline);\n    }\n    return noop;\n  }\n  play() {\n    if (this.isStopped)\n      return;\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    const { animation } = resolved;\n    if (animation.playState === \"finished\") {\n      this.updateFinishedPromise();\n    }\n    animation.play();\n  }\n  pause() {\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    const { animation } = resolved;\n    animation.pause();\n  }\n  stop() {\n    this.resolver.cancel();\n    this.isStopped = true;\n    if (this.state === \"idle\")\n      return;\n    this.resolveFinishedPromise();\n    this.updateFinishedPromise();\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    const { animation, keyframes: keyframes2, duration, type, ease: ease2, times } = resolved;\n    if (animation.playState === \"idle\" || animation.playState === \"finished\") {\n      return;\n    }\n    if (this.time) {\n      const { motionValue: motionValue2, onUpdate, onComplete, element, ...options } = this.options;\n      const sampleAnimation = new MainThreadAnimation({\n        ...options,\n        keyframes: keyframes2,\n        duration,\n        type,\n        ease: ease2,\n        times,\n        isGenerator: true\n      });\n      const sampleTime = secondsToMilliseconds(this.time);\n      motionValue2.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);\n    }\n    const { onStop } = this.options;\n    onStop && onStop();\n    this.cancel();\n  }\n  complete() {\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    resolved.animation.finish();\n  }\n  cancel() {\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    resolved.animation.cancel();\n  }\n  static supports(options) {\n    const { motionValue: motionValue2, name, repeatDelay, repeatType, damping, type } = options;\n    return supportsWaapi() && name && acceleratedValues.has(name) && motionValue2 && motionValue2.owner && motionValue2.owner.current instanceof HTMLElement && /**\n     * If we're outputting values to onUpdate then we can't use WAAPI as there's\n     * no way to read the value from WAAPI every frame.\n     */\n    !motionValue2.owner.getProps().onUpdate && !repeatDelay && repeatType !== \"mirror\" && damping !== 0 && type !== \"inertia\";\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/array.mjs\nfunction addUniqueItem(arr, item) {\n  if (arr.indexOf(item) === -1)\n    arr.push(item);\n}\nfunction removeItem(arr, item) {\n  const index = arr.indexOf(item);\n  if (index > -1)\n    arr.splice(index, 1);\n}\nfunction moveItem([...arr], fromIndex, toIndex) {\n  const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n  if (startIndex >= 0 && startIndex < arr.length) {\n    const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n    const [item] = arr.splice(fromIndex, 1);\n    arr.splice(endIndex, 0, item);\n  }\n  return arr;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs\nvar SubscriptionManager = class {\n  constructor() {\n    this.subscriptions = [];\n  }\n  add(handler) {\n    addUniqueItem(this.subscriptions, handler);\n    return () => removeItem(this.subscriptions, handler);\n  }\n  notify(a, b, c) {\n    const numSubscriptions = this.subscriptions.length;\n    if (!numSubscriptions)\n      return;\n    if (numSubscriptions === 1) {\n      this.subscriptions[0](a, b, c);\n    } else {\n      for (let i = 0; i < numSubscriptions; i++) {\n        const handler = this.subscriptions[i];\n        handler && handler(a, b, c);\n      }\n    }\n  }\n  getSize() {\n    return this.subscriptions.length;\n  }\n  clear() {\n    this.subscriptions.length = 0;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/index.mjs\nvar MAX_VELOCITY_DELTA = 30;\nvar isFloat = (value) => {\n  return !isNaN(parseFloat(value));\n};\nvar collectMotionValues = {\n  current: void 0\n};\nvar MotionValue = class {\n  /**\n   * @param init - The initiating value\n   * @param config - Optional configuration options\n   *\n   * -  `transformer`: A function to transform incoming values with.\n   *\n   * @internal\n   */\n  constructor(init, options = {}) {\n    this.version = \"11.11.7\";\n    this.canTrackVelocity = null;\n    this.events = {};\n    this.updateAndNotify = (v, render = true) => {\n      const currentTime = time.now();\n      if (this.updatedAt !== currentTime) {\n        this.setPrevFrameValue();\n      }\n      this.prev = this.current;\n      this.setCurrent(v);\n      if (this.current !== this.prev && this.events.change) {\n        this.events.change.notify(this.current);\n      }\n      if (render && this.events.renderRequest) {\n        this.events.renderRequest.notify(this.current);\n      }\n    };\n    this.hasAnimated = false;\n    this.setCurrent(init);\n    this.owner = options.owner;\n  }\n  setCurrent(current) {\n    this.current = current;\n    this.updatedAt = time.now();\n    if (this.canTrackVelocity === null && current !== void 0) {\n      this.canTrackVelocity = isFloat(this.current);\n    }\n  }\n  setPrevFrameValue(prevFrameValue = this.current) {\n    this.prevFrameValue = prevFrameValue;\n    this.prevUpdatedAt = this.updatedAt;\n  }\n  /**\n   * Adds a function that will be notified when the `MotionValue` is updated.\n   *\n   * It returns a function that, when called, will cancel the subscription.\n   *\n   * When calling `onChange` inside a React component, it should be wrapped with the\n   * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n   * from the `useEffect` function to ensure you don't add duplicate subscribers..\n   *\n   * ```jsx\n   * export const MyComponent = () => {\n   *   const x = useMotionValue(0)\n   *   const y = useMotionValue(0)\n   *   const opacity = useMotionValue(1)\n   *\n   *   useEffect(() => {\n   *     function updateOpacity() {\n   *       const maxXY = Math.max(x.get(), y.get())\n   *       const newOpacity = transform(maxXY, [0, 100], [1, 0])\n   *       opacity.set(newOpacity)\n   *     }\n   *\n   *     const unsubscribeX = x.on(\"change\", updateOpacity)\n   *     const unsubscribeY = y.on(\"change\", updateOpacity)\n   *\n   *     return () => {\n   *       unsubscribeX()\n   *       unsubscribeY()\n   *     }\n   *   }, [])\n   *\n   *   return <motion.div style={{ x }} />\n   * }\n   * ```\n   *\n   * @param subscriber - A function that receives the latest value.\n   * @returns A function that, when called, will cancel this subscription.\n   *\n   * @deprecated\n   */\n  onChange(subscription) {\n    if (false) {\n      warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n    }\n    return this.on(\"change\", subscription);\n  }\n  on(eventName, callback) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = new SubscriptionManager();\n    }\n    const unsubscribe = this.events[eventName].add(callback);\n    if (eventName === \"change\") {\n      return () => {\n        unsubscribe();\n        frame.read(() => {\n          if (!this.events.change.getSize()) {\n            this.stop();\n          }\n        });\n      };\n    }\n    return unsubscribe;\n  }\n  clearListeners() {\n    for (const eventManagers in this.events) {\n      this.events[eventManagers].clear();\n    }\n  }\n  /**\n   * Attaches a passive effect to the `MotionValue`.\n   *\n   * @internal\n   */\n  attach(passiveEffect, stopPassiveEffect) {\n    this.passiveEffect = passiveEffect;\n    this.stopPassiveEffect = stopPassiveEffect;\n  }\n  /**\n   * Sets the state of the `MotionValue`.\n   *\n   * @remarks\n   *\n   * ```jsx\n   * const x = useMotionValue(0)\n   * x.set(10)\n   * ```\n   *\n   * @param latest - Latest value to set.\n   * @param render - Whether to notify render subscribers. Defaults to `true`\n   *\n   * @public\n   */\n  set(v, render = true) {\n    if (!render || !this.passiveEffect) {\n      this.updateAndNotify(v, render);\n    } else {\n      this.passiveEffect(v, this.updateAndNotify);\n    }\n  }\n  setWithVelocity(prev, current, delta) {\n    this.set(current);\n    this.prev = void 0;\n    this.prevFrameValue = prev;\n    this.prevUpdatedAt = this.updatedAt - delta;\n  }\n  /**\n   * Set the state of the `MotionValue`, stopping any active animations,\n   * effects, and resets velocity to `0`.\n   */\n  jump(v, endAnimation = true) {\n    this.updateAndNotify(v);\n    this.prev = v;\n    this.prevUpdatedAt = this.prevFrameValue = void 0;\n    endAnimation && this.stop();\n    if (this.stopPassiveEffect)\n      this.stopPassiveEffect();\n  }\n  /**\n   * Returns the latest state of `MotionValue`\n   *\n   * @returns - The latest state of `MotionValue`\n   *\n   * @public\n   */\n  get() {\n    if (collectMotionValues.current) {\n      collectMotionValues.current.push(this);\n    }\n    return this.current;\n  }\n  /**\n   * @public\n   */\n  getPrevious() {\n    return this.prev;\n  }\n  /**\n   * Returns the latest velocity of `MotionValue`\n   *\n   * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n   *\n   * @public\n   */\n  getVelocity() {\n    const currentTime = time.now();\n    if (!this.canTrackVelocity || this.prevFrameValue === void 0 || currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n      return 0;\n    }\n    const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n    return velocityPerSecond(parseFloat(this.current) - parseFloat(this.prevFrameValue), delta);\n  }\n  /**\n   * Registers a new animation to control this `MotionValue`. Only one\n   * animation can drive a `MotionValue` at one time.\n   *\n   * ```jsx\n   * value.start()\n   * ```\n   *\n   * @param animation - A function that starts the provided animation\n   *\n   * @internal\n   */\n  start(startAnimation) {\n    this.stop();\n    return new Promise((resolve) => {\n      this.hasAnimated = true;\n      this.animation = startAnimation(resolve);\n      if (this.events.animationStart) {\n        this.events.animationStart.notify();\n      }\n    }).then(() => {\n      if (this.events.animationComplete) {\n        this.events.animationComplete.notify();\n      }\n      this.clearAnimation();\n    });\n  }\n  /**\n   * Stop the currently active animation.\n   *\n   * @public\n   */\n  stop() {\n    if (this.animation) {\n      this.animation.stop();\n      if (this.events.animationCancel) {\n        this.events.animationCancel.notify();\n      }\n    }\n    this.clearAnimation();\n  }\n  /**\n   * Returns `true` if this value is currently animating.\n   *\n   * @public\n   */\n  isAnimating() {\n    return !!this.animation;\n  }\n  clearAnimation() {\n    delete this.animation;\n  }\n  /**\n   * Destroy and clean up subscribers to this `MotionValue`.\n   *\n   * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n   * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n   * created a `MotionValue` via the `motionValue` function.\n   *\n   * @public\n   */\n  destroy() {\n    this.clearListeners();\n    this.stop();\n    if (this.stopPassiveEffect) {\n      this.stopPassiveEffect();\n    }\n  }\n};\nfunction motionValue(init, options) {\n  return new MotionValue(init, options);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs\nvar camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, \"$1-$2\").toLowerCase();\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs\nvar optimizedAppearDataId = \"framerAppearId\";\nvar optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\n// ../../../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs\nvar isMotionValue = (value) => Boolean(value && value.getVelocity);\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs\nfunction getValueState(visualElement) {\n  const state2 = [{}, {}];\n  visualElement === null || visualElement === void 0 ? void 0 : visualElement.values.forEach((value, key) => {\n    state2[0][key] = value.get();\n    state2[1][key] = value.getVelocity();\n  });\n  return state2;\n}\nfunction resolveVariantFromProps(props, definition, custom, visualElement) {\n  if (typeof definition === \"function\") {\n    const [current, velocity] = getValueState(visualElement);\n    definition = definition(custom !== void 0 ? custom : props.custom, current, velocity);\n  }\n  if (typeof definition === \"string\") {\n    definition = props.variants && props.variants[definition];\n  }\n  if (typeof definition === \"function\") {\n    const [current, velocity] = getValueState(visualElement);\n    definition = definition(custom !== void 0 ? custom : props.custom, current, velocity);\n  }\n  return definition;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs\nfunction resolveVariant(visualElement, definition, custom) {\n  const props = visualElement.getProps();\n  return resolveVariantFromProps(props, definition, custom !== void 0 ? custom : props.custom, visualElement);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs\nvar underDampedSpring = {\n  type: \"spring\",\n  stiffness: 500,\n  damping: 25,\n  restSpeed: 10\n};\nvar criticallyDampedSpring = (target) => ({\n  type: \"spring\",\n  stiffness: 550,\n  damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n  restSpeed: 10\n});\nvar keyframesTransition = {\n  type: \"keyframes\",\n  duration: 0.8\n};\nvar ease = {\n  type: \"keyframes\",\n  ease: [0.25, 0.1, 0.35, 1],\n  duration: 0.3\n};\nvar getDefaultTransition = (valueKey, { keyframes: keyframes2 }) => {\n  if (keyframes2.length > 2) {\n    return keyframesTransition;\n  } else if (transformProps.has(valueKey)) {\n    return valueKey.startsWith(\"scale\") ? criticallyDampedSpring(keyframes2[1]) : underDampedSpring;\n  }\n  return ease;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/get-value-transition.mjs\nfunction getValueTransition(transition, key) {\n  return transition ? transition[key] || transition[\"default\"] || transition : void 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/supports.mjs\nvar supportsScrollTimeline = memo(() => window.ScrollTimeline !== void 0);\n\n// ../../../node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs\nvar GroupPlaybackControls = class {\n  constructor(animations2) {\n    this.stop = () => this.runAll(\"stop\");\n    this.animations = animations2.filter(Boolean);\n  }\n  then(onResolve, onReject) {\n    return Promise.all(this.animations).then(onResolve).catch(onReject);\n  }\n  /**\n   * TODO: Filter out cancelled or stopped animations before returning\n   */\n  getAll(propName) {\n    return this.animations[0][propName];\n  }\n  setAll(propName, newValue) {\n    for (let i = 0; i < this.animations.length; i++) {\n      this.animations[i][propName] = newValue;\n    }\n  }\n  attachTimeline(timeline, fallback) {\n    const subscriptions = this.animations.map((animation) => {\n      if (supportsScrollTimeline() && animation.attachTimeline) {\n        return animation.attachTimeline(timeline);\n      } else {\n        return fallback(animation);\n      }\n    });\n    return () => {\n      subscriptions.forEach((cancel, i) => {\n        cancel && cancel();\n        this.animations[i].stop();\n      });\n    };\n  }\n  get time() {\n    return this.getAll(\"time\");\n  }\n  set time(time2) {\n    this.setAll(\"time\", time2);\n  }\n  get speed() {\n    return this.getAll(\"speed\");\n  }\n  set speed(speed) {\n    this.setAll(\"speed\", speed);\n  }\n  get startTime() {\n    return this.getAll(\"startTime\");\n  }\n  get duration() {\n    let max = 0;\n    for (let i = 0; i < this.animations.length; i++) {\n      max = Math.max(max, this.animations[i].duration);\n    }\n    return max;\n  }\n  runAll(methodName) {\n    this.animations.forEach((controls) => controls[methodName]());\n  }\n  play() {\n    this.runAll(\"play\");\n  }\n  pause() {\n    this.runAll(\"pause\");\n  }\n  cancel() {\n    this.runAll(\"cancel\");\n  }\n  complete() {\n    this.runAll(\"complete\");\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-transition-defined.mjs\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n  return !!Object.keys(transition).length;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs\nvar animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {\n  const valueTransition = getValueTransition(transition, name) || {};\n  const delay2 = valueTransition.delay || transition.delay || 0;\n  let { elapsed = 0 } = transition;\n  elapsed = elapsed - secondsToMilliseconds(delay2);\n  let options = {\n    keyframes: Array.isArray(target) ? target : [null, target],\n    ease: \"easeOut\",\n    velocity: value.getVelocity(),\n    ...valueTransition,\n    delay: -elapsed,\n    onUpdate: (v) => {\n      value.set(v);\n      valueTransition.onUpdate && valueTransition.onUpdate(v);\n    },\n    onComplete: () => {\n      onComplete();\n      valueTransition.onComplete && valueTransition.onComplete();\n    },\n    name,\n    motionValue: value,\n    element: isHandoff ? void 0 : element\n  };\n  if (!isTransitionDefined(valueTransition)) {\n    options = {\n      ...options,\n      ...getDefaultTransition(name, options)\n    };\n  }\n  if (options.duration) {\n    options.duration = secondsToMilliseconds(options.duration);\n  }\n  if (options.repeatDelay) {\n    options.repeatDelay = secondsToMilliseconds(options.repeatDelay);\n  }\n  if (options.from !== void 0) {\n    options.keyframes[0] = options.from;\n  }\n  let shouldSkip = false;\n  if (options.type === false || options.duration === 0 && !options.repeatDelay) {\n    options.duration = 0;\n    if (options.delay === 0) {\n      shouldSkip = true;\n    }\n  }\n  if (instantAnimationState.current || MotionGlobalConfig.skipAnimations) {\n    shouldSkip = true;\n    options.duration = 0;\n    options.delay = 0;\n  }\n  if (shouldSkip && !isHandoff && value.get() !== void 0) {\n    const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);\n    if (finalKeyframe !== void 0) {\n      frame.update(() => {\n        options.onUpdate(finalKeyframe);\n        options.onComplete();\n      });\n      return new GroupPlaybackControls([]);\n    }\n  }\n  if (!isHandoff && AcceleratedAnimation.supports(options)) {\n    return new AcceleratedAnimation(options);\n  } else {\n    return new MainThreadAnimation(options);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs\nvar isKeyframesTarget = (v) => {\n  return Array.isArray(v);\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/resolve-value.mjs\nvar isCustomValue = (v) => {\n  return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nvar resolveFinalValueInKeyframes = (v) => {\n  return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/setters.mjs\nfunction setMotionValue(visualElement, key, value) {\n  if (visualElement.hasValue(key)) {\n    visualElement.getValue(key).set(value);\n  } else {\n    visualElement.addValue(key, motionValue(value));\n  }\n}\nfunction setTarget(visualElement, definition) {\n  const resolved = resolveVariant(visualElement, definition);\n  let { transitionEnd = {}, transition = {}, ...target } = resolved || {};\n  target = { ...target, ...transitionEnd };\n  for (const key in target) {\n    const value = resolveFinalValueInKeyframes(target[key]);\n    setMotionValue(visualElement, key, value);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs\nfunction getOptimisedAppearId(visualElement) {\n  return visualElement.props[optimizedAppearDataAttribute];\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs\nfunction isWillChangeMotionValue(value) {\n  return Boolean(isMotionValue(value) && value.add);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/get-will-change-name.mjs\nfunction getWillChangeName(name) {\n  if (transformProps.has(name)) {\n    return \"transform\";\n  } else if (acceleratedValues.has(name)) {\n    return camelToDash(name);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.mjs\nfunction addValueToWillChange(visualElement, key) {\n  var _a;\n  if (!visualElement.applyWillChange)\n    return;\n  const willChange = visualElement.getValue(\"willChange\");\n  if (isWillChangeMotionValue(willChange)) {\n    return willChange.add(key);\n  } else if (!((_a = visualElement.props.style) === null || _a === void 0 ? void 0 : _a.willChange) && getWillChangeName(key)) {\n    visualElement.setStaticValue(\"willChange\", \"transform\");\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n  const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n  needsAnimating[key] = false;\n  return shouldBlock;\n}\nfunction animateTarget(visualElement, targetAndTransition, { delay: delay2 = 0, transitionOverride, type } = {}) {\n  var _a;\n  let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;\n  if (transitionOverride)\n    transition = transitionOverride;\n  const animations2 = [];\n  const animationTypeState = type && visualElement.animationState && visualElement.animationState.getState()[type];\n  for (const key in target) {\n    const value = visualElement.getValue(key, (_a = visualElement.latestValues[key]) !== null && _a !== void 0 ? _a : null);\n    const valueTarget = target[key];\n    if (valueTarget === void 0 || animationTypeState && shouldBlockAnimation(animationTypeState, key)) {\n      continue;\n    }\n    const valueTransition = {\n      delay: delay2,\n      ...getValueTransition(transition || {}, key)\n    };\n    let isHandoff = false;\n    if (window.MotionHandoffAnimation) {\n      const appearId = getOptimisedAppearId(visualElement);\n      if (appearId) {\n        const startTime = window.MotionHandoffAnimation(appearId, key, frame);\n        if (startTime !== null) {\n          valueTransition.startTime = startTime;\n          isHandoff = true;\n        }\n      }\n    }\n    addValueToWillChange(visualElement, key);\n    value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key) ? { type: false } : valueTransition, visualElement, isHandoff));\n    const animation = value.animation;\n    if (animation) {\n      animations2.push(animation);\n    }\n  }\n  if (transitionEnd) {\n    Promise.all(animations2).then(() => {\n      frame.update(() => {\n        transitionEnd && setTarget(visualElement, transitionEnd);\n      });\n    });\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs\nfunction animateVariant(visualElement, variant, options = {}) {\n  var _a;\n  const resolved = resolveVariant(visualElement, variant, options.type === \"exit\" ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom : void 0);\n  let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n  if (options.transitionOverride) {\n    transition = options.transitionOverride;\n  }\n  const getAnimation = resolved ? () => Promise.all(animateTarget(visualElement, resolved, options)) : () => Promise.resolve();\n  const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size ? (forwardDelay = 0) => {\n    const { delayChildren = 0, staggerChildren, staggerDirection } = transition;\n    return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n  } : () => Promise.resolve();\n  const { when } = transition;\n  if (when) {\n    const [first, last] = when === \"beforeChildren\" ? [getAnimation, getChildAnimations] : [getChildAnimations, getAnimation];\n    return first().then(() => last());\n  } else {\n    return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n  }\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n  const animations2 = [];\n  const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n  const generateStaggerDuration = staggerDirection === 1 ? (i = 0) => i * staggerChildren : (i = 0) => maxStaggerDuration - i * staggerChildren;\n  Array.from(visualElement.variantChildren).sort(sortByTreeOrder).forEach((child, i) => {\n    child.notify(\"AnimationStart\", variant);\n    animations2.push(animateVariant(child, variant, {\n      ...options,\n      delay: delayChildren + generateStaggerDuration(i)\n    }).then(() => child.notify(\"AnimationComplete\", variant)));\n  });\n  return Promise.all(animations2);\n}\nfunction sortByTreeOrder(a, b) {\n  return a.sortNodePosition(b);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs\nfunction animateVisualElement(visualElement, definition, options = {}) {\n  visualElement.notify(\"AnimationStart\", definition);\n  let animation;\n  if (Array.isArray(definition)) {\n    const animations2 = definition.map((variant) => animateVariant(visualElement, variant, options));\n    animation = Promise.all(animations2);\n  } else if (typeof definition === \"string\") {\n    animation = animateVariant(visualElement, definition, options);\n  } else {\n    const resolvedDefinition = typeof definition === \"function\" ? resolveVariant(visualElement, definition, options.custom) : definition;\n    animation = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n  }\n  return animation.then(() => {\n    visualElement.notify(\"AnimationComplete\", definition);\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs\nfunction isAnimationControls(v) {\n  return v !== null && typeof v === \"object\" && typeof v.start === \"function\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs\nfunction shallowCompare(next, prev) {\n  if (!Array.isArray(prev))\n    return false;\n  const prevLength = prev.length;\n  if (prevLength !== next.length)\n    return false;\n  for (let i = 0; i < prevLength; i++) {\n    if (prev[i] !== next[i])\n      return false;\n  }\n  return true;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs\nfunction isVariantLabel(v) {\n  return typeof v === \"string\" || Array.isArray(v);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/variant-props.mjs\nvar variantPriorityOrder = [\n  \"animate\",\n  \"whileInView\",\n  \"whileFocus\",\n  \"whileHover\",\n  \"whileTap\",\n  \"whileDrag\",\n  \"exit\"\n];\nvar variantProps = [\"initial\", ...variantPriorityOrder];\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/get-variant-context.mjs\nvar numVariantProps = variantProps.length;\nfunction getVariantContext(visualElement) {\n  if (!visualElement)\n    return void 0;\n  if (!visualElement.isControllingVariants) {\n    const context2 = visualElement.parent ? getVariantContext(visualElement.parent) || {} : {};\n    if (visualElement.props.initial !== void 0) {\n      context2.initial = visualElement.props.initial;\n    }\n    return context2;\n  }\n  const context = {};\n  for (let i = 0; i < numVariantProps; i++) {\n    const name = variantProps[i];\n    const prop = visualElement.props[name];\n    if (isVariantLabel(prop) || prop === false) {\n      context[name] = prop;\n    }\n  }\n  return context;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs\nvar reversePriorityOrder = [...variantPriorityOrder].reverse();\nvar numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n  return (animations2) => Promise.all(animations2.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n  let animate2 = animateList(visualElement);\n  let state2 = createState();\n  let isInitialRender = true;\n  const buildResolvedTypeValues = (type) => (acc, definition) => {\n    var _a;\n    const resolved = resolveVariant(visualElement, definition, type === \"exit\" ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom : void 0);\n    if (resolved) {\n      const { transition, transitionEnd, ...target } = resolved;\n      acc = { ...acc, ...target, ...transitionEnd };\n    }\n    return acc;\n  };\n  function setAnimateFunction(makeAnimator) {\n    animate2 = makeAnimator(visualElement);\n  }\n  function animateChanges(changedActiveType) {\n    const { props } = visualElement;\n    const context = getVariantContext(visualElement.parent) || {};\n    const animations2 = [];\n    const removedKeys = /* @__PURE__ */ new Set();\n    let encounteredKeys = {};\n    let removedVariantIndex = Infinity;\n    for (let i = 0; i < numAnimationTypes; i++) {\n      const type = reversePriorityOrder[i];\n      const typeState = state2[type];\n      const prop = props[type] !== void 0 ? props[type] : context[type];\n      const propIsVariant = isVariantLabel(prop);\n      const activeDelta = type === changedActiveType ? typeState.isActive : null;\n      if (activeDelta === false)\n        removedVariantIndex = i;\n      let isInherited = prop === context[type] && prop !== props[type] && propIsVariant;\n      if (isInherited && isInitialRender && visualElement.manuallyAnimateOnMount) {\n        isInherited = false;\n      }\n      typeState.protectedKeys = { ...encounteredKeys };\n      if (\n        // If it isn't active and hasn't *just* been set as inactive\n        !typeState.isActive && activeDelta === null || // If we didn't and don't have any defined prop for this animation type\n        !prop && !typeState.prevProp || // Or if the prop doesn't define an animation\n        isAnimationControls(prop) || typeof prop === \"boolean\"\n      ) {\n        continue;\n      }\n      const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n      let shouldAnimateType = variantDidChange || // If we're making this variant active, we want to always make it active\n      type === changedActiveType && typeState.isActive && !isInherited && propIsVariant || // If we removed a higher-priority variant (i is in reverse order)\n      i > removedVariantIndex && propIsVariant;\n      let handledRemovedValues = false;\n      const definitionList = Array.isArray(prop) ? prop : [prop];\n      let resolvedValues = definitionList.reduce(buildResolvedTypeValues(type), {});\n      if (activeDelta === false)\n        resolvedValues = {};\n      const { prevResolvedValues = {} } = typeState;\n      const allKeys = {\n        ...prevResolvedValues,\n        ...resolvedValues\n      };\n      const markToAnimate = (key) => {\n        shouldAnimateType = true;\n        if (removedKeys.has(key)) {\n          handledRemovedValues = true;\n          removedKeys.delete(key);\n        }\n        typeState.needsAnimating[key] = true;\n        const motionValue2 = visualElement.getValue(key);\n        if (motionValue2)\n          motionValue2.liveStyle = false;\n      };\n      for (const key in allKeys) {\n        const next = resolvedValues[key];\n        const prev = prevResolvedValues[key];\n        if (encounteredKeys.hasOwnProperty(key))\n          continue;\n        let valueHasChanged = false;\n        if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n          valueHasChanged = !shallowCompare(next, prev);\n        } else {\n          valueHasChanged = next !== prev;\n        }\n        if (valueHasChanged) {\n          if (next !== void 0 && next !== null) {\n            markToAnimate(key);\n          } else {\n            removedKeys.add(key);\n          }\n        } else if (next !== void 0 && removedKeys.has(key)) {\n          markToAnimate(key);\n        } else {\n          typeState.protectedKeys[key] = true;\n        }\n      }\n      typeState.prevProp = prop;\n      typeState.prevResolvedValues = resolvedValues;\n      if (typeState.isActive) {\n        encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n      }\n      if (isInitialRender && visualElement.blockInitialAnimation) {\n        shouldAnimateType = false;\n      }\n      const willAnimateViaParent = isInherited && variantDidChange;\n      const needsAnimating = !willAnimateViaParent || handledRemovedValues;\n      if (shouldAnimateType && needsAnimating) {\n        animations2.push(...definitionList.map((animation) => ({\n          animation,\n          options: { type }\n        })));\n      }\n    }\n    if (removedKeys.size) {\n      const fallbackAnimation = {};\n      removedKeys.forEach((key) => {\n        const fallbackTarget = visualElement.getBaseTarget(key);\n        const motionValue2 = visualElement.getValue(key);\n        if (motionValue2)\n          motionValue2.liveStyle = true;\n        fallbackAnimation[key] = fallbackTarget !== null && fallbackTarget !== void 0 ? fallbackTarget : null;\n      });\n      animations2.push({ animation: fallbackAnimation });\n    }\n    let shouldAnimate = Boolean(animations2.length);\n    if (isInitialRender && (props.initial === false || props.initial === props.animate) && !visualElement.manuallyAnimateOnMount) {\n      shouldAnimate = false;\n    }\n    isInitialRender = false;\n    return shouldAnimate ? animate2(animations2) : Promise.resolve();\n  }\n  function setActive(type, isActive) {\n    var _a;\n    if (state2[type].isActive === isActive)\n      return Promise.resolve();\n    (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => {\n      var _a2;\n      return (_a2 = child.animationState) === null || _a2 === void 0 ? void 0 : _a2.setActive(type, isActive);\n    });\n    state2[type].isActive = isActive;\n    const animations2 = animateChanges(type);\n    for (const key in state2) {\n      state2[key].protectedKeys = {};\n    }\n    return animations2;\n  }\n  return {\n    animateChanges,\n    setActive,\n    setAnimateFunction,\n    getState: () => state2,\n    reset: () => {\n      state2 = createState();\n      isInitialRender = true;\n    }\n  };\n}\nfunction checkVariantsDidChange(prev, next) {\n  if (typeof next === \"string\") {\n    return next !== prev;\n  } else if (Array.isArray(next)) {\n    return !shallowCompare(next, prev);\n  }\n  return false;\n}\nfunction createTypeState(isActive = false) {\n  return {\n    isActive,\n    protectedKeys: {},\n    needsAnimating: {},\n    prevResolvedValues: {}\n  };\n}\nfunction createState() {\n  return {\n    animate: createTypeState(true),\n    whileInView: createTypeState(),\n    whileHover: createTypeState(),\n    whileTap: createTypeState(),\n    whileDrag: createTypeState(),\n    whileFocus: createTypeState(),\n    exit: createTypeState()\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/Feature.mjs\nvar Feature = class {\n  constructor(node) {\n    this.isMounted = false;\n    this.node = node;\n  }\n  update() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs\nvar AnimationFeature = class extends Feature {\n  /**\n   * We dynamically generate the AnimationState manager as it contains a reference\n   * to the underlying animation library. We only want to load that if we load this,\n   * so people can optionally code split it out using the `m` component.\n   */\n  constructor(node) {\n    super(node);\n    node.animationState || (node.animationState = createAnimationState(node));\n  }\n  updateAnimationControlsSubscription() {\n    const { animate: animate2 } = this.node.getProps();\n    if (isAnimationControls(animate2)) {\n      this.unmountControls = animate2.subscribe(this.node);\n    }\n  }\n  /**\n   * Subscribe any provided AnimationControls to the component's VisualElement\n   */\n  mount() {\n    this.updateAnimationControlsSubscription();\n  }\n  update() {\n    const { animate: animate2 } = this.node.getProps();\n    const { animate: prevAnimate } = this.node.prevProps || {};\n    if (animate2 !== prevAnimate) {\n      this.updateAnimationControlsSubscription();\n    }\n  }\n  unmount() {\n    var _a;\n    this.node.animationState.reset();\n    (_a = this.unmountControls) === null || _a === void 0 ? void 0 : _a.call(this);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs\nvar id = 0;\nvar ExitAnimationFeature = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.id = id++;\n  }\n  update() {\n    if (!this.node.presenceContext)\n      return;\n    const { isPresent: isPresent2, onExitComplete } = this.node.presenceContext;\n    const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n    if (!this.node.animationState || isPresent2 === prevIsPresent) {\n      return;\n    }\n    const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent2);\n    if (onExitComplete && !isPresent2) {\n      exitAnimation.then(() => onExitComplete(this.id));\n    }\n  }\n  mount() {\n    const { register } = this.node.presenceContext || {};\n    if (register) {\n      this.unmount = register(this.id);\n    }\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animations.mjs\nvar animations = {\n  animation: {\n    Feature: AnimationFeature\n  },\n  exit: {\n    Feature: ExitAnimationFeature\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs\nvar isPrimaryPointer = (event) => {\n  if (event.pointerType === \"mouse\") {\n    return typeof event.button !== \"number\" || event.button <= 0;\n  } else {\n    return event.isPrimary !== false;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/events/event-info.mjs\nfunction extractEventInfo(event, pointType = \"page\") {\n  return {\n    point: {\n      x: event[`${pointType}X`],\n      y: event[`${pointType}Y`]\n    }\n  };\n}\nvar addPointerInfo = (handler) => {\n  return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\n// ../../../node_modules/framer-motion/dist/es/events/add-dom-event.mjs\nfunction addDomEvent(target, eventName, handler, options = { passive: true }) {\n  target.addEventListener(eventName, handler, options);\n  return () => target.removeEventListener(eventName, handler);\n}\n\n// ../../../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs\nfunction addPointerEvent(target, eventName, handler, options) {\n  return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/distance.mjs\nvar distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n  const xDelta = distance(a.x, b.x);\n  const yDelta = distance(a.y, b.y);\n  return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs\nfunction createLock(name) {\n  let lock = null;\n  return () => {\n    const openLock = () => {\n      lock = null;\n    };\n    if (lock === null) {\n      lock = name;\n      return openLock;\n    }\n    return false;\n  };\n}\nvar globalHorizontalLock = createLock(\"dragHorizontal\");\nvar globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag2) {\n  let lock = false;\n  if (drag2 === \"y\") {\n    lock = globalVerticalLock();\n  } else if (drag2 === \"x\") {\n    lock = globalHorizontalLock();\n  } else {\n    const openHorizontal = globalHorizontalLock();\n    const openVertical = globalVerticalLock();\n    if (openHorizontal && openVertical) {\n      lock = () => {\n        openHorizontal();\n        openVertical();\n      };\n    } else {\n      if (openHorizontal)\n        openHorizontal();\n      if (openVertical)\n        openVertical();\n    }\n  }\n  return lock;\n}\nfunction isDragActive() {\n  const openGestureLock = getGlobalLock(true);\n  if (!openGestureLock)\n    return true;\n  openGestureLock();\n  return false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs\nvar SCALE_PRECISION = 1e-4;\nvar SCALE_MIN = 1 - SCALE_PRECISION;\nvar SCALE_MAX = 1 + SCALE_PRECISION;\nvar TRANSLATE_PRECISION = 0.01;\nvar TRANSLATE_MIN = 0 - TRANSLATE_PRECISION;\nvar TRANSLATE_MAX = 0 + TRANSLATE_PRECISION;\nfunction calcLength(axis) {\n  return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n  return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n  delta.origin = origin;\n  delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n  delta.scale = calcLength(target) / calcLength(source);\n  delta.translate = mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n  if (delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX || isNaN(delta.scale)) {\n    delta.scale = 1;\n  }\n  if (delta.translate >= TRANSLATE_MIN && delta.translate <= TRANSLATE_MAX || isNaN(delta.translate)) {\n    delta.translate = 0;\n  }\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n  calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : void 0);\n  calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : void 0);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n  target.min = parent.min + relative.min;\n  target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n  calcRelativeAxis(target.x, relative.x, parent.x);\n  calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout2, parent) {\n  target.min = layout2.min - parent.min;\n  target.max = target.min + calcLength(layout2);\n}\nfunction calcRelativePosition(target, layout2, parent) {\n  calcRelativeAxisPosition(target.x, layout2.x, parent.x);\n  calcRelativeAxisPosition(target.y, layout2.y, parent.y);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/models.mjs\nvar createAxisDelta = () => ({\n  translate: 0,\n  scale: 1,\n  origin: 0,\n  originPoint: 0\n});\nvar createDelta = () => ({\n  x: createAxisDelta(),\n  y: createAxisDelta()\n});\nvar createAxis = () => ({ min: 0, max: 0 });\nvar createBox = () => ({\n  x: createAxis(),\n  y: createAxis()\n});\n\n// ../../../node_modules/framer-motion/dist/es/context/PresenceContext.mjs\nimport { createContext } from \"react\";\nvar PresenceContext = createContext(null);\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs\nimport { useContext, useId, useEffect, useCallback } from \"react\";\nfunction usePresence() {\n  const context = useContext(PresenceContext);\n  if (context === null)\n    return [true, null];\n  const { isPresent: isPresent2, onExitComplete, register } = context;\n  const id4 = useId();\n  useEffect(() => register(id4), []);\n  const safeToRemove = useCallback(() => onExitComplete && onExitComplete(id4), [id4, onExitComplete]);\n  return !isPresent2 && onExitComplete ? [false, safeToRemove] : [true];\n}\nfunction useIsPresent() {\n  return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n  return context === null ? true : context.isPresent;\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs\nimport { createContext as createContext2 } from \"react\";\nvar LayoutGroupContext = createContext2({});\n\n// ../../../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs\nimport { createContext as createContext3 } from \"react\";\nvar SwitchLayoutGroupContext = createContext3({});\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs\nvar scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n  Object.assign(scaleCorrectors, correctors);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs\nvar compareByDepth = (a, b) => a.depth - b.depth;\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs\nvar FlatTree = class {\n  constructor() {\n    this.children = [];\n    this.isDirty = false;\n  }\n  add(child) {\n    addUniqueItem(this.children, child);\n    this.isDirty = true;\n  }\n  remove(child) {\n    removeItem(this.children, child);\n    this.isDirty = true;\n  }\n  forEach(callback) {\n    this.isDirty && this.children.sort(compareByDepth);\n    this.isDirty = false;\n    this.children.forEach(callback);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs\nfunction resolveMotionValue(value) {\n  const unwrappedValue = isMotionValue(value) ? value.get() : value;\n  return isCustomValue(unwrappedValue) ? unwrappedValue.toValue() : unwrappedValue;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/delay.mjs\nfunction delay(callback, timeout) {\n  const start = time.now();\n  const checkElapsed = ({ timestamp }) => {\n    const elapsed = timestamp - start;\n    if (elapsed >= timeout) {\n      cancelFrame(checkElapsed);\n      callback(elapsed - timeout);\n    }\n  };\n  frame.read(checkElapsed, true);\n  return () => cancelFrame(checkElapsed);\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs\nimport { createContext as createContext4 } from \"react\";\nvar MotionConfigContext = createContext4({\n  transformPagePoint: (p) => p,\n  isStatic: false,\n  reducedMotion: \"never\"\n});\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs\nimport { createContext as createContext5 } from \"react\";\nvar MotionContext = createContext5({});\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-browser.mjs\nvar isBrowser = typeof window !== \"undefined\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs\nimport { useLayoutEffect, useEffect as useEffect2 } from \"react\";\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect2;\n\n// ../../../node_modules/framer-motion/dist/es/motion/index.mjs\nimport { jsxs, jsx } from \"react/jsx-runtime\";\nimport { forwardRef, useContext as useContext4 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs\nimport { useContext as useContext2, useRef, useInsertionEffect, useEffect as useEffect3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/LazyContext.mjs\nimport { createContext as createContext6 } from \"react\";\nvar LazyContext = createContext6({ strict: false });\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/microtask.mjs\nvar { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs\nfunction isRefObject(ref) {\n  return ref && typeof ref === \"object\" && Object.prototype.hasOwnProperty.call(ref, \"current\");\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs\nfunction useVisualElement(Component3, visualState, props, createVisualElement, ProjectionNodeConstructor) {\n  var _a, _b;\n  const { visualElement: parent } = useContext2(MotionContext);\n  const lazyContext = useContext2(LazyContext);\n  const presenceContext = useContext2(PresenceContext);\n  const reducedMotionConfig = useContext2(MotionConfigContext).reducedMotion;\n  const visualElementRef = useRef();\n  createVisualElement = createVisualElement || lazyContext.renderer;\n  if (!visualElementRef.current && createVisualElement) {\n    visualElementRef.current = createVisualElement(Component3, {\n      visualState,\n      parent,\n      props,\n      presenceContext,\n      blockInitialAnimation: presenceContext ? presenceContext.initial === false : false,\n      reducedMotionConfig\n    });\n  }\n  const visualElement = visualElementRef.current;\n  const initialLayoutGroupConfig = useContext2(SwitchLayoutGroupContext);\n  if (visualElement && !visualElement.projection && ProjectionNodeConstructor && (visualElement.type === \"html\" || visualElement.type === \"svg\")) {\n    createProjectionNode(visualElementRef.current, props, ProjectionNodeConstructor, initialLayoutGroupConfig);\n  }\n  useInsertionEffect(() => {\n    visualElement && visualElement.update(props, presenceContext);\n  });\n  const optimisedAppearId = props[optimizedAppearDataAttribute];\n  const wantsHandoff = useRef(Boolean(optimisedAppearId) && !((_a = window.MotionHandoffIsComplete) === null || _a === void 0 ? void 0 : _a.call(window, optimisedAppearId)) && ((_b = window.MotionHasOptimisedAnimation) === null || _b === void 0 ? void 0 : _b.call(window, optimisedAppearId)));\n  useIsomorphicLayoutEffect(() => {\n    if (!visualElement)\n      return;\n    window.MotionIsMounted = true;\n    visualElement.updateFeatures();\n    microtask.render(visualElement.render);\n    if (wantsHandoff.current && visualElement.animationState) {\n      visualElement.animationState.animateChanges();\n    }\n  });\n  useEffect3(() => {\n    if (!visualElement)\n      return;\n    if (!wantsHandoff.current && visualElement.animationState) {\n      visualElement.animationState.animateChanges();\n    }\n    if (wantsHandoff.current) {\n      queueMicrotask(() => {\n        var _a2;\n        (_a2 = window.MotionHandoffMarkAsComplete) === null || _a2 === void 0 ? void 0 : _a2.call(window, optimisedAppearId);\n      });\n      wantsHandoff.current = false;\n    }\n  });\n  return visualElement;\n}\nfunction createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {\n  const { layoutId, layout: layout2, drag: drag2, dragConstraints, layoutScroll, layoutRoot } = props;\n  visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props[\"data-framer-portal-id\"] ? void 0 : getClosestProjectingNode(visualElement.parent));\n  visualElement.projection.setOptions({\n    layoutId,\n    layout: layout2,\n    alwaysMeasureLayout: Boolean(drag2) || dragConstraints && isRefObject(dragConstraints),\n    visualElement,\n    /**\n     * TODO: Update options in an effect. This could be tricky as it'll be too late\n     * to update by the time layout animations run.\n     * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n     * ensuring it gets called if there's no potential layout animations.\n     *\n     */\n    animationType: typeof layout2 === \"string\" ? layout2 : \"both\",\n    initialPromotionConfig,\n    layoutScroll,\n    layoutRoot\n  });\n}\nfunction getClosestProjectingNode(visualElement) {\n  if (!visualElement)\n    return void 0;\n  return visualElement.options.allowProjection !== false ? visualElement.projection : getClosestProjectingNode(visualElement.parent);\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs\nimport { useCallback as useCallback2 } from \"react\";\nfunction useMotionRef(visualState, visualElement, externalRef) {\n  return useCallback2(\n    (instance) => {\n      instance && visualState.mount && visualState.mount(instance);\n      if (visualElement) {\n        if (instance) {\n          visualElement.mount(instance);\n        } else {\n          visualElement.unmount();\n        }\n      }\n      if (externalRef) {\n        if (typeof externalRef === \"function\") {\n          externalRef(instance);\n        } else if (isRefObject(externalRef)) {\n          externalRef.current = instance;\n        }\n      }\n    },\n    /**\n     * Only pass a new ref callback to React if we've received a visual element\n     * factory. Otherwise we'll be mounting/remounting every time externalRef\n     * or other dependencies change.\n     */\n    [visualElement]\n  );\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs\nimport { useContext as useContext3, useMemo } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs\nfunction isControllingVariants(props) {\n  return isAnimationControls(props.animate) || variantProps.some((name) => isVariantLabel(props[name]));\n}\nfunction isVariantNode(props) {\n  return Boolean(isControllingVariants(props) || props.variants);\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs\nfunction getCurrentTreeVariants(props, context) {\n  if (isControllingVariants(props)) {\n    const { initial, animate: animate2 } = props;\n    return {\n      initial: initial === false || isVariantLabel(initial) ? initial : void 0,\n      animate: isVariantLabel(animate2) ? animate2 : void 0\n    };\n  }\n  return props.inherit !== false ? context : {};\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs\nfunction useCreateMotionContext(props) {\n  const { initial, animate: animate2 } = getCurrentTreeVariants(props, useContext3(MotionContext));\n  return useMemo(() => ({ initial, animate: animate2 }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate2)]);\n}\nfunction variantLabelsAsDependency(prop) {\n  return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/definitions.mjs\nvar featureProps = {\n  animation: [\n    \"animate\",\n    \"variants\",\n    \"whileHover\",\n    \"whileTap\",\n    \"exit\",\n    \"whileInView\",\n    \"whileFocus\",\n    \"whileDrag\"\n  ],\n  exit: [\"exit\"],\n  drag: [\"drag\", \"dragControls\"],\n  focus: [\"whileFocus\"],\n  hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n  tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n  pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n  inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n  layout: [\"layout\", \"layoutId\"]\n};\nvar featureDefinitions = {};\nfor (const key in featureProps) {\n  featureDefinitions[key] = {\n    isEnabled: (props) => featureProps[key].some((name) => !!props[name])\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/load-features.mjs\nfunction loadFeatures(features) {\n  for (const key in features) {\n    featureDefinitions[key] = {\n      ...featureDefinitions[key],\n      ...features[key]\n    };\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs\nvar motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\n// ../../../node_modules/framer-motion/dist/es/motion/index.mjs\nfunction createRendererMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState: useVisualState2, Component: Component3 }) {\n  preloadedFeatures && loadFeatures(preloadedFeatures);\n  function MotionComponent(props, externalRef) {\n    let MeasureLayout2;\n    const configAndProps = {\n      ...useContext4(MotionConfigContext),\n      ...props,\n      layoutId: useLayoutId(props)\n    };\n    const { isStatic } = configAndProps;\n    const context = useCreateMotionContext(props);\n    const visualState = useVisualState2(props, isStatic);\n    if (!isStatic && isBrowser) {\n      useStrictMode(configAndProps, preloadedFeatures);\n      const layoutProjection = getProjectionFunctionality(configAndProps);\n      MeasureLayout2 = layoutProjection.MeasureLayout;\n      context.visualElement = useVisualElement(Component3, visualState, configAndProps, createVisualElement, layoutProjection.ProjectionNode);\n    }\n    return jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout2 && context.visualElement ? jsx(MeasureLayout2, { visualElement: context.visualElement, ...configAndProps }) : null, useRender(Component3, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)] });\n  }\n  const ForwardRefMotionComponent = forwardRef(MotionComponent);\n  ForwardRefMotionComponent[motionComponentSymbol] = Component3;\n  return ForwardRefMotionComponent;\n}\nfunction useLayoutId({ layoutId }) {\n  const layoutGroupId = useContext4(LayoutGroupContext).id;\n  return layoutGroupId && layoutId !== void 0 ? layoutGroupId + \"-\" + layoutId : layoutId;\n}\nfunction useStrictMode(configAndProps, preloadedFeatures) {\n  const isStrict = useContext4(LazyContext).strict;\n  if (false) {\n    const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n    configAndProps.ignoreStrict ? warning(false, strictMessage) : invariant(false, strictMessage);\n  }\n}\nfunction getProjectionFunctionality(props) {\n  const { drag: drag2, layout: layout2 } = featureDefinitions;\n  if (!drag2 && !layout2)\n    return {};\n  const combined = { ...drag2, ...layout2 };\n  return {\n    MeasureLayout: (drag2 === null || drag2 === void 0 ? void 0 : drag2.isEnabled(props)) || (layout2 === null || layout2 === void 0 ? void 0 : layout2.isEnabled(props)) ? combined.MeasureLayout : void 0,\n    ProjectionNode: combined.ProjectionNode\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs\nimport { useContext as useContext5 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-constant.mjs\nimport { useRef as useRef2 } from \"react\";\nfunction useConstant(init) {\n  const ref = useRef2(null);\n  if (ref.current === null) {\n    ref.current = init();\n  }\n  return ref.current;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs\nfunction makeState({ applyWillChange = false, scrapeMotionValuesFromProps: scrapeMotionValuesFromProps3, createRenderState, onMount }, props, context, presenceContext, isStatic) {\n  const state2 = {\n    latestValues: makeLatestValues(props, context, presenceContext, isStatic ? false : applyWillChange, scrapeMotionValuesFromProps3),\n    renderState: createRenderState()\n  };\n  if (onMount) {\n    state2.mount = (instance) => onMount(props, instance, state2);\n  }\n  return state2;\n}\nvar makeUseVisualState = (config) => (props, isStatic) => {\n  const context = useContext5(MotionContext);\n  const presenceContext = useContext5(PresenceContext);\n  const make = () => makeState(config, props, context, presenceContext, isStatic);\n  return isStatic ? make() : useConstant(make);\n};\nfunction forEachDefinition(props, definition, callback) {\n  const list = Array.isArray(definition) ? definition : [definition];\n  for (let i = 0; i < list.length; i++) {\n    const resolved = resolveVariantFromProps(props, list[i]);\n    if (resolved) {\n      const { transitionEnd, transition, ...target } = resolved;\n      callback(target, transitionEnd);\n    }\n  }\n}\nfunction makeLatestValues(props, context, presenceContext, shouldApplyWillChange, scrapeMotionValues) {\n  var _a;\n  const values = {};\n  let applyWillChange = shouldApplyWillChange && ((_a = props.style) === null || _a === void 0 ? void 0 : _a.willChange) === void 0;\n  const motionValues = scrapeMotionValues(props, {});\n  for (const key in motionValues) {\n    values[key] = resolveMotionValue(motionValues[key]);\n  }\n  let { initial, animate: animate2 } = props;\n  const isControllingVariants$1 = isControllingVariants(props);\n  const isVariantNode$1 = isVariantNode(props);\n  if (context && isVariantNode$1 && !isControllingVariants$1 && props.inherit !== false) {\n    if (initial === void 0)\n      initial = context.initial;\n    if (animate2 === void 0)\n      animate2 = context.animate;\n  }\n  let isInitialAnimationBlocked = presenceContext ? presenceContext.initial === false : false;\n  isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n  const variantToSet = isInitialAnimationBlocked ? animate2 : initial;\n  if (variantToSet && typeof variantToSet !== \"boolean\" && !isAnimationControls(variantToSet)) {\n    forEachDefinition(props, variantToSet, (target, transitionEnd) => {\n      for (const key in target) {\n        let valueTarget = target[key];\n        if (Array.isArray(valueTarget)) {\n          const index = isInitialAnimationBlocked ? valueTarget.length - 1 : 0;\n          valueTarget = valueTarget[index];\n        }\n        if (valueTarget !== null) {\n          values[key] = valueTarget;\n        }\n      }\n      for (const key in transitionEnd) {\n        values[key] = transitionEnd[key];\n      }\n    });\n  }\n  if (applyWillChange) {\n    if (animate2 && initial !== false && !isAnimationControls(animate2)) {\n      forEachDefinition(props, animate2, (target) => {\n        for (const key in target) {\n          const willChangeName = getWillChangeName(key);\n          if (willChangeName) {\n            values.willChange = \"transform\";\n            return;\n          }\n        }\n      });\n    }\n  }\n  return values;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs\nvar getValueAsType = (value, type) => {\n  return type && typeof value === \"number\" ? type.transform(value) : value;\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs\nvar translateAlias = {\n  x: \"translateX\",\n  y: \"translateY\",\n  z: \"translateZ\",\n  transformPerspective: \"perspective\"\n};\nvar numTransforms = transformPropOrder.length;\nfunction buildTransform(latestValues, transform2, transformTemplate) {\n  let transformString = \"\";\n  let transformIsDefault = true;\n  for (let i = 0; i < numTransforms; i++) {\n    const key = transformPropOrder[i];\n    const value = latestValues[key];\n    if (value === void 0)\n      continue;\n    let valueIsDefault = true;\n    if (typeof value === \"number\") {\n      valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n    } else {\n      valueIsDefault = parseFloat(value) === 0;\n    }\n    if (!valueIsDefault || transformTemplate) {\n      const valueAsType = getValueAsType(value, numberValueTypes[key]);\n      if (!valueIsDefault) {\n        transformIsDefault = false;\n        const transformName = translateAlias[key] || key;\n        transformString += `${transformName}(${valueAsType}) `;\n      }\n      if (transformTemplate) {\n        transform2[key] = valueAsType;\n      }\n    }\n  }\n  transformString = transformString.trim();\n  if (transformTemplate) {\n    transformString = transformTemplate(transform2, transformIsDefault ? \"\" : transformString);\n  } else if (transformIsDefault) {\n    transformString = \"none\";\n  }\n  return transformString;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs\nvar validMotionProps = /* @__PURE__ */ new Set([\n  \"animate\",\n  \"exit\",\n  \"variants\",\n  \"initial\",\n  \"style\",\n  \"values\",\n  \"variants\",\n  \"transition\",\n  \"transformTemplate\",\n  \"custom\",\n  \"inherit\",\n  \"onBeforeLayoutMeasure\",\n  \"onAnimationStart\",\n  \"onAnimationComplete\",\n  \"onUpdate\",\n  \"onDragStart\",\n  \"onDrag\",\n  \"onDragEnd\",\n  \"onMeasureDragConstraints\",\n  \"onDirectionLock\",\n  \"onDragTransitionEnd\",\n  \"_dragX\",\n  \"_dragY\",\n  \"onHoverStart\",\n  \"onHoverEnd\",\n  \"onViewportEnter\",\n  \"onViewportLeave\",\n  \"globalTapTarget\",\n  \"ignoreStrict\",\n  \"viewport\"\n]);\nfunction isValidMotionProp(key) {\n  return key.startsWith(\"while\") || key.startsWith(\"drag\") && key !== \"draggable\" || key.startsWith(\"layout\") || key.startsWith(\"onTap\") || key.startsWith(\"onPan\") || key.startsWith(\"onLayout\") || validMotionProps.has(key);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs\nvar shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n  if (!isValidProp)\n    return;\n  shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\ntry {\n  loadExternalIsValidProp(require_is_prop_valid_browser_cjs().default);\n} catch (_a) {\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n  const filteredProps = {};\n  for (const key in props) {\n    if (key === \"values\" && typeof props.values === \"object\")\n      continue;\n    if (shouldForward(key) || forwardMotionProps === true && isValidMotionProp(key) || !isDom && !isValidMotionProp(key) || // If trying to use native HTML drag events, forward drag listeners\n    props[\"draggable\"] && key.startsWith(\"onDrag\")) {\n      filteredProps[key] = props[key];\n    }\n  }\n  return filteredProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/store.mjs\nvar visualElementStore = /* @__PURE__ */ new WeakMap();\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs\nvar prefersReducedMotion = { current: null };\nvar hasReducedMotionListener = { current: false };\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs\nfunction initPrefersReducedMotion() {\n  hasReducedMotionListener.current = true;\n  if (!isBrowser)\n    return;\n  if (window.matchMedia) {\n    const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n    const setReducedMotionPreferences = () => prefersReducedMotion.current = motionMediaQuery.matches;\n    motionMediaQuery.addListener(setReducedMotionPreferences);\n    setReducedMotionPreferences();\n  } else {\n    prefersReducedMotion.current = false;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs\nfunction updateMotionValuesFromProps(element, next, prev) {\n  for (const key in next) {\n    const nextValue = next[key];\n    const prevValue = prev[key];\n    if (isMotionValue(nextValue)) {\n      element.addValue(key, nextValue);\n      if (false) {\n        warnOnce(nextValue.version === \"11.11.7\", `Attempting to mix Framer Motion versions ${nextValue.version} with 11.11.7 may not work as expected.`);\n      }\n    } else if (isMotionValue(prevValue)) {\n      element.addValue(key, motionValue(nextValue, { owner: element }));\n    } else if (prevValue !== nextValue) {\n      if (element.hasValue(key)) {\n        const existingValue = element.getValue(key);\n        if (existingValue.liveStyle === true) {\n          existingValue.jump(nextValue);\n        } else if (!existingValue.hasAnimated) {\n          existingValue.set(nextValue);\n        }\n      } else {\n        const latestValue = element.getStaticValue(key);\n        element.addValue(key, motionValue(latestValue !== void 0 ? latestValue : nextValue, { owner: element }));\n      }\n    }\n  }\n  for (const key in prev) {\n    if (next[key] === void 0)\n      element.removeValue(key);\n  }\n  return next;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs\nvar valueTypes = [...dimensionValueTypes, color, complex];\nvar findValueType = (v) => valueTypes.find(testValueType(v));\n\n// ../../../node_modules/framer-motion/dist/es/render/VisualElement.mjs\nvar propEventHandlers = [\n  \"AnimationStart\",\n  \"AnimationComplete\",\n  \"Update\",\n  \"BeforeLayoutMeasure\",\n  \"LayoutMeasure\",\n  \"LayoutAnimationStart\",\n  \"LayoutAnimationComplete\"\n];\nvar VisualElement = class {\n  /**\n   * This method takes React props and returns found MotionValues. For example, HTML\n   * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n   *\n   * This isn't an abstract method as it needs calling in the constructor, but it is\n   * intended to be one.\n   */\n  scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {\n    return {};\n  }\n  constructor({ parent, props, presenceContext, reducedMotionConfig, blockInitialAnimation, visualState }, options = {}) {\n    this.applyWillChange = false;\n    this.current = null;\n    this.children = /* @__PURE__ */ new Set();\n    this.isVariantNode = false;\n    this.isControllingVariants = false;\n    this.shouldReduceMotion = null;\n    this.values = /* @__PURE__ */ new Map();\n    this.KeyframeResolver = KeyframeResolver;\n    this.features = {};\n    this.valueSubscriptions = /* @__PURE__ */ new Map();\n    this.prevMotionValues = {};\n    this.events = {};\n    this.propEventSubscriptions = {};\n    this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n    this.render = () => {\n      if (!this.current)\n        return;\n      this.triggerBuild();\n      this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n    };\n    this.renderScheduledAt = 0;\n    this.scheduleRender = () => {\n      const now2 = time.now();\n      if (this.renderScheduledAt < now2) {\n        this.renderScheduledAt = now2;\n        frame.render(this.render, false, true);\n      }\n    };\n    const { latestValues, renderState } = visualState;\n    this.latestValues = latestValues;\n    this.baseTarget = { ...latestValues };\n    this.initialValues = props.initial ? { ...latestValues } : {};\n    this.renderState = renderState;\n    this.parent = parent;\n    this.props = props;\n    this.presenceContext = presenceContext;\n    this.depth = parent ? parent.depth + 1 : 0;\n    this.reducedMotionConfig = reducedMotionConfig;\n    this.options = options;\n    this.blockInitialAnimation = Boolean(blockInitialAnimation);\n    this.isControllingVariants = isControllingVariants(props);\n    this.isVariantNode = isVariantNode(props);\n    if (this.isVariantNode) {\n      this.variantChildren = /* @__PURE__ */ new Set();\n    }\n    this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n    const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);\n    for (const key in initialMotionValues) {\n      const value = initialMotionValues[key];\n      if (latestValues[key] !== void 0 && isMotionValue(value)) {\n        value.set(latestValues[key], false);\n      }\n    }\n  }\n  mount(instance) {\n    this.current = instance;\n    visualElementStore.set(instance, this);\n    if (this.projection && !this.projection.instance) {\n      this.projection.mount(instance);\n    }\n    if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n      this.removeFromVariantTree = this.parent.addVariantChild(this);\n    }\n    this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n    if (!hasReducedMotionListener.current) {\n      initPrefersReducedMotion();\n    }\n    this.shouldReduceMotion = this.reducedMotionConfig === \"never\" ? false : this.reducedMotionConfig === \"always\" ? true : prefersReducedMotion.current;\n    if (false) {\n      warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n    }\n    if (this.parent)\n      this.parent.children.add(this);\n    this.update(this.props, this.presenceContext);\n  }\n  unmount() {\n    visualElementStore.delete(this.current);\n    this.projection && this.projection.unmount();\n    cancelFrame(this.notifyUpdate);\n    cancelFrame(this.render);\n    this.valueSubscriptions.forEach((remove) => remove());\n    this.valueSubscriptions.clear();\n    this.removeFromVariantTree && this.removeFromVariantTree();\n    this.parent && this.parent.children.delete(this);\n    for (const key in this.events) {\n      this.events[key].clear();\n    }\n    for (const key in this.features) {\n      const feature = this.features[key];\n      if (feature) {\n        feature.unmount();\n        feature.isMounted = false;\n      }\n    }\n    this.current = null;\n  }\n  bindToMotionValue(key, value) {\n    if (this.valueSubscriptions.has(key)) {\n      this.valueSubscriptions.get(key)();\n    }\n    const valueIsTransform = transformProps.has(key);\n    const removeOnChange = value.on(\"change\", (latestValue) => {\n      this.latestValues[key] = latestValue;\n      this.props.onUpdate && frame.preRender(this.notifyUpdate);\n      if (valueIsTransform && this.projection) {\n        this.projection.isTransformDirty = true;\n      }\n    });\n    const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n    let removeSyncCheck;\n    if (window.MotionCheckAppearSync) {\n      removeSyncCheck = window.MotionCheckAppearSync(this, key, value);\n    }\n    this.valueSubscriptions.set(key, () => {\n      removeOnChange();\n      removeOnRenderRequest();\n      if (removeSyncCheck)\n        removeSyncCheck();\n      if (value.owner)\n        value.stop();\n    });\n  }\n  sortNodePosition(other) {\n    if (!this.current || !this.sortInstanceNodePosition || this.type !== other.type) {\n      return 0;\n    }\n    return this.sortInstanceNodePosition(this.current, other.current);\n  }\n  updateFeatures() {\n    let key = \"animation\";\n    for (key in featureDefinitions) {\n      const featureDefinition = featureDefinitions[key];\n      if (!featureDefinition)\n        continue;\n      const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n      if (!this.features[key] && FeatureConstructor && isEnabled(this.props)) {\n        this.features[key] = new FeatureConstructor(this);\n      }\n      if (this.features[key]) {\n        const feature = this.features[key];\n        if (feature.isMounted) {\n          feature.update();\n        } else {\n          feature.mount();\n          feature.isMounted = true;\n        }\n      }\n    }\n  }\n  triggerBuild() {\n    this.build(this.renderState, this.latestValues, this.props);\n  }\n  /**\n   * Measure the current viewport box with or without transforms.\n   * Only measures axis-aligned boxes, rotate and skew must be manually\n   * removed with a re-render to work.\n   */\n  measureViewportBox() {\n    return this.current ? this.measureInstanceViewportBox(this.current, this.props) : createBox();\n  }\n  getStaticValue(key) {\n    return this.latestValues[key];\n  }\n  setStaticValue(key, value) {\n    this.latestValues[key] = value;\n  }\n  /**\n   * Update the provided props. Ensure any newly-added motion values are\n   * added to our map, old ones removed, and listeners updated.\n   */\n  update(props, presenceContext) {\n    if (props.transformTemplate || this.props.transformTemplate) {\n      this.scheduleRender();\n    }\n    this.prevProps = this.props;\n    this.props = props;\n    this.prevPresenceContext = this.presenceContext;\n    this.presenceContext = presenceContext;\n    for (let i = 0; i < propEventHandlers.length; i++) {\n      const key = propEventHandlers[i];\n      if (this.propEventSubscriptions[key]) {\n        this.propEventSubscriptions[key]();\n        delete this.propEventSubscriptions[key];\n      }\n      const listenerName = \"on\" + key;\n      const listener = props[listenerName];\n      if (listener) {\n        this.propEventSubscriptions[key] = this.on(key, listener);\n      }\n    }\n    this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), this.prevMotionValues);\n    if (this.handleChildMotionValue) {\n      this.handleChildMotionValue();\n    }\n  }\n  getProps() {\n    return this.props;\n  }\n  /**\n   * Returns the variant definition with a given name.\n   */\n  getVariant(name) {\n    return this.props.variants ? this.props.variants[name] : void 0;\n  }\n  /**\n   * Returns the defined default transition on this component.\n   */\n  getDefaultTransition() {\n    return this.props.transition;\n  }\n  getTransformPagePoint() {\n    return this.props.transformPagePoint;\n  }\n  getClosestVariantNode() {\n    return this.isVariantNode ? this : this.parent ? this.parent.getClosestVariantNode() : void 0;\n  }\n  /**\n   * Add a child visual element to our set of children.\n   */\n  addVariantChild(child) {\n    const closestVariantNode = this.getClosestVariantNode();\n    if (closestVariantNode) {\n      closestVariantNode.variantChildren && closestVariantNode.variantChildren.add(child);\n      return () => closestVariantNode.variantChildren.delete(child);\n    }\n  }\n  /**\n   * Add a motion value and bind it to this visual element.\n   */\n  addValue(key, value) {\n    const existingValue = this.values.get(key);\n    if (value !== existingValue) {\n      if (existingValue)\n        this.removeValue(key);\n      this.bindToMotionValue(key, value);\n      this.values.set(key, value);\n      this.latestValues[key] = value.get();\n    }\n  }\n  /**\n   * Remove a motion value and unbind any active subscriptions.\n   */\n  removeValue(key) {\n    this.values.delete(key);\n    const unsubscribe = this.valueSubscriptions.get(key);\n    if (unsubscribe) {\n      unsubscribe();\n      this.valueSubscriptions.delete(key);\n    }\n    delete this.latestValues[key];\n    this.removeValueFromRenderState(key, this.renderState);\n  }\n  /**\n   * Check whether we have a motion value for this key\n   */\n  hasValue(key) {\n    return this.values.has(key);\n  }\n  getValue(key, defaultValue) {\n    if (this.props.values && this.props.values[key]) {\n      return this.props.values[key];\n    }\n    let value = this.values.get(key);\n    if (value === void 0 && defaultValue !== void 0) {\n      value = motionValue(defaultValue === null ? void 0 : defaultValue, { owner: this });\n      this.addValue(key, value);\n    }\n    return value;\n  }\n  /**\n   * If we're trying to animate to a previously unencountered value,\n   * we need to check for it in our state and as a last resort read it\n   * directly from the instance (which might have performance implications).\n   */\n  readValue(key, target) {\n    var _a;\n    let value = this.latestValues[key] !== void 0 || !this.current ? this.latestValues[key] : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key, this.options);\n    if (value !== void 0 && value !== null) {\n      if (typeof value === \"string\" && (isNumericalString(value) || isZeroValueString(value))) {\n        value = parseFloat(value);\n      } else if (!findValueType(value) && complex.test(target)) {\n        value = getAnimatableNone2(key, target);\n      }\n      this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);\n    }\n    return isMotionValue(value) ? value.get() : value;\n  }\n  /**\n   * Set the base target to later animate back to. This is currently\n   * only hydrated on creation and when we first read a value.\n   */\n  setBaseTarget(key, value) {\n    this.baseTarget[key] = value;\n  }\n  /**\n   * Find the base target for a value thats been removed from all animation\n   * props.\n   */\n  getBaseTarget(key) {\n    var _a;\n    const { initial } = this.props;\n    let valueFromInitial;\n    if (typeof initial === \"string\" || typeof initial === \"object\") {\n      const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) === null || _a === void 0 ? void 0 : _a.custom);\n      if (variant) {\n        valueFromInitial = variant[key];\n      }\n    }\n    if (initial && valueFromInitial !== void 0) {\n      return valueFromInitial;\n    }\n    const target = this.getBaseTargetFromProps(this.props, key);\n    if (target !== void 0 && !isMotionValue(target))\n      return target;\n    return this.initialValues[key] !== void 0 && valueFromInitial === void 0 ? void 0 : this.baseTarget[key];\n  }\n  on(eventName, callback) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = new SubscriptionManager();\n    }\n    return this.events[eventName].add(callback);\n  }\n  notify(eventName, ...args) {\n    if (this.events[eventName]) {\n      this.events[eventName].notify(...args);\n    }\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/components/create-proxy.mjs\nfunction createDOMMotionComponentProxy(componentFactory) {\n  if (typeof Proxy === \"undefined\") {\n    return componentFactory;\n  }\n  const componentCache = /* @__PURE__ */ new Map();\n  const deprecatedFactoryFunction = (...args) => {\n    if (false) {\n      warnOnce(false, \"motion() is deprecated. Use motion.create() instead.\");\n    }\n    return componentFactory(...args);\n  };\n  return new Proxy(deprecatedFactoryFunction, {\n    /**\n     * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n     * The prop name is passed through as `key` and we can use that to generate a `motion`\n     * DOM component with that name.\n     */\n    get: (_target, key) => {\n      if (key === \"create\")\n        return componentFactory;\n      if (!componentCache.has(key)) {\n        componentCache.set(key, componentFactory(key));\n      }\n      return componentCache.get(key);\n    }\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs\nvar PanSession = class {\n  constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false } = {}) {\n    this.startEvent = null;\n    this.lastMoveEvent = null;\n    this.lastMoveEventInfo = null;\n    this.handlers = {};\n    this.contextWindow = window;\n    this.updatePoint = () => {\n      if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n        return;\n      const info2 = getPanInfo(this.lastMoveEventInfo, this.history);\n      const isPanStarted = this.startEvent !== null;\n      const isDistancePastThreshold = distance2D(info2.offset, { x: 0, y: 0 }) >= 3;\n      if (!isPanStarted && !isDistancePastThreshold)\n        return;\n      const { point: point3 } = info2;\n      const { timestamp: timestamp2 } = frameData;\n      this.history.push({ ...point3, timestamp: timestamp2 });\n      const { onStart, onMove } = this.handlers;\n      if (!isPanStarted) {\n        onStart && onStart(this.lastMoveEvent, info2);\n        this.startEvent = this.lastMoveEvent;\n      }\n      onMove && onMove(this.lastMoveEvent, info2);\n    };\n    this.handlePointerMove = (event2, info2) => {\n      this.lastMoveEvent = event2;\n      this.lastMoveEventInfo = transformPoint(info2, this.transformPagePoint);\n      frame.update(this.updatePoint, true);\n    };\n    this.handlePointerUp = (event2, info2) => {\n      this.end();\n      const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n      if (this.dragSnapToOrigin)\n        resumeAnimation && resumeAnimation();\n      if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n        return;\n      const panInfo = getPanInfo(event2.type === \"pointercancel\" ? this.lastMoveEventInfo : transformPoint(info2, this.transformPagePoint), this.history);\n      if (this.startEvent && onEnd) {\n        onEnd(event2, panInfo);\n      }\n      onSessionEnd && onSessionEnd(event2, panInfo);\n    };\n    if (!isPrimaryPointer(event))\n      return;\n    this.dragSnapToOrigin = dragSnapToOrigin;\n    this.handlers = handlers;\n    this.transformPagePoint = transformPagePoint;\n    this.contextWindow = contextWindow || window;\n    const info = extractEventInfo(event);\n    const initialInfo = transformPoint(info, this.transformPagePoint);\n    const { point: point2 } = initialInfo;\n    const { timestamp } = frameData;\n    this.history = [{ ...point2, timestamp }];\n    const { onSessionStart } = handlers;\n    onSessionStart && onSessionStart(event, getPanInfo(initialInfo, this.history));\n    this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n  }\n  updateHandlers(handlers) {\n    this.handlers = handlers;\n  }\n  end() {\n    this.removeListeners && this.removeListeners();\n    cancelFrame(this.updatePoint);\n  }\n};\nfunction transformPoint(info, transformPagePoint) {\n  return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n  return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point: point2 }, history) {\n  return {\n    point: point2,\n    delta: subtractPoint(point2, lastDevicePoint(history)),\n    offset: subtractPoint(point2, startDevicePoint(history)),\n    velocity: getVelocity(history, 0.1)\n  };\n}\nfunction startDevicePoint(history) {\n  return history[0];\n}\nfunction lastDevicePoint(history) {\n  return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n  if (history.length < 2) {\n    return { x: 0, y: 0 };\n  }\n  let i = history.length - 1;\n  let timestampedPoint = null;\n  const lastPoint = lastDevicePoint(history);\n  while (i >= 0) {\n    timestampedPoint = history[i];\n    if (lastPoint.timestamp - timestampedPoint.timestamp > secondsToMilliseconds(timeDelta)) {\n      break;\n    }\n    i--;\n  }\n  if (!timestampedPoint) {\n    return { x: 0, y: 0 };\n  }\n  const time2 = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n  if (time2 === 0) {\n    return { x: 0, y: 0 };\n  }\n  const currentVelocity = {\n    x: (lastPoint.x - timestampedPoint.x) / time2,\n    y: (lastPoint.y - timestampedPoint.y) / time2\n  };\n  if (currentVelocity.x === Infinity) {\n    currentVelocity.x = 0;\n  }\n  if (currentVelocity.y === Infinity) {\n    currentVelocity.y = 0;\n  }\n  return currentVelocity;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs\nfunction applyConstraints(point2, { min, max }, elastic) {\n  if (min !== void 0 && point2 < min) {\n    point2 = elastic ? mixNumber(min, point2, elastic.min) : Math.max(point2, min);\n  } else if (max !== void 0 && point2 > max) {\n    point2 = elastic ? mixNumber(max, point2, elastic.max) : Math.min(point2, max);\n  }\n  return point2;\n}\nfunction calcRelativeAxisConstraints(axis, min, max) {\n  return {\n    min: min !== void 0 ? axis.min + min : void 0,\n    max: max !== void 0 ? axis.max + max - (axis.max - axis.min) : void 0\n  };\n}\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n  return {\n    x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n    y: calcRelativeAxisConstraints(layoutBox.y, top, bottom)\n  };\n}\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n  let min = constraintsAxis.min - layoutAxis.min;\n  let max = constraintsAxis.max - layoutAxis.max;\n  if (constraintsAxis.max - constraintsAxis.min < layoutAxis.max - layoutAxis.min) {\n    [min, max] = [max, min];\n  }\n  return { min, max };\n}\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n  return {\n    x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n    y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y)\n  };\n}\nfunction calcOrigin(source, target) {\n  let origin = 0.5;\n  const sourceLength = calcLength(source);\n  const targetLength = calcLength(target);\n  if (targetLength > sourceLength) {\n    origin = progress(target.min, target.max - sourceLength, source.min);\n  } else if (sourceLength > targetLength) {\n    origin = progress(source.min, source.max - targetLength, target.min);\n  }\n  return clamp(0, 1, origin);\n}\nfunction rebaseAxisConstraints(layout2, constraints) {\n  const relativeConstraints = {};\n  if (constraints.min !== void 0) {\n    relativeConstraints.min = constraints.min - layout2.min;\n  }\n  if (constraints.max !== void 0) {\n    relativeConstraints.max = constraints.max - layout2.min;\n  }\n  return relativeConstraints;\n}\nvar defaultElastic = 0.35;\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n  if (dragElastic === false) {\n    dragElastic = 0;\n  } else if (dragElastic === true) {\n    dragElastic = defaultElastic;\n  }\n  return {\n    x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n    y: resolveAxisElastic(dragElastic, \"top\", \"bottom\")\n  };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n  return {\n    min: resolvePointElastic(dragElastic, minLabel),\n    max: resolvePointElastic(dragElastic, maxLabel)\n  };\n}\nfunction resolvePointElastic(dragElastic, label) {\n  return typeof dragElastic === \"number\" ? dragElastic : dragElastic[label] || 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs\nfunction eachAxis(callback) {\n  return [callback(\"x\"), callback(\"y\")];\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs\nfunction convertBoundingBoxToBox({ top, left, right, bottom }) {\n  return {\n    x: { min: left, max: right },\n    y: { min: top, max: bottom }\n  };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n  return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\nfunction transformBoxPoints(point2, transformPoint2) {\n  if (!transformPoint2)\n    return point2;\n  const topLeft = transformPoint2({ x: point2.left, y: point2.top });\n  const bottomRight = transformPoint2({ x: point2.right, y: point2.bottom });\n  return {\n    top: topLeft.y,\n    left: topLeft.x,\n    bottom: bottomRight.y,\n    right: bottomRight.x\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs\nfunction isIdentityScale(scale2) {\n  return scale2 === void 0 || scale2 === 1;\n}\nfunction hasScale({ scale: scale2, scaleX, scaleY }) {\n  return !isIdentityScale(scale2) || !isIdentityScale(scaleX) || !isIdentityScale(scaleY);\n}\nfunction hasTransform(values) {\n  return hasScale(values) || has2DTranslate(values) || values.z || values.rotate || values.rotateX || values.rotateY || values.skewX || values.skewY;\n}\nfunction has2DTranslate(values) {\n  return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n  return value && value !== \"0%\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs\nfunction scalePoint(point2, scale2, originPoint) {\n  const distanceFromOrigin = point2 - originPoint;\n  const scaled = scale2 * distanceFromOrigin;\n  return originPoint + scaled;\n}\nfunction applyPointDelta(point2, translate, scale2, originPoint, boxScale) {\n  if (boxScale !== void 0) {\n    point2 = scalePoint(point2, boxScale, originPoint);\n  }\n  return scalePoint(point2, scale2, originPoint) + translate;\n}\nfunction applyAxisDelta(axis, translate = 0, scale2 = 1, originPoint, boxScale) {\n  axis.min = applyPointDelta(axis.min, translate, scale2, originPoint, boxScale);\n  axis.max = applyPointDelta(axis.max, translate, scale2, originPoint, boxScale);\n}\nfunction applyBoxDelta(box, { x, y }) {\n  applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n  applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\nvar TREE_SCALE_SNAP_MIN = 0.999999999999;\nvar TREE_SCALE_SNAP_MAX = 1.0000000000001;\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n  const treeLength = treePath.length;\n  if (!treeLength)\n    return;\n  treeScale.x = treeScale.y = 1;\n  let node;\n  let delta;\n  for (let i = 0; i < treeLength; i++) {\n    node = treePath[i];\n    delta = node.projectionDelta;\n    const { visualElement } = node.options;\n    if (visualElement && visualElement.props.style && visualElement.props.style.display === \"contents\") {\n      continue;\n    }\n    if (isSharedTransition && node.options.layoutScroll && node.scroll && node !== node.root) {\n      transformBox(box, {\n        x: -node.scroll.offset.x,\n        y: -node.scroll.offset.y\n      });\n    }\n    if (delta) {\n      treeScale.x *= delta.x.scale;\n      treeScale.y *= delta.y.scale;\n      applyBoxDelta(box, delta);\n    }\n    if (isSharedTransition && hasTransform(node.latestValues)) {\n      transformBox(box, node.latestValues);\n    }\n  }\n  if (treeScale.x < TREE_SCALE_SNAP_MAX && treeScale.x > TREE_SCALE_SNAP_MIN) {\n    treeScale.x = 1;\n  }\n  if (treeScale.y < TREE_SCALE_SNAP_MAX && treeScale.y > TREE_SCALE_SNAP_MIN) {\n    treeScale.y = 1;\n  }\n}\nfunction translateAxis(axis, distance2) {\n  axis.min = axis.min + distance2;\n  axis.max = axis.max + distance2;\n}\nfunction transformAxis(axis, axisTranslate, axisScale, boxScale, axisOrigin = 0.5) {\n  const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n  applyAxisDelta(axis, axisTranslate, axisScale, originPoint, boxScale);\n}\nfunction transformBox(box, transform2) {\n  transformAxis(box.x, transform2.x, transform2.scaleX, transform2.scale, transform2.originX);\n  transformAxis(box.y, transform2.y, transform2.scaleY, transform2.scale, transform2.originY);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/measure.mjs\nfunction measureViewportBox(instance, transformPoint2) {\n  return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint2));\n}\nfunction measurePageBox(element, rootProjectionNode2, transformPagePoint) {\n  const viewportBox = measureViewportBox(element, transformPagePoint);\n  const { scroll: scroll2 } = rootProjectionNode2;\n  if (scroll2) {\n    translateAxis(viewportBox.x, scroll2.offset.x);\n    translateAxis(viewportBox.y, scroll2.offset.y);\n  }\n  return viewportBox;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/get-context-window.mjs\nvar getContextWindow = ({ current }) => {\n  return current ? current.ownerDocument.defaultView : null;\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs\nvar elementDragControls = /* @__PURE__ */ new WeakMap();\nvar VisualElementDragControls = class {\n  constructor(visualElement) {\n    this.openGlobalLock = null;\n    this.isDragging = false;\n    this.currentDirection = null;\n    this.originPoint = { x: 0, y: 0 };\n    this.constraints = false;\n    this.hasMutatedConstraints = false;\n    this.elastic = createBox();\n    this.visualElement = visualElement;\n  }\n  start(originEvent, { snapToCursor = false } = {}) {\n    const { presenceContext } = this.visualElement;\n    if (presenceContext && presenceContext.isPresent === false)\n      return;\n    const onSessionStart = (event) => {\n      const { dragSnapToOrigin: dragSnapToOrigin2 } = this.getProps();\n      dragSnapToOrigin2 ? this.pauseAnimation() : this.stopAnimation();\n      if (snapToCursor) {\n        this.snapToCursor(extractEventInfo(event, \"page\").point);\n      }\n    };\n    const onStart = (event, info) => {\n      const { drag: drag2, dragPropagation, onDragStart } = this.getProps();\n      if (drag2 && !dragPropagation) {\n        if (this.openGlobalLock)\n          this.openGlobalLock();\n        this.openGlobalLock = getGlobalLock(drag2);\n        if (!this.openGlobalLock)\n          return;\n      }\n      this.isDragging = true;\n      this.currentDirection = null;\n      this.resolveConstraints();\n      if (this.visualElement.projection) {\n        this.visualElement.projection.isAnimationBlocked = true;\n        this.visualElement.projection.target = void 0;\n      }\n      eachAxis((axis) => {\n        let current = this.getAxisMotionValue(axis).get() || 0;\n        if (percent.test(current)) {\n          const { projection } = this.visualElement;\n          if (projection && projection.layout) {\n            const measuredAxis = projection.layout.layoutBox[axis];\n            if (measuredAxis) {\n              const length = calcLength(measuredAxis);\n              current = length * (parseFloat(current) / 100);\n            }\n          }\n        }\n        this.originPoint[axis] = current;\n      });\n      if (onDragStart) {\n        frame.postRender(() => onDragStart(event, info));\n      }\n      addValueToWillChange(this.visualElement, \"transform\");\n      const { animationState } = this.visualElement;\n      animationState && animationState.setActive(\"whileDrag\", true);\n    };\n    const onMove = (event, info) => {\n      const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag } = this.getProps();\n      if (!dragPropagation && !this.openGlobalLock)\n        return;\n      const { offset } = info;\n      if (dragDirectionLock && this.currentDirection === null) {\n        this.currentDirection = getCurrentDirection(offset);\n        if (this.currentDirection !== null) {\n          onDirectionLock && onDirectionLock(this.currentDirection);\n        }\n        return;\n      }\n      this.updateAxis(\"x\", info.point, offset);\n      this.updateAxis(\"y\", info.point, offset);\n      this.visualElement.render();\n      onDrag && onDrag(event, info);\n    };\n    const onSessionEnd = (event, info) => this.stop(event, info);\n    const resumeAnimation = () => eachAxis((axis) => {\n      var _a;\n      return this.getAnimationState(axis) === \"paused\" && ((_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.play());\n    });\n    const { dragSnapToOrigin } = this.getProps();\n    this.panSession = new PanSession(originEvent, {\n      onSessionStart,\n      onStart,\n      onMove,\n      onSessionEnd,\n      resumeAnimation\n    }, {\n      transformPagePoint: this.visualElement.getTransformPagePoint(),\n      dragSnapToOrigin,\n      contextWindow: getContextWindow(this.visualElement)\n    });\n  }\n  stop(event, info) {\n    const isDragging = this.isDragging;\n    this.cancel();\n    if (!isDragging)\n      return;\n    const { velocity } = info;\n    this.startAnimation(velocity);\n    const { onDragEnd } = this.getProps();\n    if (onDragEnd) {\n      frame.postRender(() => onDragEnd(event, info));\n    }\n  }\n  cancel() {\n    this.isDragging = false;\n    const { projection, animationState } = this.visualElement;\n    if (projection) {\n      projection.isAnimationBlocked = false;\n    }\n    this.panSession && this.panSession.end();\n    this.panSession = void 0;\n    const { dragPropagation } = this.getProps();\n    if (!dragPropagation && this.openGlobalLock) {\n      this.openGlobalLock();\n      this.openGlobalLock = null;\n    }\n    animationState && animationState.setActive(\"whileDrag\", false);\n  }\n  updateAxis(axis, _point, offset) {\n    const { drag: drag2 } = this.getProps();\n    if (!offset || !shouldDrag(axis, drag2, this.currentDirection))\n      return;\n    const axisValue = this.getAxisMotionValue(axis);\n    let next = this.originPoint[axis] + offset[axis];\n    if (this.constraints && this.constraints[axis]) {\n      next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n    }\n    axisValue.set(next);\n  }\n  resolveConstraints() {\n    var _a;\n    const { dragConstraints, dragElastic } = this.getProps();\n    const layout2 = this.visualElement.projection && !this.visualElement.projection.layout ? this.visualElement.projection.measure(false) : (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout;\n    const prevConstraints = this.constraints;\n    if (dragConstraints && isRefObject(dragConstraints)) {\n      if (!this.constraints) {\n        this.constraints = this.resolveRefConstraints();\n      }\n    } else {\n      if (dragConstraints && layout2) {\n        this.constraints = calcRelativeConstraints(layout2.layoutBox, dragConstraints);\n      } else {\n        this.constraints = false;\n      }\n    }\n    this.elastic = resolveDragElastic(dragElastic);\n    if (prevConstraints !== this.constraints && layout2 && this.constraints && !this.hasMutatedConstraints) {\n      eachAxis((axis) => {\n        if (this.constraints !== false && this.getAxisMotionValue(axis)) {\n          this.constraints[axis] = rebaseAxisConstraints(layout2.layoutBox[axis], this.constraints[axis]);\n        }\n      });\n    }\n  }\n  resolveRefConstraints() {\n    const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n    if (!constraints || !isRefObject(constraints))\n      return false;\n    const constraintsElement = constraints.current;\n    invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n    const { projection } = this.visualElement;\n    if (!projection || !projection.layout)\n      return false;\n    const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n    let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n    if (onMeasureDragConstraints) {\n      const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n      this.hasMutatedConstraints = !!userConstraints;\n      if (userConstraints) {\n        measuredConstraints = convertBoundingBoxToBox(userConstraints);\n      }\n    }\n    return measuredConstraints;\n  }\n  startAnimation(velocity) {\n    const { drag: drag2, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd } = this.getProps();\n    const constraints = this.constraints || {};\n    const momentumAnimations = eachAxis((axis) => {\n      if (!shouldDrag(axis, drag2, this.currentDirection)) {\n        return;\n      }\n      let transition = constraints && constraints[axis] || {};\n      if (dragSnapToOrigin)\n        transition = { min: 0, max: 0 };\n      const bounceStiffness = dragElastic ? 200 : 1e6;\n      const bounceDamping = dragElastic ? 40 : 1e7;\n      const inertia2 = {\n        type: \"inertia\",\n        velocity: dragMomentum ? velocity[axis] : 0,\n        bounceStiffness,\n        bounceDamping,\n        timeConstant: 750,\n        restDelta: 1,\n        restSpeed: 10,\n        ...dragTransition,\n        ...transition\n      };\n      return this.startAxisValueAnimation(axis, inertia2);\n    });\n    return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n  }\n  startAxisValueAnimation(axis, transition) {\n    const axisValue = this.getAxisMotionValue(axis);\n    addValueToWillChange(this.visualElement, axis);\n    return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement, false));\n  }\n  stopAnimation() {\n    eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n  }\n  pauseAnimation() {\n    eachAxis((axis) => {\n      var _a;\n      return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.pause();\n    });\n  }\n  getAnimationState(axis) {\n    var _a;\n    return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.state;\n  }\n  /**\n   * Drag works differently depending on which props are provided.\n   *\n   * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n   * - Otherwise, we apply the delta to the x/y motion values.\n   */\n  getAxisMotionValue(axis) {\n    const dragKey = `_drag${axis.toUpperCase()}`;\n    const props = this.visualElement.getProps();\n    const externalMotionValue = props[dragKey];\n    return externalMotionValue ? externalMotionValue : this.visualElement.getValue(axis, (props.initial ? props.initial[axis] : void 0) || 0);\n  }\n  snapToCursor(point2) {\n    eachAxis((axis) => {\n      const { drag: drag2 } = this.getProps();\n      if (!shouldDrag(axis, drag2, this.currentDirection))\n        return;\n      const { projection } = this.visualElement;\n      const axisValue = this.getAxisMotionValue(axis);\n      if (projection && projection.layout) {\n        const { min, max } = projection.layout.layoutBox[axis];\n        axisValue.set(point2[axis] - mixNumber(min, max, 0.5));\n      }\n    });\n  }\n  /**\n   * When the viewport resizes we want to check if the measured constraints\n   * have changed and, if so, reposition the element within those new constraints\n   * relative to where it was before the resize.\n   */\n  scalePositionWithinConstraints() {\n    if (!this.visualElement.current)\n      return;\n    const { drag: drag2, dragConstraints } = this.getProps();\n    const { projection } = this.visualElement;\n    if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n      return;\n    this.stopAnimation();\n    const boxProgress = { x: 0, y: 0 };\n    eachAxis((axis) => {\n      const axisValue = this.getAxisMotionValue(axis);\n      if (axisValue && this.constraints !== false) {\n        const latest = axisValue.get();\n        boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n      }\n    });\n    const { transformTemplate } = this.visualElement.getProps();\n    this.visualElement.current.style.transform = transformTemplate ? transformTemplate({}, \"\") : \"none\";\n    projection.root && projection.root.updateScroll();\n    projection.updateLayout();\n    this.resolveConstraints();\n    eachAxis((axis) => {\n      if (!shouldDrag(axis, drag2, null))\n        return;\n      const axisValue = this.getAxisMotionValue(axis);\n      const { min, max } = this.constraints[axis];\n      axisValue.set(mixNumber(min, max, boxProgress[axis]));\n    });\n  }\n  addListeners() {\n    if (!this.visualElement.current)\n      return;\n    elementDragControls.set(this.visualElement, this);\n    const element = this.visualElement.current;\n    const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n      const { drag: drag2, dragListener = true } = this.getProps();\n      drag2 && dragListener && this.start(event);\n    });\n    const measureDragConstraints = () => {\n      const { dragConstraints } = this.getProps();\n      if (isRefObject(dragConstraints) && dragConstraints.current) {\n        this.constraints = this.resolveRefConstraints();\n      }\n    };\n    const { projection } = this.visualElement;\n    const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n    if (projection && !projection.layout) {\n      projection.root && projection.root.updateScroll();\n      projection.updateLayout();\n    }\n    frame.read(measureDragConstraints);\n    const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n    const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged }) => {\n      if (this.isDragging && hasLayoutChanged) {\n        eachAxis((axis) => {\n          const motionValue2 = this.getAxisMotionValue(axis);\n          if (!motionValue2)\n            return;\n          this.originPoint[axis] += delta[axis].translate;\n          motionValue2.set(motionValue2.get() + delta[axis].translate);\n        });\n        this.visualElement.render();\n      }\n    });\n    return () => {\n      stopResizeListener();\n      stopPointerListener();\n      stopMeasureLayoutListener();\n      stopLayoutUpdateListener && stopLayoutUpdateListener();\n    };\n  }\n  getProps() {\n    const props = this.visualElement.getProps();\n    const { drag: drag2 = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true } = props;\n    return {\n      ...props,\n      drag: drag2,\n      dragDirectionLock,\n      dragPropagation,\n      dragConstraints,\n      dragElastic,\n      dragMomentum\n    };\n  }\n};\nfunction shouldDrag(direction, drag2, currentDirection) {\n  return (drag2 === true || drag2 === direction) && (currentDirection === null || currentDirection === direction);\n}\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n  let direction = null;\n  if (Math.abs(offset.y) > lockThreshold) {\n    direction = \"y\";\n  } else if (Math.abs(offset.x) > lockThreshold) {\n    direction = \"x\";\n  }\n  return direction;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/index.mjs\nvar DragGesture = class extends Feature {\n  constructor(node) {\n    super(node);\n    this.removeGroupControls = noop;\n    this.removeListeners = noop;\n    this.controls = new VisualElementDragControls(node);\n  }\n  mount() {\n    const { dragControls } = this.node.getProps();\n    if (dragControls) {\n      this.removeGroupControls = dragControls.subscribe(this.controls);\n    }\n    this.removeListeners = this.controls.addListeners() || noop;\n  }\n  unmount() {\n    this.removeGroupControls();\n    this.removeListeners();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/pan/index.mjs\nvar asyncHandler = (handler) => (event, info) => {\n  if (handler) {\n    frame.postRender(() => handler(event, info));\n  }\n};\nvar PanGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.removePointerDownListener = noop;\n  }\n  onPointerDown(pointerDownEvent) {\n    this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n      transformPagePoint: this.node.getTransformPagePoint(),\n      contextWindow: getContextWindow(this.node)\n    });\n  }\n  createPanHandlers() {\n    const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n    return {\n      onSessionStart: asyncHandler(onPanSessionStart),\n      onStart: asyncHandler(onPanStart),\n      onMove: onPan,\n      onEnd: (event, info) => {\n        delete this.session;\n        if (onPanEnd) {\n          frame.postRender(() => onPanEnd(event, info));\n        }\n      }\n    };\n  }\n  mount() {\n    this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n  }\n  update() {\n    this.session && this.session.updateHandlers(this.createPanHandlers());\n  }\n  unmount() {\n    this.removePointerDownListener();\n    this.session && this.session.end();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nimport { useContext as useContext6, Component } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/state.mjs\nvar globalProjectionState = {\n  /**\n   * Global flag as to whether the tree has animated since the last time\n   * we resized the window\n   */\n  hasAnimatedSinceResize: true,\n  /**\n   * We set this to true once, on the first update. Any nodes added to the tree beyond that\n   * update will be given a `data-projection-id` attribute.\n   */\n  hasEverUpdated: false\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs\nfunction pixelsToPercent(pixels, axis) {\n  if (axis.max === axis.min)\n    return 0;\n  return pixels / (axis.max - axis.min) * 100;\n}\nvar correctBorderRadius = {\n  correct: (latest, node) => {\n    if (!node.target)\n      return latest;\n    if (typeof latest === \"string\") {\n      if (px.test(latest)) {\n        latest = parseFloat(latest);\n      } else {\n        return latest;\n      }\n    }\n    const x = pixelsToPercent(latest, node.target.x);\n    const y = pixelsToPercent(latest, node.target.y);\n    return `${x}% ${y}%`;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs\nvar correctBoxShadow = {\n  correct: (latest, { treeScale, projectionDelta }) => {\n    const original = latest;\n    const shadow = complex.parse(latest);\n    if (shadow.length > 5)\n      return original;\n    const template = complex.createTransformer(latest);\n    const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n    const xScale = projectionDelta.x.scale * treeScale.x;\n    const yScale = projectionDelta.y.scale * treeScale.y;\n    shadow[0 + offset] /= xScale;\n    shadow[1 + offset] /= yScale;\n    const averageScale = mixNumber(xScale, yScale, 0.5);\n    if (typeof shadow[2 + offset] === \"number\")\n      shadow[2 + offset] /= averageScale;\n    if (typeof shadow[3 + offset] === \"number\")\n      shadow[3 + offset] /= averageScale;\n    return template(shadow);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs\nvar MeasureLayoutWithContext = class extends Component {\n  /**\n   * This only mounts projection nodes for components that\n   * need measuring, we might want to do it for all components\n   * in order to incorporate transforms\n   */\n  componentDidMount() {\n    const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n    const { projection } = visualElement;\n    addScaleCorrector(defaultScaleCorrectors);\n    if (projection) {\n      if (layoutGroup.group)\n        layoutGroup.group.add(projection);\n      if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n        switchLayoutGroup.register(projection);\n      }\n      projection.root.didUpdate();\n      projection.addEventListener(\"animationComplete\", () => {\n        this.safeToRemove();\n      });\n      projection.setOptions({\n        ...projection.options,\n        onExitComplete: () => this.safeToRemove()\n      });\n    }\n    globalProjectionState.hasEverUpdated = true;\n  }\n  getSnapshotBeforeUpdate(prevProps) {\n    const { layoutDependency, visualElement, drag: drag2, isPresent: isPresent2 } = this.props;\n    const projection = visualElement.projection;\n    if (!projection)\n      return null;\n    projection.isPresent = isPresent2;\n    if (drag2 || prevProps.layoutDependency !== layoutDependency || layoutDependency === void 0) {\n      projection.willUpdate();\n    } else {\n      this.safeToRemove();\n    }\n    if (prevProps.isPresent !== isPresent2) {\n      if (isPresent2) {\n        projection.promote();\n      } else if (!projection.relegate()) {\n        frame.postRender(() => {\n          const stack = projection.getStack();\n          if (!stack || !stack.members.length) {\n            this.safeToRemove();\n          }\n        });\n      }\n    }\n    return null;\n  }\n  componentDidUpdate() {\n    const { projection } = this.props.visualElement;\n    if (projection) {\n      projection.root.didUpdate();\n      microtask.postRender(() => {\n        if (!projection.currentAnimation && projection.isLead()) {\n          this.safeToRemove();\n        }\n      });\n    }\n  }\n  componentWillUnmount() {\n    const { visualElement, layoutGroup, switchLayoutGroup: promoteContext } = this.props;\n    const { projection } = visualElement;\n    if (projection) {\n      projection.scheduleCheckAfterUnmount();\n      if (layoutGroup && layoutGroup.group)\n        layoutGroup.group.remove(projection);\n      if (promoteContext && promoteContext.deregister)\n        promoteContext.deregister(projection);\n    }\n  }\n  safeToRemove() {\n    const { safeToRemove } = this.props;\n    safeToRemove && safeToRemove();\n  }\n  render() {\n    return null;\n  }\n};\nfunction MeasureLayout(props) {\n  const [isPresent2, safeToRemove] = usePresence();\n  const layoutGroup = useContext6(LayoutGroupContext);\n  return jsx2(MeasureLayoutWithContext, { ...props, layoutGroup, switchLayoutGroup: useContext6(SwitchLayoutGroupContext), isPresent: isPresent2, safeToRemove });\n}\nvar defaultScaleCorrectors = {\n  borderRadius: {\n    ...correctBorderRadius,\n    applyTo: [\n      \"borderTopLeftRadius\",\n      \"borderTopRightRadius\",\n      \"borderBottomLeftRadius\",\n      \"borderBottomRightRadius\"\n    ]\n  },\n  borderTopLeftRadius: correctBorderRadius,\n  borderTopRightRadius: correctBorderRadius,\n  borderBottomLeftRadius: correctBorderRadius,\n  borderBottomRightRadius: correctBorderRadius,\n  boxShadow: correctBoxShadow\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs\nvar borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nvar numBorders = borders.length;\nvar asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nvar isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress2, shouldCrossfadeOpacity, isOnlyMember) {\n  if (shouldCrossfadeOpacity) {\n    target.opacity = mixNumber(\n      0,\n      // TODO Reinstate this if only child\n      lead.opacity !== void 0 ? lead.opacity : 1,\n      easeCrossfadeIn(progress2)\n    );\n    target.opacityExit = mixNumber(follow.opacity !== void 0 ? follow.opacity : 1, 0, easeCrossfadeOut(progress2));\n  } else if (isOnlyMember) {\n    target.opacity = mixNumber(follow.opacity !== void 0 ? follow.opacity : 1, lead.opacity !== void 0 ? lead.opacity : 1, progress2);\n  }\n  for (let i = 0; i < numBorders; i++) {\n    const borderLabel = `border${borders[i]}Radius`;\n    let followRadius = getRadius(follow, borderLabel);\n    let leadRadius = getRadius(lead, borderLabel);\n    if (followRadius === void 0 && leadRadius === void 0)\n      continue;\n    followRadius || (followRadius = 0);\n    leadRadius || (leadRadius = 0);\n    const canMix = followRadius === 0 || leadRadius === 0 || isPx(followRadius) === isPx(leadRadius);\n    if (canMix) {\n      target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress2), 0);\n      if (percent.test(leadRadius) || percent.test(followRadius)) {\n        target[borderLabel] += \"%\";\n      }\n    } else {\n      target[borderLabel] = leadRadius;\n    }\n  }\n  if (follow.rotate || lead.rotate) {\n    target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress2);\n  }\n}\nfunction getRadius(values, radiusName) {\n  return values[radiusName] !== void 0 ? values[radiusName] : values.borderRadius;\n}\nvar easeCrossfadeIn = /* @__PURE__ */ compress(0, 0.5, circOut);\nvar easeCrossfadeOut = /* @__PURE__ */ compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n  return (p) => {\n    if (p < min)\n      return 0;\n    if (p > max)\n      return 1;\n    return easing(progress(min, max, p));\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs\nfunction copyAxisInto(axis, originAxis) {\n  axis.min = originAxis.min;\n  axis.max = originAxis.max;\n}\nfunction copyBoxInto(box, originBox) {\n  copyAxisInto(box.x, originBox.x);\n  copyAxisInto(box.y, originBox.y);\n}\nfunction copyAxisDeltaInto(delta, originDelta) {\n  delta.translate = originDelta.translate;\n  delta.scale = originDelta.scale;\n  delta.originPoint = originDelta.originPoint;\n  delta.origin = originDelta.origin;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs\nfunction removePointDelta(point2, translate, scale2, originPoint, boxScale) {\n  point2 -= translate;\n  point2 = scalePoint(point2, 1 / scale2, originPoint);\n  if (boxScale !== void 0) {\n    point2 = scalePoint(point2, 1 / boxScale, originPoint);\n  }\n  return point2;\n}\nfunction removeAxisDelta(axis, translate = 0, scale2 = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n  if (percent.test(translate)) {\n    translate = parseFloat(translate);\n    const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n    translate = relativeProgress - sourceAxis.min;\n  }\n  if (typeof translate !== \"number\")\n    return;\n  let originPoint = mixNumber(originAxis.min, originAxis.max, origin);\n  if (axis === originAxis)\n    originPoint -= translate;\n  axis.min = removePointDelta(axis.min, translate, scale2, originPoint, boxScale);\n  axis.max = removePointDelta(axis.max, translate, scale2, originPoint, boxScale);\n}\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n  removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\nvar xKeys = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys = [\"y\", \"scaleY\", \"originY\"];\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n  removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : void 0, sourceBox ? sourceBox.x : void 0);\n  removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : void 0, sourceBox ? sourceBox.y : void 0);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs\nfunction isAxisDeltaZero(delta) {\n  return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n  return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction axisEquals(a, b) {\n  return a.min === b.min && a.max === b.max;\n}\nfunction boxEquals(a, b) {\n  return axisEquals(a.x, b.x) && axisEquals(a.y, b.y);\n}\nfunction axisEqualsRounded(a, b) {\n  return Math.round(a.min) === Math.round(b.min) && Math.round(a.max) === Math.round(b.max);\n}\nfunction boxEqualsRounded(a, b) {\n  return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y);\n}\nfunction aspectRatio(box) {\n  return calcLength(box.x) / calcLength(box.y);\n}\nfunction axisDeltaEquals(a, b) {\n  return a.translate === b.translate && a.scale === b.scale && a.originPoint === b.originPoint;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/shared/stack.mjs\nvar NodeStack = class {\n  constructor() {\n    this.members = [];\n  }\n  add(node) {\n    addUniqueItem(this.members, node);\n    node.scheduleRender();\n  }\n  remove(node) {\n    removeItem(this.members, node);\n    if (node === this.prevLead) {\n      this.prevLead = void 0;\n    }\n    if (node === this.lead) {\n      const prevLead = this.members[this.members.length - 1];\n      if (prevLead) {\n        this.promote(prevLead);\n      }\n    }\n  }\n  relegate(node) {\n    const indexOfNode = this.members.findIndex((member) => node === member);\n    if (indexOfNode === 0)\n      return false;\n    let prevLead;\n    for (let i = indexOfNode; i >= 0; i--) {\n      const member = this.members[i];\n      if (member.isPresent !== false) {\n        prevLead = member;\n        break;\n      }\n    }\n    if (prevLead) {\n      this.promote(prevLead);\n      return true;\n    } else {\n      return false;\n    }\n  }\n  promote(node, preserveFollowOpacity) {\n    const prevLead = this.lead;\n    if (node === prevLead)\n      return;\n    this.prevLead = prevLead;\n    this.lead = node;\n    node.show();\n    if (prevLead) {\n      prevLead.instance && prevLead.scheduleRender();\n      node.scheduleRender();\n      node.resumeFrom = prevLead;\n      if (preserveFollowOpacity) {\n        node.resumeFrom.preserveOpacity = true;\n      }\n      if (prevLead.snapshot) {\n        node.snapshot = prevLead.snapshot;\n        node.snapshot.latestValues = prevLead.animationValues || prevLead.latestValues;\n      }\n      if (node.root && node.root.isUpdating) {\n        node.isLayoutDirty = true;\n      }\n      const { crossfade } = node.options;\n      if (crossfade === false) {\n        prevLead.hide();\n      }\n    }\n  }\n  exitAnimationComplete() {\n    this.members.forEach((node) => {\n      const { options, resumingFrom } = node;\n      options.onExitComplete && options.onExitComplete();\n      if (resumingFrom) {\n        resumingFrom.options.onExitComplete && resumingFrom.options.onExitComplete();\n      }\n    });\n  }\n  scheduleRender() {\n    this.members.forEach((node) => {\n      node.instance && node.scheduleRender(false);\n    });\n  }\n  /**\n   * Clear any leads that have been removed this render to prevent them from being\n   * used in future animations and to prevent memory leaks\n   */\n  removeLeadSnapshot() {\n    if (this.lead && this.lead.snapshot) {\n      this.lead.snapshot = void 0;\n    }\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/transform.mjs\nfunction buildProjectionTransform(delta, treeScale, latestTransform) {\n  let transform2 = \"\";\n  const xTranslate = delta.x.translate / treeScale.x;\n  const yTranslate = delta.y.translate / treeScale.y;\n  const zTranslate = (latestTransform === null || latestTransform === void 0 ? void 0 : latestTransform.z) || 0;\n  if (xTranslate || yTranslate || zTranslate) {\n    transform2 = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n  }\n  if (treeScale.x !== 1 || treeScale.y !== 1) {\n    transform2 += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n  }\n  if (latestTransform) {\n    const { transformPerspective, rotate, rotateX, rotateY, skewX, skewY } = latestTransform;\n    if (transformPerspective)\n      transform2 = `perspective(${transformPerspective}px) ${transform2}`;\n    if (rotate)\n      transform2 += `rotate(${rotate}deg) `;\n    if (rotateX)\n      transform2 += `rotateX(${rotateX}deg) `;\n    if (rotateY)\n      transform2 += `rotateY(${rotateY}deg) `;\n    if (skewX)\n      transform2 += `skewX(${skewX}deg) `;\n    if (skewY)\n      transform2 += `skewY(${skewY}deg) `;\n  }\n  const elementScaleX = delta.x.scale * treeScale.x;\n  const elementScaleY = delta.y.scale * treeScale.y;\n  if (elementScaleX !== 1 || elementScaleY !== 1) {\n    transform2 += `scale(${elementScaleX}, ${elementScaleY})`;\n  }\n  return transform2 || \"none\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs\nfunction isSVGElement(element) {\n  return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/single-value.mjs\nfunction animateSingleValue(value, keyframes2, options) {\n  const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n  motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes2, options));\n  return motionValue$1.animation;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs\nvar metrics = {\n  type: \"projectionFrame\",\n  totalNodes: 0,\n  resolvedTargetDeltas: 0,\n  recalculatedProjection: 0\n};\nvar isDebug = typeof window !== \"undefined\" && window.MotionDebug !== void 0;\nvar transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nvar hiddenVisibility = { visibility: \"hidden\" };\nvar animationTarget = 1e3;\nvar id2 = 0;\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n  const { latestValues } = visualElement;\n  if (latestValues[key]) {\n    values[key] = latestValues[key];\n    visualElement.setStaticValue(key, 0);\n    if (sharedAnimationValues) {\n      sharedAnimationValues[key] = 0;\n    }\n  }\n}\nfunction cancelTreeOptimisedTransformAnimations(projectionNode) {\n  projectionNode.hasCheckedOptimisedAppear = true;\n  if (projectionNode.root === projectionNode)\n    return;\n  const { visualElement } = projectionNode.options;\n  if (!visualElement)\n    return;\n  const appearId = getOptimisedAppearId(visualElement);\n  if (window.MotionHasOptimisedAnimation(appearId, \"transform\")) {\n    const { layout: layout2, layoutId } = projectionNode.options;\n    window.MotionCancelOptimisedAnimation(appearId, \"transform\", frame, !(layout2 || layoutId));\n  }\n  const { parent } = projectionNode;\n  if (parent && !parent.hasCheckedOptimisedAppear) {\n    cancelTreeOptimisedTransformAnimations(parent);\n  }\n}\nfunction createProjectionNode2({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform }) {\n  return class ProjectionNode {\n    constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n      this.id = id2++;\n      this.animationId = 0;\n      this.children = /* @__PURE__ */ new Set();\n      this.options = {};\n      this.isTreeAnimating = false;\n      this.isAnimationBlocked = false;\n      this.isLayoutDirty = false;\n      this.isProjectionDirty = false;\n      this.isSharedProjectionDirty = false;\n      this.isTransformDirty = false;\n      this.updateManuallyBlocked = false;\n      this.updateBlockedByResize = false;\n      this.isUpdating = false;\n      this.isSVG = false;\n      this.needsReset = false;\n      this.shouldResetTransform = false;\n      this.hasCheckedOptimisedAppear = false;\n      this.treeScale = { x: 1, y: 1 };\n      this.eventHandlers = /* @__PURE__ */ new Map();\n      this.hasTreeAnimated = false;\n      this.updateScheduled = false;\n      this.scheduleUpdate = () => this.update();\n      this.projectionUpdateScheduled = false;\n      this.checkUpdateFailed = () => {\n        if (this.isUpdating) {\n          this.isUpdating = false;\n          this.clearAllSnapshots();\n        }\n      };\n      this.updateProjection = () => {\n        this.projectionUpdateScheduled = false;\n        if (isDebug) {\n          metrics.totalNodes = metrics.resolvedTargetDeltas = metrics.recalculatedProjection = 0;\n        }\n        this.nodes.forEach(propagateDirtyNodes);\n        this.nodes.forEach(resolveTargetDelta);\n        this.nodes.forEach(calcProjection);\n        this.nodes.forEach(cleanDirtyNodes);\n        if (isDebug) {\n          window.MotionDebug.record(metrics);\n        }\n      };\n      this.resolvedRelativeTargetAt = 0;\n      this.hasProjected = false;\n      this.isVisible = true;\n      this.animationProgress = 0;\n      this.sharedNodes = /* @__PURE__ */ new Map();\n      this.latestValues = latestValues;\n      this.root = parent ? parent.root || parent : this;\n      this.path = parent ? [...parent.path, parent] : [];\n      this.parent = parent;\n      this.depth = parent ? parent.depth + 1 : 0;\n      for (let i = 0; i < this.path.length; i++) {\n        this.path[i].shouldResetTransform = true;\n      }\n      if (this.root === this)\n        this.nodes = new FlatTree();\n    }\n    addEventListener(name, handler) {\n      if (!this.eventHandlers.has(name)) {\n        this.eventHandlers.set(name, new SubscriptionManager());\n      }\n      return this.eventHandlers.get(name).add(handler);\n    }\n    notifyListeners(name, ...args) {\n      const subscriptionManager = this.eventHandlers.get(name);\n      subscriptionManager && subscriptionManager.notify(...args);\n    }\n    hasListeners(name) {\n      return this.eventHandlers.has(name);\n    }\n    /**\n     * Lifecycles\n     */\n    mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n      if (this.instance)\n        return;\n      this.isSVG = isSVGElement(instance);\n      this.instance = instance;\n      const { layoutId, layout: layout2, visualElement } = this.options;\n      if (visualElement && !visualElement.current) {\n        visualElement.mount(instance);\n      }\n      this.root.nodes.add(this);\n      this.parent && this.parent.children.add(this);\n      if (isLayoutDirty && (layout2 || layoutId)) {\n        this.isLayoutDirty = true;\n      }\n      if (attachResizeListener) {\n        let cancelDelay;\n        const resizeUnblockUpdate = () => this.root.updateBlockedByResize = false;\n        attachResizeListener(instance, () => {\n          this.root.updateBlockedByResize = true;\n          cancelDelay && cancelDelay();\n          cancelDelay = delay(resizeUnblockUpdate, 250);\n          if (globalProjectionState.hasAnimatedSinceResize) {\n            globalProjectionState.hasAnimatedSinceResize = false;\n            this.nodes.forEach(finishAnimation);\n          }\n        });\n      }\n      if (layoutId) {\n        this.root.registerSharedNode(layoutId, this);\n      }\n      if (this.options.animate !== false && visualElement && (layoutId || layout2)) {\n        this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout }) => {\n          if (this.isTreeAnimationBlocked()) {\n            this.target = void 0;\n            this.relativeTarget = void 0;\n            return;\n          }\n          const layoutTransition = this.options.transition || visualElement.getDefaultTransition() || defaultLayoutTransition;\n          const { onLayoutAnimationStart, onLayoutAnimationComplete } = visualElement.getProps();\n          const targetChanged = !this.targetLayout || !boxEqualsRounded(this.targetLayout, newLayout) || hasRelativeTargetChanged;\n          const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n          if (this.options.layoutRoot || this.resumeFrom && this.resumeFrom.instance || hasOnlyRelativeTargetChanged || hasLayoutChanged && (targetChanged || !this.currentAnimation)) {\n            if (this.resumeFrom) {\n              this.resumingFrom = this.resumeFrom;\n              this.resumingFrom.resumingFrom = void 0;\n            }\n            this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n            const animationOptions = {\n              ...getValueTransition(layoutTransition, \"layout\"),\n              onPlay: onLayoutAnimationStart,\n              onComplete: onLayoutAnimationComplete\n            };\n            if (visualElement.shouldReduceMotion || this.options.layoutRoot) {\n              animationOptions.delay = 0;\n              animationOptions.type = false;\n            }\n            this.startAnimation(animationOptions);\n          } else {\n            if (!hasLayoutChanged) {\n              finishAnimation(this);\n            }\n            if (this.isLead() && this.options.onExitComplete) {\n              this.options.onExitComplete();\n            }\n          }\n          this.targetLayout = newLayout;\n        });\n      }\n    }\n    unmount() {\n      this.options.layoutId && this.willUpdate();\n      this.root.nodes.remove(this);\n      const stack = this.getStack();\n      stack && stack.remove(this);\n      this.parent && this.parent.children.delete(this);\n      this.instance = void 0;\n      cancelFrame(this.updateProjection);\n    }\n    // only on the root\n    blockUpdate() {\n      this.updateManuallyBlocked = true;\n    }\n    unblockUpdate() {\n      this.updateManuallyBlocked = false;\n    }\n    isUpdateBlocked() {\n      return this.updateManuallyBlocked || this.updateBlockedByResize;\n    }\n    isTreeAnimationBlocked() {\n      return this.isAnimationBlocked || this.parent && this.parent.isTreeAnimationBlocked() || false;\n    }\n    // Note: currently only running on root node\n    startUpdate() {\n      if (this.isUpdateBlocked())\n        return;\n      this.isUpdating = true;\n      this.nodes && this.nodes.forEach(resetSkewAndRotation);\n      this.animationId++;\n    }\n    getTransformTemplate() {\n      const { visualElement } = this.options;\n      return visualElement && visualElement.getProps().transformTemplate;\n    }\n    willUpdate(shouldNotifyListeners = true) {\n      this.root.hasTreeAnimated = true;\n      if (this.root.isUpdateBlocked()) {\n        this.options.onExitComplete && this.options.onExitComplete();\n        return;\n      }\n      if (window.MotionCancelOptimisedAnimation && !this.hasCheckedOptimisedAppear) {\n        cancelTreeOptimisedTransformAnimations(this);\n      }\n      !this.root.isUpdating && this.root.startUpdate();\n      if (this.isLayoutDirty)\n        return;\n      this.isLayoutDirty = true;\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        node.shouldResetTransform = true;\n        node.updateScroll(\"snapshot\");\n        if (node.options.layoutRoot) {\n          node.willUpdate(false);\n        }\n      }\n      const { layoutId, layout: layout2 } = this.options;\n      if (layoutId === void 0 && !layout2)\n        return;\n      const transformTemplate = this.getTransformTemplate();\n      this.prevTransformTemplateValue = transformTemplate ? transformTemplate(this.latestValues, \"\") : void 0;\n      this.updateSnapshot();\n      shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n    }\n    update() {\n      this.updateScheduled = false;\n      const updateWasBlocked = this.isUpdateBlocked();\n      if (updateWasBlocked) {\n        this.unblockUpdate();\n        this.clearAllSnapshots();\n        this.nodes.forEach(clearMeasurements);\n        return;\n      }\n      if (!this.isUpdating) {\n        this.nodes.forEach(clearIsLayoutDirty);\n      }\n      this.isUpdating = false;\n      this.nodes.forEach(resetTransformStyle);\n      this.nodes.forEach(updateLayout);\n      this.nodes.forEach(notifyLayoutUpdate);\n      this.clearAllSnapshots();\n      const now2 = time.now();\n      frameData.delta = clamp(0, 1e3 / 60, now2 - frameData.timestamp);\n      frameData.timestamp = now2;\n      frameData.isProcessing = true;\n      frameSteps.update.process(frameData);\n      frameSteps.preRender.process(frameData);\n      frameSteps.render.process(frameData);\n      frameData.isProcessing = false;\n    }\n    didUpdate() {\n      if (!this.updateScheduled) {\n        this.updateScheduled = true;\n        microtask.read(this.scheduleUpdate);\n      }\n    }\n    clearAllSnapshots() {\n      this.nodes.forEach(clearSnapshot);\n      this.sharedNodes.forEach(removeLeadSnapshots);\n    }\n    scheduleUpdateProjection() {\n      if (!this.projectionUpdateScheduled) {\n        this.projectionUpdateScheduled = true;\n        frame.preRender(this.updateProjection, false, true);\n      }\n    }\n    scheduleCheckAfterUnmount() {\n      frame.postRender(() => {\n        if (this.isLayoutDirty) {\n          this.root.didUpdate();\n        } else {\n          this.root.checkUpdateFailed();\n        }\n      });\n    }\n    /**\n     * Update measurements\n     */\n    updateSnapshot() {\n      if (this.snapshot || !this.instance)\n        return;\n      this.snapshot = this.measure();\n    }\n    updateLayout() {\n      if (!this.instance)\n        return;\n      this.updateScroll();\n      if (!(this.options.alwaysMeasureLayout && this.isLead()) && !this.isLayoutDirty) {\n        return;\n      }\n      if (this.resumeFrom && !this.resumeFrom.instance) {\n        for (let i = 0; i < this.path.length; i++) {\n          const node = this.path[i];\n          node.updateScroll();\n        }\n      }\n      const prevLayout = this.layout;\n      this.layout = this.measure(false);\n      this.layoutCorrected = createBox();\n      this.isLayoutDirty = false;\n      this.projectionDelta = void 0;\n      this.notifyListeners(\"measure\", this.layout.layoutBox);\n      const { visualElement } = this.options;\n      visualElement && visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : void 0);\n    }\n    updateScroll(phase = \"measure\") {\n      let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n      if (this.scroll && this.scroll.animationId === this.root.animationId && this.scroll.phase === phase) {\n        needsMeasurement = false;\n      }\n      if (needsMeasurement) {\n        const isRoot = checkIsScrollRoot(this.instance);\n        this.scroll = {\n          animationId: this.root.animationId,\n          phase,\n          isRoot,\n          offset: measureScroll(this.instance),\n          wasRoot: this.scroll ? this.scroll.isRoot : isRoot\n        };\n      }\n    }\n    resetTransform() {\n      if (!resetTransform)\n        return;\n      const isResetRequested = this.isLayoutDirty || this.shouldResetTransform || this.options.alwaysMeasureLayout;\n      const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n      const transformTemplate = this.getTransformTemplate();\n      const transformTemplateValue = transformTemplate ? transformTemplate(this.latestValues, \"\") : void 0;\n      const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n      if (isResetRequested && (hasProjection || hasTransform(this.latestValues) || transformTemplateHasChanged)) {\n        resetTransform(this.instance, transformTemplateValue);\n        this.shouldResetTransform = false;\n        this.scheduleRender();\n      }\n    }\n    measure(removeTransform = true) {\n      const pageBox = this.measurePageBox();\n      let layoutBox = this.removeElementScroll(pageBox);\n      if (removeTransform) {\n        layoutBox = this.removeTransform(layoutBox);\n      }\n      roundBox(layoutBox);\n      return {\n        animationId: this.root.animationId,\n        measuredBox: pageBox,\n        layoutBox,\n        latestValues: {},\n        source: this.id\n      };\n    }\n    measurePageBox() {\n      var _a;\n      const { visualElement } = this.options;\n      if (!visualElement)\n        return createBox();\n      const box = visualElement.measureViewportBox();\n      const wasInScrollRoot = ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) || this.path.some(checkNodeWasScrollRoot);\n      if (!wasInScrollRoot) {\n        const { scroll: scroll2 } = this.root;\n        if (scroll2) {\n          translateAxis(box.x, scroll2.offset.x);\n          translateAxis(box.y, scroll2.offset.y);\n        }\n      }\n      return box;\n    }\n    removeElementScroll(box) {\n      var _a;\n      const boxWithoutScroll = createBox();\n      copyBoxInto(boxWithoutScroll, box);\n      if ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) {\n        return boxWithoutScroll;\n      }\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        const { scroll: scroll2, options } = node;\n        if (node !== this.root && scroll2 && options.layoutScroll) {\n          if (scroll2.wasRoot) {\n            copyBoxInto(boxWithoutScroll, box);\n          }\n          translateAxis(boxWithoutScroll.x, scroll2.offset.x);\n          translateAxis(boxWithoutScroll.y, scroll2.offset.y);\n        }\n      }\n      return boxWithoutScroll;\n    }\n    applyTransform(box, transformOnly = false) {\n      const withTransforms = createBox();\n      copyBoxInto(withTransforms, box);\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        if (!transformOnly && node.options.layoutScroll && node.scroll && node !== node.root) {\n          transformBox(withTransforms, {\n            x: -node.scroll.offset.x,\n            y: -node.scroll.offset.y\n          });\n        }\n        if (!hasTransform(node.latestValues))\n          continue;\n        transformBox(withTransforms, node.latestValues);\n      }\n      if (hasTransform(this.latestValues)) {\n        transformBox(withTransforms, this.latestValues);\n      }\n      return withTransforms;\n    }\n    removeTransform(box) {\n      const boxWithoutTransform = createBox();\n      copyBoxInto(boxWithoutTransform, box);\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        if (!node.instance)\n          continue;\n        if (!hasTransform(node.latestValues))\n          continue;\n        hasScale(node.latestValues) && node.updateSnapshot();\n        const sourceBox = createBox();\n        const nodeBox = node.measurePageBox();\n        copyBoxInto(sourceBox, nodeBox);\n        removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : void 0, sourceBox);\n      }\n      if (hasTransform(this.latestValues)) {\n        removeBoxTransforms(boxWithoutTransform, this.latestValues);\n      }\n      return boxWithoutTransform;\n    }\n    setTargetDelta(delta) {\n      this.targetDelta = delta;\n      this.root.scheduleUpdateProjection();\n      this.isProjectionDirty = true;\n    }\n    setOptions(options) {\n      this.options = {\n        ...this.options,\n        ...options,\n        crossfade: options.crossfade !== void 0 ? options.crossfade : true\n      };\n    }\n    clearMeasurements() {\n      this.scroll = void 0;\n      this.layout = void 0;\n      this.snapshot = void 0;\n      this.prevTransformTemplateValue = void 0;\n      this.targetDelta = void 0;\n      this.target = void 0;\n      this.isLayoutDirty = false;\n    }\n    forceRelativeParentToResolveTarget() {\n      if (!this.relativeParent)\n        return;\n      if (this.relativeParent.resolvedRelativeTargetAt !== frameData.timestamp) {\n        this.relativeParent.resolveTargetDelta(true);\n      }\n    }\n    resolveTargetDelta(forceRecalculation = false) {\n      var _a;\n      const lead = this.getLead();\n      this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n      this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n      this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n      const isShared = Boolean(this.resumingFrom) || this !== lead;\n      const canSkip = !(forceRecalculation || isShared && this.isSharedProjectionDirty || this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) || this.attemptToResolveRelativeTarget || this.root.updateBlockedByResize);\n      if (canSkip)\n        return;\n      const { layout: layout2, layoutId } = this.options;\n      if (!this.layout || !(layout2 || layoutId))\n        return;\n      this.resolvedRelativeTargetAt = frameData.timestamp;\n      if (!this.targetDelta && !this.relativeTarget) {\n        const relativeParent = this.getClosestProjectingParent();\n        if (relativeParent && relativeParent.layout && this.animationProgress !== 1) {\n          this.relativeParent = relativeParent;\n          this.forceRelativeParentToResolveTarget();\n          this.relativeTarget = createBox();\n          this.relativeTargetOrigin = createBox();\n          calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n          copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n        } else {\n          this.relativeParent = this.relativeTarget = void 0;\n        }\n      }\n      if (!this.relativeTarget && !this.targetDelta)\n        return;\n      if (!this.target) {\n        this.target = createBox();\n        this.targetWithTransforms = createBox();\n      }\n      if (this.relativeTarget && this.relativeTargetOrigin && this.relativeParent && this.relativeParent.target) {\n        this.forceRelativeParentToResolveTarget();\n        calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n      } else if (this.targetDelta) {\n        if (Boolean(this.resumingFrom)) {\n          this.target = this.applyTransform(this.layout.layoutBox);\n        } else {\n          copyBoxInto(this.target, this.layout.layoutBox);\n        }\n        applyBoxDelta(this.target, this.targetDelta);\n      } else {\n        copyBoxInto(this.target, this.layout.layoutBox);\n      }\n      if (this.attemptToResolveRelativeTarget) {\n        this.attemptToResolveRelativeTarget = false;\n        const relativeParent = this.getClosestProjectingParent();\n        if (relativeParent && Boolean(relativeParent.resumingFrom) === Boolean(this.resumingFrom) && !relativeParent.options.layoutScroll && relativeParent.target && this.animationProgress !== 1) {\n          this.relativeParent = relativeParent;\n          this.forceRelativeParentToResolveTarget();\n          this.relativeTarget = createBox();\n          this.relativeTargetOrigin = createBox();\n          calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n          copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n        } else {\n          this.relativeParent = this.relativeTarget = void 0;\n        }\n      }\n      if (isDebug) {\n        metrics.resolvedTargetDeltas++;\n      }\n    }\n    getClosestProjectingParent() {\n      if (!this.parent || hasScale(this.parent.latestValues) || has2DTranslate(this.parent.latestValues)) {\n        return void 0;\n      }\n      if (this.parent.isProjecting()) {\n        return this.parent;\n      } else {\n        return this.parent.getClosestProjectingParent();\n      }\n    }\n    isProjecting() {\n      return Boolean((this.relativeTarget || this.targetDelta || this.options.layoutRoot) && this.layout);\n    }\n    calcProjection() {\n      var _a;\n      const lead = this.getLead();\n      const isShared = Boolean(this.resumingFrom) || this !== lead;\n      let canSkip = true;\n      if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {\n        canSkip = false;\n      }\n      if (isShared && (this.isSharedProjectionDirty || this.isTransformDirty)) {\n        canSkip = false;\n      }\n      if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n        canSkip = false;\n      }\n      if (canSkip)\n        return;\n      const { layout: layout2, layoutId } = this.options;\n      this.isTreeAnimating = Boolean(this.parent && this.parent.isTreeAnimating || this.currentAnimation || this.pendingAnimation);\n      if (!this.isTreeAnimating) {\n        this.targetDelta = this.relativeTarget = void 0;\n      }\n      if (!this.layout || !(layout2 || layoutId))\n        return;\n      copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n      const prevTreeScaleX = this.treeScale.x;\n      const prevTreeScaleY = this.treeScale.y;\n      applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n      if (lead.layout && !lead.target && (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n        lead.target = lead.layout.layoutBox;\n        lead.targetWithTransforms = createBox();\n      }\n      const { target } = lead;\n      if (!target) {\n        if (this.prevProjectionDelta) {\n          this.createProjectionDeltas();\n          this.scheduleRender();\n        }\n        return;\n      }\n      if (!this.projectionDelta || !this.prevProjectionDelta) {\n        this.createProjectionDeltas();\n      } else {\n        copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);\n        copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);\n      }\n      calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n      if (this.treeScale.x !== prevTreeScaleX || this.treeScale.y !== prevTreeScaleY || !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) || !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {\n        this.hasProjected = true;\n        this.scheduleRender();\n        this.notifyListeners(\"projectionUpdate\", target);\n      }\n      if (isDebug) {\n        metrics.recalculatedProjection++;\n      }\n    }\n    hide() {\n      this.isVisible = false;\n    }\n    show() {\n      this.isVisible = true;\n    }\n    scheduleRender(notifyAll2 = true) {\n      var _a;\n      (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.scheduleRender();\n      if (notifyAll2) {\n        const stack = this.getStack();\n        stack && stack.scheduleRender();\n      }\n      if (this.resumingFrom && !this.resumingFrom.instance) {\n        this.resumingFrom = void 0;\n      }\n    }\n    createProjectionDeltas() {\n      this.prevProjectionDelta = createDelta();\n      this.projectionDelta = createDelta();\n      this.projectionDeltaWithTransform = createDelta();\n    }\n    setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n      const snapshot = this.snapshot;\n      const snapshotLatestValues = snapshot ? snapshot.latestValues : {};\n      const mixedValues = { ...this.latestValues };\n      const targetDelta = createDelta();\n      if (!this.relativeParent || !this.relativeParent.options.layoutRoot) {\n        this.relativeTarget = this.relativeTargetOrigin = void 0;\n      }\n      this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n      const relativeLayout = createBox();\n      const snapshotSource = snapshot ? snapshot.source : void 0;\n      const layoutSource = this.layout ? this.layout.source : void 0;\n      const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n      const stack = this.getStack();\n      const isOnlyMember = !stack || stack.members.length <= 1;\n      const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation && !isOnlyMember && this.options.crossfade === true && !this.path.some(hasOpacityCrossfade));\n      this.animationProgress = 0;\n      let prevRelativeTarget;\n      this.mixTargetDelta = (latest) => {\n        const progress2 = latest / 1e3;\n        mixAxisDelta(targetDelta.x, delta.x, progress2);\n        mixAxisDelta(targetDelta.y, delta.y, progress2);\n        this.setTargetDelta(targetDelta);\n        if (this.relativeTarget && this.relativeTargetOrigin && this.layout && this.relativeParent && this.relativeParent.layout) {\n          calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n          mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress2);\n          if (prevRelativeTarget && boxEquals(this.relativeTarget, prevRelativeTarget)) {\n            this.isProjectionDirty = false;\n          }\n          if (!prevRelativeTarget)\n            prevRelativeTarget = createBox();\n          copyBoxInto(prevRelativeTarget, this.relativeTarget);\n        }\n        if (isSharedLayoutAnimation) {\n          this.animationValues = mixedValues;\n          mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress2, shouldCrossfadeOpacity, isOnlyMember);\n        }\n        this.root.scheduleUpdateProjection();\n        this.scheduleRender();\n        this.animationProgress = progress2;\n      };\n      this.mixTargetDelta(this.options.layoutRoot ? 1e3 : 0);\n    }\n    startAnimation(options) {\n      this.notifyListeners(\"animationStart\");\n      this.currentAnimation && this.currentAnimation.stop();\n      if (this.resumingFrom && this.resumingFrom.currentAnimation) {\n        this.resumingFrom.currentAnimation.stop();\n      }\n      if (this.pendingAnimation) {\n        cancelFrame(this.pendingAnimation);\n        this.pendingAnimation = void 0;\n      }\n      this.pendingAnimation = frame.update(() => {\n        globalProjectionState.hasAnimatedSinceResize = true;\n        this.currentAnimation = animateSingleValue(0, animationTarget, {\n          ...options,\n          onUpdate: (latest) => {\n            this.mixTargetDelta(latest);\n            options.onUpdate && options.onUpdate(latest);\n          },\n          onComplete: () => {\n            options.onComplete && options.onComplete();\n            this.completeAnimation();\n          }\n        });\n        if (this.resumingFrom) {\n          this.resumingFrom.currentAnimation = this.currentAnimation;\n        }\n        this.pendingAnimation = void 0;\n      });\n    }\n    completeAnimation() {\n      if (this.resumingFrom) {\n        this.resumingFrom.currentAnimation = void 0;\n        this.resumingFrom.preserveOpacity = void 0;\n      }\n      const stack = this.getStack();\n      stack && stack.exitAnimationComplete();\n      this.resumingFrom = this.currentAnimation = this.animationValues = void 0;\n      this.notifyListeners(\"animationComplete\");\n    }\n    finishAnimation() {\n      if (this.currentAnimation) {\n        this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n        this.currentAnimation.stop();\n      }\n      this.completeAnimation();\n    }\n    applyTransformsToTarget() {\n      const lead = this.getLead();\n      let { targetWithTransforms, target, layout: layout2, latestValues } = lead;\n      if (!targetWithTransforms || !target || !layout2)\n        return;\n      if (this !== lead && this.layout && layout2 && shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout2.layoutBox)) {\n        target = this.target || createBox();\n        const xLength = calcLength(this.layout.layoutBox.x);\n        target.x.min = lead.target.x.min;\n        target.x.max = target.x.min + xLength;\n        const yLength = calcLength(this.layout.layoutBox.y);\n        target.y.min = lead.target.y.min;\n        target.y.max = target.y.min + yLength;\n      }\n      copyBoxInto(targetWithTransforms, target);\n      transformBox(targetWithTransforms, latestValues);\n      calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n    }\n    registerSharedNode(layoutId, node) {\n      if (!this.sharedNodes.has(layoutId)) {\n        this.sharedNodes.set(layoutId, new NodeStack());\n      }\n      const stack = this.sharedNodes.get(layoutId);\n      stack.add(node);\n      const config = node.options.initialPromotionConfig;\n      node.promote({\n        transition: config ? config.transition : void 0,\n        preserveFollowOpacity: config && config.shouldPreserveFollowOpacity ? config.shouldPreserveFollowOpacity(node) : void 0\n      });\n    }\n    isLead() {\n      const stack = this.getStack();\n      return stack ? stack.lead === this : true;\n    }\n    getLead() {\n      var _a;\n      const { layoutId } = this.options;\n      return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n    }\n    getPrevLead() {\n      var _a;\n      const { layoutId } = this.options;\n      return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : void 0;\n    }\n    getStack() {\n      const { layoutId } = this.options;\n      if (layoutId)\n        return this.root.sharedNodes.get(layoutId);\n    }\n    promote({ needsReset, transition, preserveFollowOpacity } = {}) {\n      const stack = this.getStack();\n      if (stack)\n        stack.promote(this, preserveFollowOpacity);\n      if (needsReset) {\n        this.projectionDelta = void 0;\n        this.needsReset = true;\n      }\n      if (transition)\n        this.setOptions({ transition });\n    }\n    relegate() {\n      const stack = this.getStack();\n      if (stack) {\n        return stack.relegate(this);\n      } else {\n        return false;\n      }\n    }\n    resetSkewAndRotation() {\n      const { visualElement } = this.options;\n      if (!visualElement)\n        return;\n      let hasDistortingTransform = false;\n      const { latestValues } = visualElement;\n      if (latestValues.z || latestValues.rotate || latestValues.rotateX || latestValues.rotateY || latestValues.rotateZ || latestValues.skewX || latestValues.skewY) {\n        hasDistortingTransform = true;\n      }\n      if (!hasDistortingTransform)\n        return;\n      const resetValues = {};\n      if (latestValues.z) {\n        resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n      }\n      for (let i = 0; i < transformAxes.length; i++) {\n        resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n        resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n      }\n      visualElement.render();\n      for (const key in resetValues) {\n        visualElement.setStaticValue(key, resetValues[key]);\n        if (this.animationValues) {\n          this.animationValues[key] = resetValues[key];\n        }\n      }\n      visualElement.scheduleRender();\n    }\n    getProjectionStyles(styleProp) {\n      var _a, _b;\n      if (!this.instance || this.isSVG)\n        return void 0;\n      if (!this.isVisible) {\n        return hiddenVisibility;\n      }\n      const styles = {\n        visibility: \"\"\n      };\n      const transformTemplate = this.getTransformTemplate();\n      if (this.needsReset) {\n        this.needsReset = false;\n        styles.opacity = \"\";\n        styles.pointerEvents = resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n        styles.transform = transformTemplate ? transformTemplate(this.latestValues, \"\") : \"none\";\n        return styles;\n      }\n      const lead = this.getLead();\n      if (!this.projectionDelta || !this.layout || !lead.target) {\n        const emptyStyles = {};\n        if (this.options.layoutId) {\n          emptyStyles.opacity = this.latestValues.opacity !== void 0 ? this.latestValues.opacity : 1;\n          emptyStyles.pointerEvents = resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n        }\n        if (this.hasProjected && !hasTransform(this.latestValues)) {\n          emptyStyles.transform = transformTemplate ? transformTemplate({}, \"\") : \"none\";\n          this.hasProjected = false;\n        }\n        return emptyStyles;\n      }\n      const valuesToRender = lead.animationValues || lead.latestValues;\n      this.applyTransformsToTarget();\n      styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n      if (transformTemplate) {\n        styles.transform = transformTemplate(valuesToRender, styles.transform);\n      }\n      const { x, y } = this.projectionDelta;\n      styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n      if (lead.animationValues) {\n        styles.opacity = lead === this ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1 : this.preserveOpacity ? this.latestValues.opacity : valuesToRender.opacityExit;\n      } else {\n        styles.opacity = lead === this ? valuesToRender.opacity !== void 0 ? valuesToRender.opacity : \"\" : valuesToRender.opacityExit !== void 0 ? valuesToRender.opacityExit : 0;\n      }\n      for (const key in scaleCorrectors) {\n        if (valuesToRender[key] === void 0)\n          continue;\n        const { correct, applyTo } = scaleCorrectors[key];\n        const corrected = styles.transform === \"none\" ? valuesToRender[key] : correct(valuesToRender[key], lead);\n        if (applyTo) {\n          const num = applyTo.length;\n          for (let i = 0; i < num; i++) {\n            styles[applyTo[i]] = corrected;\n          }\n        } else {\n          styles[key] = corrected;\n        }\n      }\n      if (this.options.layoutId) {\n        styles.pointerEvents = lead === this ? resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\" : \"none\";\n      }\n      return styles;\n    }\n    clearSnapshot() {\n      this.resumeFrom = this.snapshot = void 0;\n    }\n    // Only run on root\n    resetTree() {\n      this.root.nodes.forEach((node) => {\n        var _a;\n        return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();\n      });\n      this.root.nodes.forEach(clearMeasurements);\n      this.root.sharedNodes.clear();\n    }\n  };\n}\nfunction updateLayout(node) {\n  node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n  var _a;\n  const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n  if (node.isLead() && node.layout && snapshot && node.hasListeners(\"didUpdate\")) {\n    const { layoutBox: layout2, measuredBox: measuredLayout } = node.layout;\n    const { animationType } = node.options;\n    const isShared = snapshot.source !== node.layout.source;\n    if (animationType === \"size\") {\n      eachAxis((axis) => {\n        const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];\n        const length = calcLength(axisSnapshot);\n        axisSnapshot.min = layout2[axis].min;\n        axisSnapshot.max = axisSnapshot.min + length;\n      });\n    } else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout2)) {\n      eachAxis((axis) => {\n        const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];\n        const length = calcLength(layout2[axis]);\n        axisSnapshot.max = axisSnapshot.min + length;\n        if (node.relativeTarget && !node.currentAnimation) {\n          node.isProjectionDirty = true;\n          node.relativeTarget[axis].max = node.relativeTarget[axis].min + length;\n        }\n      });\n    }\n    const layoutDelta = createDelta();\n    calcBoxDelta(layoutDelta, layout2, snapshot.layoutBox);\n    const visualDelta = createDelta();\n    if (isShared) {\n      calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n    } else {\n      calcBoxDelta(visualDelta, layout2, snapshot.layoutBox);\n    }\n    const hasLayoutChanged = !isDeltaZero(layoutDelta);\n    let hasRelativeTargetChanged = false;\n    if (!node.resumeFrom) {\n      const relativeParent = node.getClosestProjectingParent();\n      if (relativeParent && !relativeParent.resumeFrom) {\n        const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n        if (parentSnapshot && parentLayout) {\n          const relativeSnapshot = createBox();\n          calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n          const relativeLayout = createBox();\n          calcRelativePosition(relativeLayout, layout2, parentLayout.layoutBox);\n          if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n            hasRelativeTargetChanged = true;\n          }\n          if (relativeParent.options.layoutRoot) {\n            node.relativeTarget = relativeLayout;\n            node.relativeTargetOrigin = relativeSnapshot;\n            node.relativeParent = relativeParent;\n          }\n        }\n      }\n    }\n    node.notifyListeners(\"didUpdate\", {\n      layout: layout2,\n      snapshot,\n      delta: visualDelta,\n      layoutDelta,\n      hasLayoutChanged,\n      hasRelativeTargetChanged\n    });\n  } else if (node.isLead()) {\n    const { onExitComplete } = node.options;\n    onExitComplete && onExitComplete();\n  }\n  node.options.transition = void 0;\n}\nfunction propagateDirtyNodes(node) {\n  if (isDebug) {\n    metrics.totalNodes++;\n  }\n  if (!node.parent)\n    return;\n  if (!node.isProjecting()) {\n    node.isProjectionDirty = node.parent.isProjectionDirty;\n  }\n  node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty || node.parent.isProjectionDirty || node.parent.isSharedProjectionDirty));\n  node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n  node.isProjectionDirty = node.isSharedProjectionDirty = node.isTransformDirty = false;\n}\nfunction clearSnapshot(node) {\n  node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n  node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n  node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n  const { visualElement } = node.options;\n  if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n    visualElement.notify(\"BeforeLayoutMeasure\");\n  }\n  node.resetTransform();\n}\nfunction finishAnimation(node) {\n  node.finishAnimation();\n  node.targetDelta = node.relativeTarget = node.target = void 0;\n  node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n  node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n  node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n  node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n  stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n  output.translate = mixNumber(delta.translate, 0, p);\n  output.scale = mixNumber(delta.scale, 1, p);\n  output.origin = delta.origin;\n  output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n  output.min = mixNumber(from.min, to.min, p);\n  output.max = mixNumber(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n  mixAxis(output.x, from.x, to.x, p);\n  mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n  return node.animationValues && node.animationValues.opacityExit !== void 0;\n}\nvar defaultLayoutTransition = {\n  duration: 0.45,\n  ease: [0.4, 0, 0.1, 1]\n};\nvar userAgentContains = (string) => typeof navigator !== \"undefined\" && navigator.userAgent && navigator.userAgent.toLowerCase().includes(string);\nvar roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\") ? Math.round : noop;\nfunction roundAxis(axis) {\n  axis.min = roundPoint(axis.min);\n  axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n  roundAxis(box.x);\n  roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout2) {\n  return animationType === \"position\" || animationType === \"preserve-aspect\" && !isNear(aspectRatio(snapshot), aspectRatio(layout2), 0.2);\n}\nfunction checkNodeWasScrollRoot(node) {\n  var _a;\n  return node !== node.root && ((_a = node.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs\nvar DocumentProjectionNode = createProjectionNode2({\n  attachResizeListener: (ref, notify2) => addDomEvent(ref, \"resize\", notify2),\n  measureScroll: () => ({\n    x: document.documentElement.scrollLeft || document.body.scrollLeft,\n    y: document.documentElement.scrollTop || document.body.scrollTop\n  }),\n  checkIsScrollRoot: () => true\n});\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs\nvar rootProjectionNode = {\n  current: void 0\n};\nvar HTMLProjectionNode = createProjectionNode2({\n  measureScroll: (instance) => ({\n    x: instance.scrollLeft,\n    y: instance.scrollTop\n  }),\n  defaultParent: () => {\n    if (!rootProjectionNode.current) {\n      const documentNode = new DocumentProjectionNode({});\n      documentNode.mount(window);\n      documentNode.setOptions({ layoutScroll: true });\n      rootProjectionNode.current = documentNode;\n    }\n    return rootProjectionNode.current;\n  },\n  resetTransform: (instance, value) => {\n    instance.style.transform = value !== void 0 ? value : \"none\";\n  },\n  checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\")\n});\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/drag.mjs\nvar drag = {\n  pan: {\n    Feature: PanGesture\n  },\n  drag: {\n    Feature: DragGesture,\n    ProjectionNode: HTMLProjectionNode,\n    MeasureLayout\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/hover.mjs\nfunction addHoverEvent(node, isActive) {\n  const eventName = isActive ? \"pointerenter\" : \"pointerleave\";\n  const callbackName = isActive ? \"onHoverStart\" : \"onHoverEnd\";\n  const handleEvent = (event, info) => {\n    if (event.pointerType === \"touch\" || isDragActive())\n      return;\n    const props = node.getProps();\n    if (node.animationState && props.whileHover) {\n      node.animationState.setActive(\"whileHover\", isActive);\n    }\n    const callback = props[callbackName];\n    if (callback) {\n      frame.postRender(() => callback(event, info));\n    }\n  };\n  return addPointerEvent(node.current, eventName, handleEvent, {\n    passive: !node.getProps()[callbackName]\n  });\n}\nvar HoverGesture = class extends Feature {\n  mount() {\n    this.unmount = pipe(addHoverEvent(this.node, true), addHoverEvent(this.node, false));\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/focus.mjs\nvar FocusGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.isActive = false;\n  }\n  onFocus() {\n    let isFocusVisible = false;\n    try {\n      isFocusVisible = this.node.current.matches(\":focus-visible\");\n    } catch (e) {\n      isFocusVisible = true;\n    }\n    if (!isFocusVisible || !this.node.animationState)\n      return;\n    this.node.animationState.setActive(\"whileFocus\", true);\n    this.isActive = true;\n  }\n  onBlur() {\n    if (!this.isActive || !this.node.animationState)\n      return;\n    this.node.animationState.setActive(\"whileFocus\", false);\n    this.isActive = false;\n  }\n  mount() {\n    this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs\nvar isNodeOrChild = (parent, child) => {\n  if (!child) {\n    return false;\n  } else if (parent === child) {\n    return true;\n  } else {\n    return isNodeOrChild(parent, child.parentElement);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/press.mjs\nfunction fireSyntheticPointerEvent(name, handler) {\n  if (!handler)\n    return;\n  const syntheticPointerEvent = new PointerEvent(\"pointer\" + name);\n  handler(syntheticPointerEvent, extractEventInfo(syntheticPointerEvent));\n}\nvar PressGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.removeStartListeners = noop;\n    this.removeEndListeners = noop;\n    this.removeAccessibleListeners = noop;\n    this.startPointerPress = (startEvent, startInfo) => {\n      if (this.isPressing)\n        return;\n      this.removeEndListeners();\n      const props = this.node.getProps();\n      const endPointerPress = (endEvent, endInfo) => {\n        if (!this.checkPressEnd())\n          return;\n        const { onTap, onTapCancel, globalTapTarget } = this.node.getProps();\n        const handler = !globalTapTarget && !isNodeOrChild(this.node.current, endEvent.target) ? onTapCancel : onTap;\n        if (handler) {\n          frame.update(() => handler(endEvent, endInfo));\n        }\n      };\n      const removePointerUpListener = addPointerEvent(window, \"pointerup\", endPointerPress, {\n        passive: !(props.onTap || props[\"onPointerUp\"])\n      });\n      const removePointerCancelListener = addPointerEvent(window, \"pointercancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo), {\n        passive: !(props.onTapCancel || props[\"onPointerCancel\"])\n      });\n      this.removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n      this.startPress(startEvent, startInfo);\n    };\n    this.startAccessiblePress = () => {\n      const handleKeydown = (keydownEvent) => {\n        if (keydownEvent.key !== \"Enter\" || this.isPressing)\n          return;\n        const handleKeyup = (keyupEvent) => {\n          if (keyupEvent.key !== \"Enter\" || !this.checkPressEnd())\n            return;\n          fireSyntheticPointerEvent(\"up\", (event, info) => {\n            const { onTap } = this.node.getProps();\n            if (onTap) {\n              frame.postRender(() => onTap(event, info));\n            }\n          });\n        };\n        this.removeEndListeners();\n        this.removeEndListeners = addDomEvent(this.node.current, \"keyup\", handleKeyup);\n        fireSyntheticPointerEvent(\"down\", (event, info) => {\n          this.startPress(event, info);\n        });\n      };\n      const removeKeydownListener = addDomEvent(this.node.current, \"keydown\", handleKeydown);\n      const handleBlur = () => {\n        if (!this.isPressing)\n          return;\n        fireSyntheticPointerEvent(\"cancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo));\n      };\n      const removeBlurListener = addDomEvent(this.node.current, \"blur\", handleBlur);\n      this.removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n    };\n  }\n  startPress(event, info) {\n    this.isPressing = true;\n    const { onTapStart, whileTap } = this.node.getProps();\n    if (whileTap && this.node.animationState) {\n      this.node.animationState.setActive(\"whileTap\", true);\n    }\n    if (onTapStart) {\n      frame.postRender(() => onTapStart(event, info));\n    }\n  }\n  checkPressEnd() {\n    this.removeEndListeners();\n    this.isPressing = false;\n    const props = this.node.getProps();\n    if (props.whileTap && this.node.animationState) {\n      this.node.animationState.setActive(\"whileTap\", false);\n    }\n    return !isDragActive();\n  }\n  cancelPress(event, info) {\n    if (!this.checkPressEnd())\n      return;\n    const { onTapCancel } = this.node.getProps();\n    if (onTapCancel) {\n      frame.postRender(() => onTapCancel(event, info));\n    }\n  }\n  mount() {\n    const props = this.node.getProps();\n    const removePointerListener = addPointerEvent(props.globalTapTarget ? window : this.node.current, \"pointerdown\", this.startPointerPress, {\n      passive: !(props.onTapStart || props[\"onPointerStart\"])\n    });\n    const removeFocusListener = addDomEvent(this.node.current, \"focus\", this.startAccessiblePress);\n    this.removeStartListeners = pipe(removePointerListener, removeFocusListener);\n  }\n  unmount() {\n    this.removeStartListeners();\n    this.removeEndListeners();\n    this.removeAccessibleListeners();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs\nvar observerCallbacks = /* @__PURE__ */ new WeakMap();\nvar observers = /* @__PURE__ */ new WeakMap();\nvar fireObserverCallback = (entry) => {\n  const callback = observerCallbacks.get(entry.target);\n  callback && callback(entry);\n};\nvar fireAllObserverCallbacks = (entries) => {\n  entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n  const lookupRoot = root || document;\n  if (!observers.has(lookupRoot)) {\n    observers.set(lookupRoot, {});\n  }\n  const rootObservers = observers.get(lookupRoot);\n  const key = JSON.stringify(options);\n  if (!rootObservers[key]) {\n    rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n  }\n  return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n  const rootInteresectionObserver = initIntersectionObserver(options);\n  observerCallbacks.set(element, callback);\n  rootInteresectionObserver.observe(element);\n  return () => {\n    observerCallbacks.delete(element);\n    rootInteresectionObserver.unobserve(element);\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs\nvar thresholdNames = {\n  some: 0,\n  all: 1\n};\nvar InViewFeature = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.hasEnteredView = false;\n    this.isInView = false;\n  }\n  startObserver() {\n    this.unmount();\n    const { viewport = {} } = this.node.getProps();\n    const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n    const options = {\n      root: root ? root.current : void 0,\n      rootMargin,\n      threshold: typeof amount === \"number\" ? amount : thresholdNames[amount]\n    };\n    const onIntersectionUpdate = (entry) => {\n      const { isIntersecting } = entry;\n      if (this.isInView === isIntersecting)\n        return;\n      this.isInView = isIntersecting;\n      if (once && !isIntersecting && this.hasEnteredView) {\n        return;\n      } else if (isIntersecting) {\n        this.hasEnteredView = true;\n      }\n      if (this.node.animationState) {\n        this.node.animationState.setActive(\"whileInView\", isIntersecting);\n      }\n      const { onViewportEnter, onViewportLeave } = this.node.getProps();\n      const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n      callback && callback(entry);\n    };\n    return observeIntersection(this.node.current, options, onIntersectionUpdate);\n  }\n  mount() {\n    this.startObserver();\n  }\n  update() {\n    if (typeof IntersectionObserver === \"undefined\")\n      return;\n    const { props, prevProps } = this.node;\n    const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n    if (hasOptionsChanged) {\n      this.startObserver();\n    }\n  }\n  unmount() {\n  }\n};\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n  return (name) => viewport[name] !== prevViewport[name];\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/gestures.mjs\nvar gestureAnimations = {\n  inView: {\n    Feature: InViewFeature\n  },\n  tap: {\n    Feature: PressGesture\n  },\n  focus: {\n    Feature: FocusGesture\n  },\n  hover: {\n    Feature: HoverGesture\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout.mjs\nvar layout = {\n  layout: {\n    ProjectionNode: HTMLProjectionNode,\n    MeasureLayout\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs\nvar lowercaseSVGElements = [\n  \"animate\",\n  \"circle\",\n  \"defs\",\n  \"desc\",\n  \"ellipse\",\n  \"g\",\n  \"image\",\n  \"line\",\n  \"filter\",\n  \"marker\",\n  \"mask\",\n  \"metadata\",\n  \"path\",\n  \"pattern\",\n  \"polygon\",\n  \"polyline\",\n  \"rect\",\n  \"stop\",\n  \"switch\",\n  \"symbol\",\n  \"svg\",\n  \"text\",\n  \"tspan\",\n  \"use\",\n  \"view\"\n];\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs\nfunction isSVGComponent(Component3) {\n  if (\n    /**\n     * If it's not a string, it's a custom React component. Currently we only support\n     * HTML custom React components.\n     */\n    typeof Component3 !== \"string\" || /**\n     * If it contains a dash, the element is a custom HTML webcomponent.\n     */\n    Component3.includes(\"-\")\n  ) {\n    return false;\n  } else if (\n    /**\n     * If it's in our list of lowercase SVG tags, it's an SVG component\n     */\n    lowercaseSVGElements.indexOf(Component3) > -1 || /**\n     * If it contains a capital letter, it's an SVG component\n     */\n    /[A-Z]/u.test(Component3)\n  ) {\n    return true;\n  }\n  return false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/render.mjs\nfunction renderHTML(element, { style, vars }, styleProp, projection) {\n  Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n  for (const key in vars) {\n    element.style.setProperty(key, vars[key]);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs\nvar camelCaseAttributes = /* @__PURE__ */ new Set([\n  \"baseFrequency\",\n  \"diffuseConstant\",\n  \"kernelMatrix\",\n  \"kernelUnitLength\",\n  \"keySplines\",\n  \"keyTimes\",\n  \"limitingConeAngle\",\n  \"markerHeight\",\n  \"markerWidth\",\n  \"numOctaves\",\n  \"targetX\",\n  \"targetY\",\n  \"surfaceScale\",\n  \"specularConstant\",\n  \"specularExponent\",\n  \"stdDeviation\",\n  \"tableValues\",\n  \"viewBox\",\n  \"gradientTransform\",\n  \"pathLength\",\n  \"startOffset\",\n  \"textLength\",\n  \"lengthAdjust\"\n]);\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs\nfunction renderSVG(element, renderState, _styleProp, projection) {\n  renderHTML(element, renderState, void 0, projection);\n  for (const key in renderState.attrs) {\n    element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs\nfunction isForcedMotionValue(key, { layout: layout2, layoutId }) {\n  return transformProps.has(key) || key.startsWith(\"origin\") || (layout2 || layoutId !== void 0) && (!!scaleCorrectors[key] || key === \"opacity\");\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n  var _a;\n  const { style } = props;\n  const newValues = {};\n  for (const key in style) {\n    if (isMotionValue(style[key]) || prevProps.style && isMotionValue(prevProps.style[key]) || isForcedMotionValue(key, props) || ((_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.liveStyle) !== void 0) {\n      newValues[key] = style[key];\n    }\n  }\n  if (visualElement && style && typeof style.willChange === \"string\") {\n    visualElement.applyWillChange = false;\n  }\n  return newValues;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs\nfunction scrapeMotionValuesFromProps2(props, prevProps, visualElement) {\n  const newValues = scrapeMotionValuesFromProps(props, prevProps, visualElement);\n  for (const key in props) {\n    if (isMotionValue(props[key]) || isMotionValue(prevProps[key])) {\n      const targetKey = transformPropOrder.indexOf(key) !== -1 ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1) : key;\n      newValues[targetKey] = props[key];\n    }\n  }\n  return newValues;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs\nvar createHtmlRenderState = () => ({\n  style: {},\n  transform: {},\n  transformOrigin: {},\n  vars: {}\n});\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs\nvar createSvgRenderState = () => ({\n  ...createHtmlRenderState(),\n  attrs: {}\n});\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs\nfunction buildHTMLStyles(state2, latestValues, transformTemplate) {\n  const { style, vars, transformOrigin } = state2;\n  let hasTransform2 = false;\n  let hasTransformOrigin = false;\n  for (const key in latestValues) {\n    const value = latestValues[key];\n    if (transformProps.has(key)) {\n      hasTransform2 = true;\n      continue;\n    } else if (isCSSVariableName(key)) {\n      vars[key] = value;\n      continue;\n    } else {\n      const valueAsType = getValueAsType(value, numberValueTypes[key]);\n      if (key.startsWith(\"origin\")) {\n        hasTransformOrigin = true;\n        transformOrigin[key] = valueAsType;\n      } else {\n        style[key] = valueAsType;\n      }\n    }\n  }\n  if (!latestValues.transform) {\n    if (hasTransform2 || transformTemplate) {\n      style.transform = buildTransform(latestValues, state2.transform, transformTemplate);\n    } else if (style.transform) {\n      style.transform = \"none\";\n    }\n  }\n  if (hasTransformOrigin) {\n    const { originX = \"50%\", originY = \"50%\", originZ = 0 } = transformOrigin;\n    style.transformOrigin = `${originX} ${originY} ${originZ}`;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs\nfunction calcOrigin2(origin, offset, size) {\n  return typeof origin === \"string\" ? origin : px.transform(offset + size * origin);\n}\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n  const pxOriginX = calcOrigin2(originX, dimensions.x, dimensions.width);\n  const pxOriginY = calcOrigin2(originY, dimensions.y, dimensions.height);\n  return `${pxOriginX} ${pxOriginY}`;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs\nvar dashKeys = {\n  offset: \"stroke-dashoffset\",\n  array: \"stroke-dasharray\"\n};\nvar camelKeys = {\n  offset: \"strokeDashoffset\",\n  array: \"strokeDasharray\"\n};\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n  attrs.pathLength = 1;\n  const keys2 = useDashCase ? dashKeys : camelKeys;\n  attrs[keys2.offset] = px.transform(-offset);\n  const pathLength = px.transform(length);\n  const pathSpacing = px.transform(spacing);\n  attrs[keys2.array] = `${pathLength} ${pathSpacing}`;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs\nfunction buildSVGAttrs(state2, {\n  attrX,\n  attrY,\n  attrScale,\n  originX,\n  originY,\n  pathLength,\n  pathSpacing = 1,\n  pathOffset = 0,\n  // This is object creation, which we try to avoid per-frame.\n  ...latest\n}, isSVGTag2, transformTemplate) {\n  buildHTMLStyles(state2, latest, transformTemplate);\n  if (isSVGTag2) {\n    if (state2.style.viewBox) {\n      state2.attrs.viewBox = state2.style.viewBox;\n    }\n    return;\n  }\n  state2.attrs = state2.style;\n  state2.style = {};\n  const { attrs, style, dimensions } = state2;\n  if (attrs.transform) {\n    if (dimensions)\n      style.transform = attrs.transform;\n    delete attrs.transform;\n  }\n  if (dimensions && (originX !== void 0 || originY !== void 0 || style.transform)) {\n    style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== void 0 ? originX : 0.5, originY !== void 0 ? originY : 0.5);\n  }\n  if (attrX !== void 0)\n    attrs.x = attrX;\n  if (attrY !== void 0)\n    attrs.y = attrY;\n  if (attrScale !== void 0)\n    attrs.scale = attrScale;\n  if (pathLength !== void 0) {\n    buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs\nvar isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs\nvar svgMotionConfig = {\n  useVisualState: makeUseVisualState({\n    scrapeMotionValuesFromProps: scrapeMotionValuesFromProps2,\n    createRenderState: createSvgRenderState,\n    onMount: (props, instance, { renderState, latestValues }) => {\n      frame.read(() => {\n        try {\n          renderState.dimensions = typeof instance.getBBox === \"function\" ? instance.getBBox() : instance.getBoundingClientRect();\n        } catch (e) {\n          renderState.dimensions = {\n            x: 0,\n            y: 0,\n            width: 0,\n            height: 0\n          };\n        }\n      });\n      frame.render(() => {\n        buildSVGAttrs(renderState, latestValues, isSVGTag(instance.tagName), props.transformTemplate);\n        renderSVG(instance, renderState);\n      });\n    }\n  })\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/config-motion.mjs\nvar htmlMotionConfig = {\n  useVisualState: makeUseVisualState({\n    applyWillChange: true,\n    scrapeMotionValuesFromProps,\n    createRenderState: createHtmlRenderState\n  })\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs\nimport { Fragment, useMemo as useMemo4, createElement } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/html/use-props.mjs\nimport { useMemo as useMemo2 } from \"react\";\nfunction copyRawValuesOnly(target, source, props) {\n  for (const key in source) {\n    if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n      target[key] = source[key];\n    }\n  }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState) {\n  return useMemo2(() => {\n    const state2 = createHtmlRenderState();\n    buildHTMLStyles(state2, visualState, transformTemplate);\n    return Object.assign({}, state2.vars, state2.style);\n  }, [visualState]);\n}\nfunction useStyle(props, visualState) {\n  const styleProp = props.style || {};\n  const style = {};\n  copyRawValuesOnly(style, styleProp, props);\n  Object.assign(style, useInitialMotionValues(props, visualState));\n  return style;\n}\nfunction useHTMLProps(props, visualState) {\n  const htmlProps = {};\n  const style = useStyle(props, visualState);\n  if (props.drag && props.dragListener !== false) {\n    htmlProps.draggable = false;\n    style.userSelect = style.WebkitUserSelect = style.WebkitTouchCallout = \"none\";\n    style.touchAction = props.drag === true ? \"none\" : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n  }\n  if (props.tabIndex === void 0 && (props.onTap || props.onTapStart || props.whileTap)) {\n    htmlProps.tabIndex = 0;\n  }\n  htmlProps.style = style;\n  return htmlProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs\nimport { useMemo as useMemo3 } from \"react\";\nfunction useSVGProps(props, visualState, _isStatic, Component3) {\n  const visualProps = useMemo3(() => {\n    const state2 = createSvgRenderState();\n    buildSVGAttrs(state2, visualState, isSVGTag(Component3), props.transformTemplate);\n    return {\n      ...state2.attrs,\n      style: { ...state2.style }\n    };\n  }, [visualState]);\n  if (props.style) {\n    const rawStyles = {};\n    copyRawValuesOnly(rawStyles, props.style, props);\n    visualProps.style = { ...rawStyles, ...visualProps.style };\n  }\n  return visualProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs\nfunction createUseRender(forwardMotionProps = false) {\n  const useRender = (Component3, props, ref, { latestValues }, isStatic) => {\n    const useVisualProps = isSVGComponent(Component3) ? useSVGProps : useHTMLProps;\n    const visualProps = useVisualProps(props, latestValues, isStatic, Component3);\n    const filteredProps = filterProps(props, typeof Component3 === \"string\", forwardMotionProps);\n    const elementProps = Component3 !== Fragment ? { ...filteredProps, ...visualProps, ref } : {};\n    const { children } = props;\n    const renderedChildren = useMemo4(() => isMotionValue(children) ? children.get() : children, [children]);\n    return createElement(Component3, {\n      ...elementProps,\n      children: renderedChildren\n    });\n  };\n  return useRender;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/components/create-factory.mjs\nfunction createMotionComponentFactory(preloadedFeatures, createVisualElement) {\n  return function createMotionComponent2(Component3, { forwardMotionProps } = { forwardMotionProps: false }) {\n    const baseConfig = isSVGComponent(Component3) ? svgMotionConfig : htmlMotionConfig;\n    const config = {\n      ...baseConfig,\n      preloadedFeatures,\n      useRender: createUseRender(forwardMotionProps),\n      createVisualElement,\n      Component: Component3\n    };\n    return createRendererMotionComponent(config);\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs\nimport { Fragment as Fragment2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs\nvar DOMVisualElement = class extends VisualElement {\n  constructor() {\n    super(...arguments);\n    this.KeyframeResolver = DOMKeyframesResolver;\n  }\n  sortInstanceNodePosition(a, b) {\n    return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n  }\n  getBaseTargetFromProps(props, key) {\n    return props.style ? props.style[key] : void 0;\n  }\n  removeValueFromRenderState(key, { vars, style }) {\n    delete vars[key];\n    delete style[key];\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs\nfunction getComputedStyle2(element) {\n  return window.getComputedStyle(element);\n}\nvar HTMLVisualElement = class extends DOMVisualElement {\n  constructor() {\n    super(...arguments);\n    this.type = \"html\";\n    this.applyWillChange = true;\n    this.renderInstance = renderHTML;\n  }\n  readValueFromInstance(instance, key) {\n    if (transformProps.has(key)) {\n      const defaultType = getDefaultValueType(key);\n      return defaultType ? defaultType.default || 0 : 0;\n    } else {\n      const computedStyle = getComputedStyle2(instance);\n      const value = (isCSSVariableName(key) ? computedStyle.getPropertyValue(key) : computedStyle[key]) || 0;\n      return typeof value === \"string\" ? value.trim() : value;\n    }\n  }\n  measureInstanceViewportBox(instance, { transformPagePoint }) {\n    return measureViewportBox(instance, transformPagePoint);\n  }\n  build(renderState, latestValues, props) {\n    buildHTMLStyles(renderState, latestValues, props.transformTemplate);\n  }\n  scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n  }\n  handleChildMotionValue() {\n    if (this.childSubscription) {\n      this.childSubscription();\n      delete this.childSubscription;\n    }\n    const { children } = this.props;\n    if (isMotionValue(children)) {\n      this.childSubscription = children.on(\"change\", (latest) => {\n        if (this.current)\n          this.current.textContent = `${latest}`;\n      });\n    }\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs\nvar SVGVisualElement = class extends DOMVisualElement {\n  constructor() {\n    super(...arguments);\n    this.type = \"svg\";\n    this.isSVGTag = false;\n    this.measureInstanceViewportBox = createBox;\n  }\n  getBaseTargetFromProps(props, key) {\n    return props[key];\n  }\n  readValueFromInstance(instance, key) {\n    if (transformProps.has(key)) {\n      const defaultType = getDefaultValueType(key);\n      return defaultType ? defaultType.default || 0 : 0;\n    }\n    key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n    return instance.getAttribute(key);\n  }\n  scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    return scrapeMotionValuesFromProps2(props, prevProps, visualElement);\n  }\n  build(renderState, latestValues, props) {\n    buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate);\n  }\n  renderInstance(instance, renderState, styleProp, projection) {\n    renderSVG(instance, renderState, styleProp, projection);\n  }\n  mount(instance) {\n    this.isSVGTag = isSVGTag(instance.tagName);\n    super.mount(instance);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs\nvar createDomVisualElement = (Component3, options) => {\n  return isSVGComponent(Component3) ? new SVGVisualElement(options) : new HTMLVisualElement(options, {\n    allowProjection: Component3 !== Fragment2\n  });\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/components/motion/create.mjs\nvar createMotionComponent = /* @__PURE__ */ createMotionComponentFactory({\n  ...animations,\n  ...gestureAnimations,\n  ...drag,\n  ...layout\n}, createDomVisualElement);\n\n// ../../../node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs\nvar motion = /* @__PURE__ */ createDOMMotionComponentProxy(createMotionComponent);\n\n// ../../../node_modules/framer-motion/dist/es/render/components/m/create.mjs\nvar createMinimalMotionComponent = /* @__PURE__ */ createMotionComponentFactory();\n\n// ../../../node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\nvar m = /* @__PURE__ */ createDOMMotionComponentProxy(createMinimalMotionComponent);\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\nimport { jsx as jsx5, Fragment as Fragment3 } from \"react/jsx-runtime\";\nimport { useMemo as useMemo6, useRef as useRef4, useState, useContext as useContext8 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs\nimport { jsx as jsx4 } from \"react/jsx-runtime\";\nimport * as React2 from \"react\";\nimport { useId as useId3, useCallback as useCallback3, useMemo as useMemo5 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs\nimport { jsx as jsx3 } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { useId as useId2, useRef as useRef3, useContext as useContext7, useInsertionEffect as useInsertionEffect2 } from \"react\";\nvar PopChildMeasure = class extends React.Component {\n  getSnapshotBeforeUpdate(prevProps) {\n    const element = this.props.childRef.current;\n    if (element && prevProps.isPresent && !this.props.isPresent) {\n      const size = this.props.sizeRef.current;\n      size.height = element.offsetHeight || 0;\n      size.width = element.offsetWidth || 0;\n      size.top = element.offsetTop;\n      size.left = element.offsetLeft;\n    }\n    return null;\n  }\n  /**\n   * Required with getSnapshotBeforeUpdate to stop React complaining.\n   */\n  componentDidUpdate() {\n  }\n  render() {\n    return this.props.children;\n  }\n};\nfunction PopChild({ children, isPresent: isPresent2 }) {\n  const id4 = useId2();\n  const ref = useRef3(null);\n  const size = useRef3({\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0\n  });\n  const { nonce } = useContext7(MotionConfigContext);\n  useInsertionEffect2(() => {\n    const { width, height, top, left } = size.current;\n    if (isPresent2 || !ref.current || !width || !height)\n      return;\n    ref.current.dataset.motionPopId = id4;\n    const style = document.createElement(\"style\");\n    if (nonce)\n      style.nonce = nonce;\n    document.head.appendChild(style);\n    if (style.sheet) {\n      style.sheet.insertRule(`\n          [data-motion-pop-id=\"${id4}\"] {\n            position: absolute !important;\n            width: ${width}px !important;\n            height: ${height}px !important;\n            top: ${top}px !important;\n            left: ${left}px !important;\n          }\n        `);\n    }\n    return () => {\n      document.head.removeChild(style);\n    };\n  }, [isPresent2]);\n  return jsx3(PopChildMeasure, { isPresent: isPresent2, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) });\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs\nvar PresenceChild = ({ children, initial, isPresent: isPresent2, onExitComplete, custom, presenceAffectsLayout, mode }) => {\n  const presenceChildren = useConstant(newChildrenMap);\n  const id4 = useId3();\n  const memoizedOnExitComplete = useCallback3((childId) => {\n    presenceChildren.set(childId, true);\n    for (const isComplete of presenceChildren.values()) {\n      if (!isComplete)\n        return;\n    }\n    onExitComplete && onExitComplete();\n  }, [presenceChildren, onExitComplete]);\n  const context = useMemo5(\n    () => ({\n      id: id4,\n      initial,\n      isPresent: isPresent2,\n      custom,\n      onExitComplete: memoizedOnExitComplete,\n      register: (childId) => {\n        presenceChildren.set(childId, false);\n        return () => presenceChildren.delete(childId);\n      }\n    }),\n    /**\n     * If the presence of a child affects the layout of the components around it,\n     * we want to make a new context value to ensure they get re-rendered\n     * so they can detect that layout change.\n     */\n    presenceAffectsLayout ? [Math.random(), memoizedOnExitComplete] : [isPresent2, memoizedOnExitComplete]\n  );\n  useMemo5(() => {\n    presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n  }, [isPresent2]);\n  React2.useEffect(() => {\n    !isPresent2 && !presenceChildren.size && onExitComplete && onExitComplete();\n  }, [isPresent2]);\n  if (mode === \"popLayout\") {\n    children = jsx4(PopChild, { isPresent: isPresent2, children });\n  }\n  return jsx4(PresenceContext.Provider, { value: context, children });\n};\nfunction newChildrenMap() {\n  return /* @__PURE__ */ new Map();\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs\nimport { Children, isValidElement } from \"react\";\nvar getChildKey = (child) => child.key || \"\";\nfunction onlyElements(children) {\n  const filtered = [];\n  Children.forEach(children, (child) => {\n    if (isValidElement(child))\n      filtered.push(child);\n  });\n  return filtered;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\nvar AnimatePresence = ({ children, exitBeforeEnter, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\" }) => {\n  invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n  const presentChildren = useMemo6(() => onlyElements(children), [children]);\n  const presentKeys = presentChildren.map(getChildKey);\n  const isInitialRender = useRef4(true);\n  const pendingPresentChildren = useRef4(presentChildren);\n  const exitComplete = useConstant(() => /* @__PURE__ */ new Map());\n  const [diffedChildren, setDiffedChildren] = useState(presentChildren);\n  const [renderedChildren, setRenderedChildren] = useState(presentChildren);\n  useIsomorphicLayoutEffect(() => {\n    isInitialRender.current = false;\n    pendingPresentChildren.current = presentChildren;\n    for (let i = 0; i < renderedChildren.length; i++) {\n      const key = getChildKey(renderedChildren[i]);\n      if (!presentKeys.includes(key)) {\n        if (exitComplete.get(key) !== true) {\n          exitComplete.set(key, false);\n        }\n      } else {\n        exitComplete.delete(key);\n      }\n    }\n  }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n  const exitingChildren = [];\n  if (presentChildren !== diffedChildren) {\n    let nextChildren = [...presentChildren];\n    for (let i = 0; i < renderedChildren.length; i++) {\n      const child = renderedChildren[i];\n      const key = getChildKey(child);\n      if (!presentKeys.includes(key)) {\n        nextChildren.splice(i, 0, child);\n        exitingChildren.push(child);\n      }\n    }\n    if (mode === \"wait\" && exitingChildren.length) {\n      nextChildren = exitingChildren;\n    }\n    setRenderedChildren(onlyElements(nextChildren));\n    setDiffedChildren(presentChildren);\n    return;\n  }\n  if (false) {\n    console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n  }\n  const { forceRender } = useContext8(LayoutGroupContext);\n  return jsx5(Fragment3, { children: renderedChildren.map((child) => {\n    const key = getChildKey(child);\n    const isPresent2 = presentChildren === renderedChildren || presentKeys.includes(key);\n    const onExit = () => {\n      if (exitComplete.has(key)) {\n        exitComplete.set(key, true);\n      } else {\n        return;\n      }\n      let isEveryExitComplete = true;\n      exitComplete.forEach((isExitComplete) => {\n        if (!isExitComplete)\n          isEveryExitComplete = false;\n      });\n      if (isEveryExitComplete) {\n        forceRender === null || forceRender === void 0 ? void 0 : forceRender();\n        setRenderedChildren(pendingPresentChildren.current);\n        onExitComplete && onExitComplete();\n      }\n    };\n    return jsx5(PresenceChild, { isPresent: isPresent2, initial: !isInitialRender.current || initial ? void 0 : false, custom: isPresent2 ? void 0 : custom, presenceAffectsLayout, mode, onExitComplete: isPresent2 ? void 0 : onExit, children: child }, key);\n  }) });\n};\n\n// ../../../node_modules/framer-motion/dist/es/components/MotionConfig/index.mjs\nimport { jsx as jsx6 } from \"react/jsx-runtime\";\nimport { useContext as useContext9, useMemo as useMemo7 } from \"react\";\nfunction MotionConfig({ children, isValidProp, ...config }) {\n  isValidProp && loadExternalIsValidProp(isValidProp);\n  config = { ...useContext9(MotionConfigContext), ...config };\n  config.isStatic = useConstant(() => config.isStatic);\n  const context = useMemo7(() => config, [\n    JSON.stringify(config.transition),\n    config.transformPagePoint,\n    config.reducedMotion\n  ]);\n  return jsx6(MotionConfigContext.Provider, { value: context, children });\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\nimport { jsx as jsx7 } from \"react/jsx-runtime\";\nimport { useState as useState2, useRef as useRef5, useEffect as useEffect5 } from \"react\";\nfunction LazyMotion({ children, features, strict = false }) {\n  const [, setIsLoaded] = useState2(!isLazyBundle(features));\n  const loadedRenderer = useRef5(void 0);\n  if (!isLazyBundle(features)) {\n    const { renderer, ...loadedFeatures } = features;\n    loadedRenderer.current = renderer;\n    loadFeatures(loadedFeatures);\n  }\n  useEffect5(() => {\n    if (isLazyBundle(features)) {\n      features().then(({ renderer, ...loadedFeatures }) => {\n        loadFeatures(loadedFeatures);\n        loadedRenderer.current = renderer;\n        setIsLoaded(true);\n      });\n    }\n  }, []);\n  return jsx7(LazyContext.Provider, { value: { renderer: loadedRenderer.current, strict }, children });\n}\nfunction isLazyBundle(features) {\n  return typeof features === \"function\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/DeprecatedLayoutGroupContext.mjs\nimport { createContext as createContext7 } from \"react\";\nvar DeprecatedLayoutGroupContext = createContext7(null);\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs\nimport { useState as useState3, useCallback as useCallback4 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs\nimport { useRef as useRef6 } from \"react\";\nfunction useIsMounted() {\n  const isMounted = useRef6(false);\n  useIsomorphicLayoutEffect(() => {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n  return isMounted;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs\nfunction useForceUpdate() {\n  const isMounted = useIsMounted();\n  const [forcedRenderCount, setForcedRenderCount] = useState3(0);\n  const forceRender = useCallback4(() => {\n    isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n  }, [forcedRenderCount]);\n  const deferredForceRender = useCallback4(() => frame.postRender(forceRender), [forceRender]);\n  return [deferredForceRender, forcedRenderCount];\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs\nimport { jsx as jsx8 } from \"react/jsx-runtime\";\nimport { useContext as useContext10, useRef as useRef7, useMemo as useMemo8 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/group.mjs\nvar notify = (node) => !node.isLayoutDirty && node.willUpdate(false);\nfunction nodeGroup() {\n  const nodes = /* @__PURE__ */ new Set();\n  const subscriptions = /* @__PURE__ */ new WeakMap();\n  const dirtyAll = () => nodes.forEach(notify);\n  return {\n    add: (node) => {\n      nodes.add(node);\n      subscriptions.set(node, node.addEventListener(\"willUpdate\", dirtyAll));\n    },\n    remove: (node) => {\n      nodes.delete(node);\n      const unsubscribe = subscriptions.get(node);\n      if (unsubscribe) {\n        unsubscribe();\n        subscriptions.delete(node);\n      }\n      dirtyAll();\n    },\n    dirty: dirtyAll\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs\nvar shouldInheritGroup = (inherit) => inherit === true;\nvar shouldInheritId = (inherit) => shouldInheritGroup(inherit === true) || inherit === \"id\";\nvar LayoutGroup = ({ children, id: id4, inherit = true }) => {\n  const layoutGroupContext = useContext10(LayoutGroupContext);\n  const deprecatedLayoutGroupContext = useContext10(DeprecatedLayoutGroupContext);\n  const [forceRender, key] = useForceUpdate();\n  const context = useRef7(null);\n  const upstreamId = layoutGroupContext.id || deprecatedLayoutGroupContext;\n  if (context.current === null) {\n    if (shouldInheritId(inherit) && upstreamId) {\n      id4 = id4 ? upstreamId + \"-\" + id4 : upstreamId;\n    }\n    context.current = {\n      id: id4,\n      group: shouldInheritGroup(inherit) ? layoutGroupContext.group || nodeGroup() : nodeGroup()\n    };\n  }\n  const memoizedContext = useMemo8(() => ({ ...context.current, forceRender }), [key]);\n  return jsx8(LayoutGroupContext.Provider, { value: memoizedContext, children });\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-min.mjs\nvar domMin = {\n  renderer: createDomVisualElement,\n  ...animations\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\nvar domAnimation = {\n  renderer: createDomVisualElement,\n  ...animations,\n  ...gestureAnimations\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-max.mjs\nvar domMax = {\n  ...domAnimation,\n  ...drag,\n  ...layout\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/use-motion-value.mjs\nimport { useContext as useContext11, useState as useState4, useEffect as useEffect6 } from \"react\";\nfunction useMotionValue(initial) {\n  const value = useConstant(() => motionValue(initial));\n  const { isStatic } = useContext11(MotionConfigContext);\n  if (isStatic) {\n    const [, setLatest] = useState4(initial);\n    useEffect6(() => value.on(\"change\", setLatest), []);\n  }\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-combine-values.mjs\nfunction useCombineMotionValues(values, combineValues) {\n  const value = useMotionValue(combineValues());\n  const updateValue = () => value.set(combineValues());\n  updateValue();\n  useIsomorphicLayoutEffect(() => {\n    const scheduleUpdate = () => frame.preRender(updateValue, false, true);\n    const subscriptions = values.map((v) => v.on(\"change\", scheduleUpdate));\n    return () => {\n      subscriptions.forEach((unsubscribe) => unsubscribe());\n      cancelFrame(updateValue);\n    };\n  });\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-motion-template.mjs\nfunction useMotionTemplate(fragments, ...values) {\n  const numFragments = fragments.length;\n  function buildValue() {\n    let output = ``;\n    for (let i = 0; i < numFragments; i++) {\n      output += fragments[i];\n      const value = values[i];\n      if (value) {\n        output += isMotionValue(value) ? value.get() : value;\n      }\n    }\n    return output;\n  }\n  return useCombineMotionValues(values.filter(isMotionValue), buildValue);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/transform.mjs\nvar isCustomValueType = (v) => {\n  return v && typeof v === \"object\" && v.mix;\n};\nvar getMixer2 = (v) => isCustomValueType(v) ? v.mix : void 0;\nfunction transform(...args) {\n  const useImmediate = !Array.isArray(args[0]);\n  const argOffset = useImmediate ? 0 : -1;\n  const inputValue = args[0 + argOffset];\n  const inputRange = args[1 + argOffset];\n  const outputRange = args[2 + argOffset];\n  const options = args[3 + argOffset];\n  const interpolator = interpolate(inputRange, outputRange, {\n    mixer: getMixer2(outputRange[0]),\n    ...options\n  });\n  return useImmediate ? interpolator(inputValue) : interpolator;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-computed.mjs\nfunction useComputed(compute) {\n  collectMotionValues.current = [];\n  compute();\n  const value = useCombineMotionValues(collectMotionValues.current, compute);\n  collectMotionValues.current = void 0;\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-transform.mjs\nfunction useTransform(input, inputRangeOrTransformer, outputRange, options) {\n  if (typeof input === \"function\") {\n    return useComputed(input);\n  }\n  const transformer = typeof inputRangeOrTransformer === \"function\" ? inputRangeOrTransformer : transform(inputRangeOrTransformer, outputRange, options);\n  return Array.isArray(input) ? useListTransform(input, transformer) : useListTransform([input], ([latest]) => transformer(latest));\n}\nfunction useListTransform(values, transformer) {\n  const latest = useConstant(() => []);\n  return useCombineMotionValues(values, () => {\n    latest.length = 0;\n    const numValues = values.length;\n    for (let i = 0; i < numValues; i++) {\n      latest[i] = values[i].get();\n    }\n    return transformer(latest);\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-spring.mjs\nimport { useContext as useContext12, useRef as useRef8, useInsertionEffect as useInsertionEffect3 } from \"react\";\nfunction toNumber(v) {\n  if (typeof v === \"number\")\n    return v;\n  return parseFloat(v);\n}\nfunction useSpring(source, config = {}) {\n  const { isStatic } = useContext12(MotionConfigContext);\n  const activeSpringAnimation = useRef8(null);\n  const value = useMotionValue(isMotionValue(source) ? toNumber(source.get()) : source);\n  const latestValue = useRef8(value.get());\n  const latestSetter = useRef8(() => {\n  });\n  const startAnimation = () => {\n    const animation = activeSpringAnimation.current;\n    if (animation && animation.time === 0) {\n      animation.sample(frameData.delta);\n    }\n    stopAnimation2();\n    activeSpringAnimation.current = animateValue({\n      keyframes: [value.get(), latestValue.current],\n      velocity: value.getVelocity(),\n      type: \"spring\",\n      restDelta: 1e-3,\n      restSpeed: 0.01,\n      ...config,\n      onUpdate: latestSetter.current\n    });\n  };\n  const stopAnimation2 = () => {\n    if (activeSpringAnimation.current) {\n      activeSpringAnimation.current.stop();\n    }\n  };\n  useInsertionEffect3(() => {\n    return value.attach((v, set) => {\n      if (isStatic)\n        return set(v);\n      latestValue.current = v;\n      latestSetter.current = set;\n      frame.update(startAnimation);\n      return value.get();\n    }, stopAnimation2);\n  }, [JSON.stringify(config)]);\n  useIsomorphicLayoutEffect(() => {\n    if (isMotionValue(source)) {\n      return source.on(\"change\", (v) => value.set(toNumber(v)));\n    }\n  }, [value]);\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-motion-value-event.mjs\nimport { useInsertionEffect as useInsertionEffect4 } from \"react\";\nfunction useMotionValueEvent(value, event, callback) {\n  useInsertionEffect4(() => value.on(event, callback), [value, event, callback]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-velocity.mjs\nfunction useVelocity(value) {\n  const velocity = useMotionValue(value.getVelocity());\n  const updateVelocity = () => {\n    const latest = value.getVelocity();\n    velocity.set(latest);\n    if (latest)\n      frame.update(updateVelocity);\n  };\n  useMotionValueEvent(value, \"change\", () => {\n    frame.update(updateVelocity, false, true);\n  });\n  return velocity;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/resolve-element.mjs\nfunction resolveElements(elements, scope, selectorCache) {\n  var _a;\n  if (typeof elements === \"string\") {\n    let root = document;\n    if (scope) {\n      invariant(Boolean(scope.current), \"Scope provided, but no element detected.\");\n      root = scope.current;\n    }\n    if (selectorCache) {\n      (_a = selectorCache[elements]) !== null && _a !== void 0 ? _a : selectorCache[elements] = root.querySelectorAll(elements);\n      elements = selectorCache[elements];\n    } else {\n      elements = root.querySelectorAll(elements);\n    }\n  } else if (elements instanceof Element) {\n    elements = [elements];\n  }\n  return Array.from(elements || []);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/resize/handle-element.mjs\nvar resizeHandlers = /* @__PURE__ */ new WeakMap();\nvar observer;\nfunction getElementSize(target, borderBoxSize) {\n  if (borderBoxSize) {\n    const { inlineSize, blockSize } = borderBoxSize[0];\n    return { width: inlineSize, height: blockSize };\n  } else if (target instanceof SVGElement && \"getBBox\" in target) {\n    return target.getBBox();\n  } else {\n    return {\n      width: target.offsetWidth,\n      height: target.offsetHeight\n    };\n  }\n}\nfunction notifyTarget({ target, contentRect, borderBoxSize }) {\n  var _a;\n  (_a = resizeHandlers.get(target)) === null || _a === void 0 ? void 0 : _a.forEach((handler) => {\n    handler({\n      target,\n      contentSize: contentRect,\n      get size() {\n        return getElementSize(target, borderBoxSize);\n      }\n    });\n  });\n}\nfunction notifyAll(entries) {\n  entries.forEach(notifyTarget);\n}\nfunction createResizeObserver() {\n  if (typeof ResizeObserver === \"undefined\")\n    return;\n  observer = new ResizeObserver(notifyAll);\n}\nfunction resizeElement(target, handler) {\n  if (!observer)\n    createResizeObserver();\n  const elements = resolveElements(target);\n  elements.forEach((element) => {\n    let elementHandlers = resizeHandlers.get(element);\n    if (!elementHandlers) {\n      elementHandlers = /* @__PURE__ */ new Set();\n      resizeHandlers.set(element, elementHandlers);\n    }\n    elementHandlers.add(handler);\n    observer === null || observer === void 0 ? void 0 : observer.observe(element);\n  });\n  return () => {\n    elements.forEach((element) => {\n      const elementHandlers = resizeHandlers.get(element);\n      elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.delete(handler);\n      if (!(elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.size)) {\n        observer === null || observer === void 0 ? void 0 : observer.unobserve(element);\n      }\n    });\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/resize/handle-window.mjs\nvar windowCallbacks = /* @__PURE__ */ new Set();\nvar windowResizeHandler;\nfunction createWindowResizeHandler() {\n  windowResizeHandler = () => {\n    const size = {\n      width: window.innerWidth,\n      height: window.innerHeight\n    };\n    const info = {\n      target: window,\n      size,\n      contentSize: size\n    };\n    windowCallbacks.forEach((callback) => callback(info));\n  };\n  window.addEventListener(\"resize\", windowResizeHandler);\n}\nfunction resizeWindow(callback) {\n  windowCallbacks.add(callback);\n  if (!windowResizeHandler)\n    createWindowResizeHandler();\n  return () => {\n    windowCallbacks.delete(callback);\n    if (!windowCallbacks.size && windowResizeHandler) {\n      windowResizeHandler = void 0;\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/resize/index.mjs\nfunction resize(a, b) {\n  return typeof a === \"function\" ? resizeWindow(a) : resizeElement(a, b);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/info.mjs\nvar maxElapsed2 = 50;\nvar createAxisInfo = () => ({\n  current: 0,\n  offset: [],\n  progress: 0,\n  scrollLength: 0,\n  targetOffset: 0,\n  targetLength: 0,\n  containerLength: 0,\n  velocity: 0\n});\nvar createScrollInfo = () => ({\n  time: 0,\n  x: createAxisInfo(),\n  y: createAxisInfo()\n});\nvar keys = {\n  x: {\n    length: \"Width\",\n    position: \"Left\"\n  },\n  y: {\n    length: \"Height\",\n    position: \"Top\"\n  }\n};\nfunction updateAxisInfo(element, axisName, info, time2) {\n  const axis = info[axisName];\n  const { length, position } = keys[axisName];\n  const prev = axis.current;\n  const prevTime = info.time;\n  axis.current = element[`scroll${position}`];\n  axis.scrollLength = element[`scroll${length}`] - element[`client${length}`];\n  axis.offset.length = 0;\n  axis.offset[0] = 0;\n  axis.offset[1] = axis.scrollLength;\n  axis.progress = progress(0, axis.scrollLength, axis.current);\n  const elapsed = time2 - prevTime;\n  axis.velocity = elapsed > maxElapsed2 ? 0 : velocityPerSecond(axis.current - prev, elapsed);\n}\nfunction updateScrollInfo(element, info, time2) {\n  updateAxisInfo(element, \"x\", info, time2);\n  updateAxisInfo(element, \"y\", info, time2);\n  info.time = time2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs\nfunction calcInset(element, container) {\n  const inset = { x: 0, y: 0 };\n  let current = element;\n  while (current && current !== container) {\n    if (current instanceof HTMLElement) {\n      inset.x += current.offsetLeft;\n      inset.y += current.offsetTop;\n      current = current.offsetParent;\n    } else if (current.tagName === \"svg\") {\n      const svgBoundingBox = current.getBoundingClientRect();\n      current = current.parentElement;\n      const parentBoundingBox = current.getBoundingClientRect();\n      inset.x += svgBoundingBox.left - parentBoundingBox.left;\n      inset.y += svgBoundingBox.top - parentBoundingBox.top;\n    } else if (current instanceof SVGGraphicsElement) {\n      const { x, y } = current.getBBox();\n      inset.x += x;\n      inset.y += y;\n      let svg = null;\n      let parent = current.parentNode;\n      while (!svg) {\n        if (parent.tagName === \"svg\") {\n          svg = parent;\n        }\n        parent = current.parentNode;\n      }\n      current = svg;\n    } else {\n      break;\n    }\n  }\n  return inset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs\nvar ScrollOffset = {\n  Enter: [\n    [0, 1],\n    [1, 1]\n  ],\n  Exit: [\n    [0, 0],\n    [1, 0]\n  ],\n  Any: [\n    [1, 0],\n    [0, 1]\n  ],\n  All: [\n    [0, 0],\n    [1, 1]\n  ]\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs\nvar namedEdges = {\n  start: 0,\n  center: 0.5,\n  end: 1\n};\nfunction resolveEdge(edge, length, inset = 0) {\n  let delta = 0;\n  if (edge in namedEdges) {\n    edge = namedEdges[edge];\n  }\n  if (typeof edge === \"string\") {\n    const asNumber2 = parseFloat(edge);\n    if (edge.endsWith(\"px\")) {\n      delta = asNumber2;\n    } else if (edge.endsWith(\"%\")) {\n      edge = asNumber2 / 100;\n    } else if (edge.endsWith(\"vw\")) {\n      delta = asNumber2 / 100 * document.documentElement.clientWidth;\n    } else if (edge.endsWith(\"vh\")) {\n      delta = asNumber2 / 100 * document.documentElement.clientHeight;\n    } else {\n      edge = asNumber2;\n    }\n  }\n  if (typeof edge === \"number\") {\n    delta = length * edge;\n  }\n  return inset + delta;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs\nvar defaultOffset2 = [0, 0];\nfunction resolveOffset(offset, containerLength, targetLength, targetInset) {\n  let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset2;\n  let targetPoint = 0;\n  let containerPoint = 0;\n  if (typeof offset === \"number\") {\n    offsetDefinition = [offset, offset];\n  } else if (typeof offset === \"string\") {\n    offset = offset.trim();\n    if (offset.includes(\" \")) {\n      offsetDefinition = offset.split(\" \");\n    } else {\n      offsetDefinition = [offset, namedEdges[offset] ? offset : `0`];\n    }\n  }\n  targetPoint = resolveEdge(offsetDefinition[0], targetLength, targetInset);\n  containerPoint = resolveEdge(offsetDefinition[1], containerLength);\n  return targetPoint - containerPoint;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs\nvar point = { x: 0, y: 0 };\nfunction getTargetSize(target) {\n  return \"getBBox\" in target && target.tagName !== \"svg\" ? target.getBBox() : { width: target.clientWidth, height: target.clientHeight };\n}\nfunction resolveOffsets(container, info, options) {\n  const { offset: offsetDefinition = ScrollOffset.All } = options;\n  const { target = container, axis = \"y\" } = options;\n  const lengthLabel = axis === \"y\" ? \"height\" : \"width\";\n  const inset = target !== container ? calcInset(target, container) : point;\n  const targetSize = target === container ? { width: container.scrollWidth, height: container.scrollHeight } : getTargetSize(target);\n  const containerSize = {\n    width: container.clientWidth,\n    height: container.clientHeight\n  };\n  info[axis].offset.length = 0;\n  let hasChanged = !info[axis].interpolate;\n  const numOffsets = offsetDefinition.length;\n  for (let i = 0; i < numOffsets; i++) {\n    const offset = resolveOffset(offsetDefinition[i], containerSize[lengthLabel], targetSize[lengthLabel], inset[axis]);\n    if (!hasChanged && offset !== info[axis].interpolatorOffsets[i]) {\n      hasChanged = true;\n    }\n    info[axis].offset[i] = offset;\n  }\n  if (hasChanged) {\n    info[axis].interpolate = interpolate(info[axis].offset, defaultOffset(offsetDefinition));\n    info[axis].interpolatorOffsets = [...info[axis].offset];\n  }\n  info[axis].progress = info[axis].interpolate(info[axis].current);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs\nfunction measure(container, target = container, info) {\n  info.x.targetOffset = 0;\n  info.y.targetOffset = 0;\n  if (target !== container) {\n    let node = target;\n    while (node && node !== container) {\n      info.x.targetOffset += node.offsetLeft;\n      info.y.targetOffset += node.offsetTop;\n      node = node.offsetParent;\n    }\n  }\n  info.x.targetLength = target === container ? target.scrollWidth : target.clientWidth;\n  info.y.targetLength = target === container ? target.scrollHeight : target.clientHeight;\n  info.x.containerLength = container.clientWidth;\n  info.y.containerLength = container.clientHeight;\n  if (false) {\n    if (container && target && target !== container) {\n      warnOnce(getComputedStyle(container).position !== \"static\", \"Please ensure that the container has a non-static position, like 'relative', 'fixed', or 'absolute' to ensure scroll offset is calculated correctly.\");\n    }\n  }\n}\nfunction createOnScrollHandler(element, onScroll, info, options = {}) {\n  return {\n    measure: () => measure(element, options.target, info),\n    update: (time2) => {\n      updateScrollInfo(element, info, time2);\n      if (options.offset || options.target) {\n        resolveOffsets(element, info, options);\n      }\n    },\n    notify: () => onScroll(info)\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/track.mjs\nvar scrollListeners = /* @__PURE__ */ new WeakMap();\nvar resizeListeners = /* @__PURE__ */ new WeakMap();\nvar onScrollHandlers = /* @__PURE__ */ new WeakMap();\nvar getEventTarget = (element) => element === document.documentElement ? window : element;\nfunction scrollInfo(onScroll, { container = document.documentElement, ...options } = {}) {\n  let containerHandlers = onScrollHandlers.get(container);\n  if (!containerHandlers) {\n    containerHandlers = /* @__PURE__ */ new Set();\n    onScrollHandlers.set(container, containerHandlers);\n  }\n  const info = createScrollInfo();\n  const containerHandler = createOnScrollHandler(container, onScroll, info, options);\n  containerHandlers.add(containerHandler);\n  if (!scrollListeners.has(container)) {\n    const measureAll = () => {\n      for (const handler of containerHandlers)\n        handler.measure();\n    };\n    const updateAll = () => {\n      for (const handler of containerHandlers) {\n        handler.update(frameData.timestamp);\n      }\n    };\n    const notifyAll2 = () => {\n      for (const handler of containerHandlers)\n        handler.notify();\n    };\n    const listener2 = () => {\n      frame.read(measureAll, false, true);\n      frame.read(updateAll, false, true);\n      frame.update(notifyAll2, false, true);\n    };\n    scrollListeners.set(container, listener2);\n    const target = getEventTarget(container);\n    window.addEventListener(\"resize\", listener2, { passive: true });\n    if (container !== document.documentElement) {\n      resizeListeners.set(container, resize(container, listener2));\n    }\n    target.addEventListener(\"scroll\", listener2, { passive: true });\n  }\n  const listener = scrollListeners.get(container);\n  frame.read(listener, false, true);\n  return () => {\n    var _a;\n    cancelFrame(listener);\n    const currentHandlers = onScrollHandlers.get(container);\n    if (!currentHandlers)\n      return;\n    currentHandlers.delete(containerHandler);\n    if (currentHandlers.size)\n      return;\n    const scrollListener = scrollListeners.get(container);\n    scrollListeners.delete(container);\n    if (scrollListener) {\n      getEventTarget(container).removeEventListener(\"scroll\", scrollListener);\n      (_a = resizeListeners.get(container)) === null || _a === void 0 ? void 0 : _a();\n      window.removeEventListener(\"resize\", scrollListener);\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/observe.mjs\nfunction observeTimeline(update, timeline) {\n  let prevProgress;\n  const onFrame = () => {\n    const { currentTime } = timeline;\n    const percentage = currentTime === null ? 0 : currentTime.value;\n    const progress2 = percentage / 100;\n    if (prevProgress !== progress2) {\n      update(progress2);\n    }\n    prevProgress = progress2;\n  };\n  frame.update(onFrame, true);\n  return () => cancelFrame(onFrame);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/index.mjs\nfunction scrollTimelineFallback({ source, container, axis = \"y\" }) {\n  if (source)\n    container = source;\n  const currentTime = { value: 0 };\n  const cancel = scrollInfo((info) => {\n    currentTime.value = info[axis].progress * 100;\n  }, { container, axis });\n  return { currentTime, cancel };\n}\nvar timelineCache = /* @__PURE__ */ new Map();\nfunction getTimeline({ source, container = document.documentElement, axis = \"y\" } = {}) {\n  if (source)\n    container = source;\n  if (!timelineCache.has(container)) {\n    timelineCache.set(container, {});\n  }\n  const elementCache = timelineCache.get(container);\n  if (!elementCache[axis]) {\n    elementCache[axis] = supportsScrollTimeline() ? new ScrollTimeline({ source: container, axis }) : scrollTimelineFallback({ source: container, axis });\n  }\n  return elementCache[axis];\n}\nfunction isOnScrollWithInfo(onScroll) {\n  return onScroll.length === 2;\n}\nfunction needsElementTracking(options) {\n  return options && (options.target || options.offset);\n}\nfunction scrollFunction(onScroll, options) {\n  if (isOnScrollWithInfo(onScroll) || needsElementTracking(options)) {\n    return scrollInfo((info) => {\n      onScroll(info[options.axis].progress, info);\n    }, options);\n  } else {\n    return observeTimeline(onScroll, getTimeline(options));\n  }\n}\nfunction scrollAnimation(animation, options) {\n  if (needsElementTracking(options)) {\n    animation.pause();\n    return scrollInfo((info) => {\n      animation.time = animation.duration * info[options.axis].progress;\n    }, options);\n  } else {\n    const timeline = getTimeline(options);\n    return animation.attachTimeline(timeline, (valueAnimation) => {\n      valueAnimation.pause();\n      return observeTimeline((progress2) => {\n        valueAnimation.time = valueAnimation.duration * progress2;\n      }, timeline);\n    });\n  }\n}\nfunction scroll(onScroll, { axis = \"y\", ...options } = {}) {\n  const optionsWithDefaults = { axis, ...options };\n  return typeof onScroll === \"function\" ? scrollFunction(onScroll, optionsWithDefaults) : scrollAnimation(onScroll, optionsWithDefaults);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-scroll.mjs\nimport { useEffect as useEffect7 } from \"react\";\nfunction refWarning(name, ref) {\n  warning(Boolean(!ref || ref.current), `You have defined a ${name} options but the provided ref is not yet hydrated, probably because it's defined higher up the tree. Try calling useScroll() in the same component as the ref, or setting its \\`layoutEffect: false\\` option.`);\n}\nvar createScrollMotionValues = () => ({\n  scrollX: motionValue(0),\n  scrollY: motionValue(0),\n  scrollXProgress: motionValue(0),\n  scrollYProgress: motionValue(0)\n});\nfunction useScroll({ container, target, layoutEffect = true, ...options } = {}) {\n  const values = useConstant(createScrollMotionValues);\n  const useLifecycleEffect = layoutEffect ? useIsomorphicLayoutEffect : useEffect7;\n  useLifecycleEffect(() => {\n    refWarning(\"target\", target);\n    refWarning(\"container\", container);\n    return scroll((_progress, { x, y }) => {\n      values.scrollX.set(x.current);\n      values.scrollXProgress.set(x.progress);\n      values.scrollY.set(y.current);\n      values.scrollYProgress.set(y.progress);\n    }, {\n      ...options,\n      container: (container === null || container === void 0 ? void 0 : container.current) || void 0,\n      target: (target === null || target === void 0 ? void 0 : target.current) || void 0\n    });\n  }, [container, target, JSON.stringify(options.offset)]);\n  return values;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/scroll/use-element-scroll.mjs\nfunction useElementScroll(ref) {\n  if (false) {\n    warnOnce(false, \"useElementScroll is deprecated. Convert to useScroll({ container: ref }).\");\n  }\n  return useScroll({ container: ref });\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/scroll/use-viewport-scroll.mjs\nfunction useViewportScroll() {\n  if (false) {\n    warnOnce(false, \"useViewportScroll is deprecated. Convert to useScroll().\");\n  }\n  return useScroll();\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-animation-frame.mjs\nimport { useRef as useRef9, useContext as useContext13, useEffect as useEffect8 } from \"react\";\nfunction useAnimationFrame(callback) {\n  const initialTimestamp = useRef9(0);\n  const { isStatic } = useContext13(MotionConfigContext);\n  useEffect8(() => {\n    if (isStatic)\n      return;\n    const provideTimeSinceStart = ({ timestamp, delta }) => {\n      if (!initialTimestamp.current)\n        initialTimestamp.current = timestamp;\n      callback(timestamp - initialTimestamp.current, delta);\n    };\n    frame.update(provideTimeSinceStart, true);\n    return () => cancelFrame(provideTimeSinceStart);\n  }, [callback]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-time.mjs\nfunction useTime() {\n  const time2 = useMotionValue(0);\n  useAnimationFrame((t) => time2.set(t));\n  return time2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/WillChangeMotionValue.mjs\nvar WillChangeMotionValue = class extends MotionValue {\n  constructor() {\n    super(...arguments);\n    this.values = [];\n  }\n  add(name) {\n    const styleName = getWillChangeName(name);\n    if (styleName) {\n      addUniqueItem(this.values, styleName);\n      this.update();\n    }\n  }\n  update() {\n    this.set(this.values.length ? this.values.join(\", \") : \"auto\");\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/index.mjs\nfunction useWillChange() {\n  return useConstant(() => new WillChangeMotionValue(\"auto\"));\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.mjs\nimport { useState as useState5 } from \"react\";\nfunction useReducedMotion() {\n  !hasReducedMotionListener.current && initPrefersReducedMotion();\n  const [shouldReduceMotion] = useState5(prefersReducedMotion.current);\n  if (false) {\n    warnOnce(shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n  }\n  return shouldReduceMotion;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion-config.mjs\nimport { useContext as useContext14 } from \"react\";\nfunction useReducedMotionConfig() {\n  const reducedMotionPreference = useReducedMotion();\n  const { reducedMotion } = useContext14(MotionConfigContext);\n  if (reducedMotion === \"never\") {\n    return false;\n  } else if (reducedMotion === \"always\") {\n    return true;\n  } else {\n    return reducedMotionPreference;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs\nfunction stopAnimation(visualElement) {\n  visualElement.values.forEach((value) => value.stop());\n}\nfunction setVariants(visualElement, variantLabels) {\n  const reversedLabels = [...variantLabels].reverse();\n  reversedLabels.forEach((key) => {\n    const variant = visualElement.getVariant(key);\n    variant && setTarget(visualElement, variant);\n    if (visualElement.variantChildren) {\n      visualElement.variantChildren.forEach((child) => {\n        setVariants(child, variantLabels);\n      });\n    }\n  });\n}\nfunction setValues(visualElement, definition) {\n  if (Array.isArray(definition)) {\n    return setVariants(visualElement, definition);\n  } else if (typeof definition === \"string\") {\n    return setVariants(visualElement, [definition]);\n  } else {\n    setTarget(visualElement, definition);\n  }\n}\nfunction animationControls() {\n  let hasMounted = false;\n  const subscribers = /* @__PURE__ */ new Set();\n  const controls = {\n    subscribe(visualElement) {\n      subscribers.add(visualElement);\n      return () => void subscribers.delete(visualElement);\n    },\n    start(definition, transitionOverride) {\n      invariant(hasMounted, \"controls.start() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n      const animations2 = [];\n      subscribers.forEach((visualElement) => {\n        animations2.push(animateVisualElement(visualElement, definition, {\n          transitionOverride\n        }));\n      });\n      return Promise.all(animations2);\n    },\n    set(definition) {\n      invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n      return subscribers.forEach((visualElement) => {\n        setValues(visualElement, definition);\n      });\n    },\n    stop() {\n      subscribers.forEach((visualElement) => {\n        stopAnimation(visualElement);\n      });\n    },\n    mount() {\n      hasMounted = true;\n      return () => {\n        hasMounted = false;\n        controls.stop();\n      };\n    }\n  };\n  return controls;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs\nimport { useEffect as useEffect9 } from \"react\";\nfunction useUnmountEffect(callback) {\n  return useEffect9(() => () => callback(), []);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/wrap.mjs\nvar wrap = (min, max, v) => {\n  const rangeSize = max - min;\n  return ((v - min) % rangeSize + rangeSize) % rangeSize + min;\n};\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/create-generator-easing.mjs\nfunction createGeneratorEasing(options, scale2 = 100, createGenerator) {\n  const generator = createGenerator({ ...options, keyframes: [0, scale2] });\n  const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n  return {\n    type: \"keyframes\",\n    ease: (progress2) => generator.next(duration * progress2).value / scale2,\n    duration: millisecondsToSeconds(duration)\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs\nfunction isDOMKeyframes(keyframes2) {\n  return typeof keyframes2 === \"object\" && !Array.isArray(keyframes2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/resolve-subjects.mjs\nfunction resolveSubjects(subject, keyframes2, scope, selectorCache) {\n  if (typeof subject === \"string\" && isDOMKeyframes(keyframes2)) {\n    return resolveElements(subject, scope, selectorCache);\n  } else if (subject instanceof NodeList) {\n    return Array.from(subject);\n  } else if (Array.isArray(subject)) {\n    return subject;\n  } else {\n    return [subject];\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs\nfunction calcNextTime(current, next, prev, labels) {\n  var _a;\n  if (typeof next === \"number\") {\n    return next;\n  } else if (next.startsWith(\"-\") || next.startsWith(\"+\")) {\n    return Math.max(0, current + parseFloat(next));\n  } else if (next === \"<\") {\n    return prev;\n  } else {\n    return (_a = labels.get(next)) !== null && _a !== void 0 ? _a : current;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/get-easing-for-segment.mjs\nfunction getEasingForSegment(easing, i) {\n  return isEasingArray(easing) ? easing[wrap(0, easing.length, i)] : easing;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs\nfunction eraseKeyframes(sequence, startTime, endTime) {\n  for (let i = 0; i < sequence.length; i++) {\n    const keyframe = sequence[i];\n    if (keyframe.at > startTime && keyframe.at < endTime) {\n      removeItem(sequence, keyframe);\n      i--;\n    }\n  }\n}\nfunction addKeyframes(sequence, keyframes2, easing, offset, startTime, endTime) {\n  eraseKeyframes(sequence, startTime, endTime);\n  for (let i = 0; i < keyframes2.length; i++) {\n    sequence.push({\n      value: keyframes2[i],\n      at: mixNumber(startTime, endTime, offset[i]),\n      easing: getEasingForSegment(easing, i)\n    });\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs\nfunction compareByTime(a, b) {\n  if (a.at === b.at) {\n    if (a.value === null)\n      return 1;\n    if (b.value === null)\n      return -1;\n    return 0;\n  } else {\n    return a.at - b.at;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/create.mjs\nvar defaultSegmentEasing = \"easeInOut\";\nfunction createAnimationsFromSequence(sequence, { defaultTransition = {}, ...sequenceTransition } = {}, scope, generators2) {\n  const defaultDuration = defaultTransition.duration || 0.3;\n  const animationDefinitions = /* @__PURE__ */ new Map();\n  const sequences = /* @__PURE__ */ new Map();\n  const elementCache = {};\n  const timeLabels = /* @__PURE__ */ new Map();\n  let prevTime = 0;\n  let currentTime = 0;\n  let totalDuration = 0;\n  for (let i = 0; i < sequence.length; i++) {\n    const segment = sequence[i];\n    if (typeof segment === \"string\") {\n      timeLabels.set(segment, currentTime);\n      continue;\n    } else if (!Array.isArray(segment)) {\n      timeLabels.set(segment.name, calcNextTime(currentTime, segment.at, prevTime, timeLabels));\n      continue;\n    }\n    let [subject, keyframes2, transition = {}] = segment;\n    if (transition.at !== void 0) {\n      currentTime = calcNextTime(currentTime, transition.at, prevTime, timeLabels);\n    }\n    let maxDuration3 = 0;\n    const resolveValueSequence = (valueKeyframes, valueTransition, valueSequence, elementIndex = 0, numSubjects = 0) => {\n      const valueKeyframesAsList = keyframesAsList(valueKeyframes);\n      const { delay: delay2 = 0, times = defaultOffset(valueKeyframesAsList), type = \"keyframes\", ...remainingTransition } = valueTransition;\n      let { ease: ease2 = defaultTransition.ease || \"easeOut\", duration } = valueTransition;\n      const calculatedDelay = typeof delay2 === \"function\" ? delay2(elementIndex, numSubjects) : delay2;\n      const numKeyframes = valueKeyframesAsList.length;\n      const createGenerator = isGenerator(type) ? type : generators2 === null || generators2 === void 0 ? void 0 : generators2[type];\n      if (numKeyframes <= 2 && createGenerator) {\n        let absoluteDelta = 100;\n        if (numKeyframes === 2 && isNumberKeyframesArray(valueKeyframesAsList)) {\n          const delta = valueKeyframesAsList[1] - valueKeyframesAsList[0];\n          absoluteDelta = Math.abs(delta);\n        }\n        const springTransition = { ...remainingTransition };\n        if (duration !== void 0) {\n          springTransition.duration = secondsToMilliseconds(duration);\n        }\n        const springEasing = createGeneratorEasing(springTransition, absoluteDelta, createGenerator);\n        ease2 = springEasing.ease;\n        duration = springEasing.duration;\n      }\n      duration !== null && duration !== void 0 ? duration : duration = defaultDuration;\n      const startTime = currentTime + calculatedDelay;\n      const targetTime = startTime + duration;\n      if (times.length === 1 && times[0] === 0) {\n        times[1] = 1;\n      }\n      const remainder = times.length - valueKeyframesAsList.length;\n      remainder > 0 && fillOffset(times, remainder);\n      valueKeyframesAsList.length === 1 && valueKeyframesAsList.unshift(null);\n      addKeyframes(valueSequence, valueKeyframesAsList, ease2, times, startTime, targetTime);\n      maxDuration3 = Math.max(calculatedDelay + duration, maxDuration3);\n      totalDuration = Math.max(targetTime, totalDuration);\n    };\n    if (isMotionValue(subject)) {\n      const subjectSequence = getSubjectSequence(subject, sequences);\n      resolveValueSequence(keyframes2, transition, getValueSequence(\"default\", subjectSequence));\n    } else {\n      const subjects = resolveSubjects(subject, keyframes2, scope, elementCache);\n      const numSubjects = subjects.length;\n      for (let subjectIndex = 0; subjectIndex < numSubjects; subjectIndex++) {\n        keyframes2 = keyframes2;\n        transition = transition;\n        const thisSubject = subjects[subjectIndex];\n        const subjectSequence = getSubjectSequence(thisSubject, sequences);\n        for (const key in keyframes2) {\n          resolveValueSequence(keyframes2[key], getValueTransition2(transition, key), getValueSequence(key, subjectSequence), subjectIndex, numSubjects);\n        }\n      }\n    }\n    prevTime = currentTime;\n    currentTime += maxDuration3;\n  }\n  sequences.forEach((valueSequences, element) => {\n    for (const key in valueSequences) {\n      const valueSequence = valueSequences[key];\n      valueSequence.sort(compareByTime);\n      const keyframes2 = [];\n      const valueOffset = [];\n      const valueEasing = [];\n      for (let i = 0; i < valueSequence.length; i++) {\n        const { at, value, easing } = valueSequence[i];\n        keyframes2.push(value);\n        valueOffset.push(progress(0, totalDuration, at));\n        valueEasing.push(easing || \"easeOut\");\n      }\n      if (valueOffset[0] !== 0) {\n        valueOffset.unshift(0);\n        keyframes2.unshift(keyframes2[0]);\n        valueEasing.unshift(defaultSegmentEasing);\n      }\n      if (valueOffset[valueOffset.length - 1] !== 1) {\n        valueOffset.push(1);\n        keyframes2.push(null);\n      }\n      if (!animationDefinitions.has(element)) {\n        animationDefinitions.set(element, {\n          keyframes: {},\n          transition: {}\n        });\n      }\n      const definition = animationDefinitions.get(element);\n      definition.keyframes[key] = keyframes2;\n      definition.transition[key] = {\n        ...defaultTransition,\n        duration: totalDuration,\n        ease: valueEasing,\n        times: valueOffset,\n        ...sequenceTransition\n      };\n    }\n  });\n  return animationDefinitions;\n}\nfunction getSubjectSequence(subject, sequences) {\n  !sequences.has(subject) && sequences.set(subject, {});\n  return sequences.get(subject);\n}\nfunction getValueSequence(name, sequences) {\n  if (!sequences[name])\n    sequences[name] = [];\n  return sequences[name];\n}\nfunction keyframesAsList(keyframes2) {\n  return Array.isArray(keyframes2) ? keyframes2 : [keyframes2];\n}\nfunction getValueTransition2(transition, key) {\n  return transition && transition[key] ? {\n    ...transition,\n    ...transition[key]\n  } : { ...transition };\n}\nvar isNumber = (keyframe) => typeof keyframe === \"number\";\nvar isNumberKeyframesArray = (keyframes2) => keyframes2.every(isNumber);\n\n// ../../../node_modules/framer-motion/dist/es/render/object/ObjectVisualElement.mjs\nfunction isObjectKey(key, object) {\n  return key in object;\n}\nvar ObjectVisualElement = class extends VisualElement {\n  constructor() {\n    super(...arguments);\n    this.type = \"object\";\n  }\n  readValueFromInstance(instance, key) {\n    if (isObjectKey(key, instance)) {\n      const value = instance[key];\n      if (typeof value === \"string\" || typeof value === \"number\") {\n        return value;\n      }\n    }\n    return void 0;\n  }\n  getBaseTargetFromProps() {\n    return void 0;\n  }\n  removeValueFromRenderState(key, renderState) {\n    delete renderState.output[key];\n  }\n  measureInstanceViewportBox() {\n    return createBox();\n  }\n  build(renderState, latestValues) {\n    Object.assign(renderState.output, latestValues);\n  }\n  renderInstance(instance, { output }) {\n    Object.assign(instance, output);\n  }\n  sortInstanceNodePosition() {\n    return 0;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/create-visual-element.mjs\nfunction createDOMVisualElement(element) {\n  const options = {\n    presenceContext: null,\n    props: {},\n    visualState: {\n      renderState: {\n        transform: {},\n        transformOrigin: {},\n        style: {},\n        vars: {},\n        attrs: {}\n      },\n      latestValues: {}\n    }\n  };\n  const node = isSVGElement(element) ? new SVGVisualElement(options) : new HTMLVisualElement(options);\n  node.mount(element);\n  visualElementStore.set(element, node);\n}\nfunction createObjectVisualElement(subject) {\n  const options = {\n    presenceContext: null,\n    props: {},\n    visualState: {\n      renderState: {\n        output: {}\n      },\n      latestValues: {}\n    }\n  };\n  const node = new ObjectVisualElement(options);\n  node.mount(subject);\n  visualElementStore.set(subject, node);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/subject.mjs\nfunction isSingleValue(subject, keyframes2) {\n  return isMotionValue(subject) || typeof subject === \"number\" || typeof subject === \"string\" && !isDOMKeyframes(keyframes2);\n}\nfunction animateSubject(subject, keyframes2, options, scope) {\n  const animations2 = [];\n  if (isSingleValue(subject, keyframes2)) {\n    animations2.push(animateSingleValue(subject, isDOMKeyframes(keyframes2) ? keyframes2.default || keyframes2 : keyframes2, options ? options.default || options : options));\n  } else {\n    const subjects = resolveSubjects(subject, keyframes2, scope);\n    const numSubjects = subjects.length;\n    invariant(Boolean(numSubjects), \"No valid elements provided.\");\n    for (let i = 0; i < numSubjects; i++) {\n      const thisSubject = subjects[i];\n      const createVisualElement = thisSubject instanceof Element ? createDOMVisualElement : createObjectVisualElement;\n      if (!visualElementStore.has(thisSubject)) {\n        createVisualElement(thisSubject);\n      }\n      const visualElement = visualElementStore.get(thisSubject);\n      const transition = { ...options };\n      if (\"delay\" in transition && typeof transition.delay === \"function\") {\n        transition.delay = transition.delay(i, numSubjects);\n      }\n      animations2.push(...animateTarget(visualElement, { ...keyframes2, transition }, {}));\n    }\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/sequence.mjs\nfunction animateSequence(sequence, options, scope) {\n  const animations2 = [];\n  const animationDefinitions = createAnimationsFromSequence(sequence, options, scope, { spring });\n  animationDefinitions.forEach(({ keyframes: keyframes2, transition }, subject) => {\n    animations2.push(...animateSubject(subject, keyframes2, transition));\n  });\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/index.mjs\nfunction isSequence(value) {\n  return Array.isArray(value) && Array.isArray(value[0]);\n}\nfunction createScopedAnimate(scope) {\n  function scopedAnimate(subjectOrSequence, optionsOrKeyframes, options) {\n    let animations2 = [];\n    if (isSequence(subjectOrSequence)) {\n      animations2 = animateSequence(subjectOrSequence, optionsOrKeyframes, scope);\n    } else {\n      animations2 = animateSubject(subjectOrSequence, optionsOrKeyframes, options, scope);\n    }\n    const animation = new GroupPlaybackControls(animations2);\n    if (scope) {\n      scope.animations.push(animation);\n    }\n    return animation;\n  }\n  return scopedAnimate;\n}\nvar animate = createScopedAnimate();\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animate.mjs\nfunction useAnimate() {\n  const scope = useConstant(() => ({\n    current: null,\n    // Will be hydrated by React\n    animations: []\n  }));\n  const animate2 = useConstant(() => createScopedAnimate(scope));\n  useUnmountEffect(() => {\n    scope.animations.forEach((animation) => animation.stop());\n  });\n  return [scope, animate2];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/style.mjs\nfunction setCSSVar(element, name, value) {\n  element.style.setProperty(`--${name}`, value);\n}\nfunction setStyle(element, name, value) {\n  element.style[name] = value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-partial-keyframes.mjs\nvar supportsPartialKeyframes = /* @__PURE__ */ memo(() => {\n  try {\n    document.createElement(\"div\").animate({ opacity: [1] });\n  } catch (e) {\n    return false;\n  }\n  return true;\n});\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/NativeAnimation.mjs\nvar state = /* @__PURE__ */ new WeakMap();\nfunction hydrateKeyframes(valueName, keyframes2, read) {\n  for (let i = 0; i < keyframes2.length; i++) {\n    if (keyframes2[i] === null) {\n      keyframes2[i] = i === 0 ? read() : keyframes2[i - 1];\n    }\n    if (typeof keyframes2[i] === \"number\" && browserNumberValueTypes[valueName]) {\n      keyframes2[i] = browserNumberValueTypes[valueName].transform(keyframes2[i]);\n    }\n  }\n  if (!supportsPartialKeyframes() && keyframes2.length < 2) {\n    keyframes2.unshift(read());\n  }\n}\nvar defaultEasing2 = \"easeOut\";\nfunction getElementAnimationState(element) {\n  const animationState = state.get(element) || /* @__PURE__ */ new Map();\n  state.set(element, animationState);\n  return state.get(element);\n}\nvar NativeAnimation = class {\n  constructor(element, valueName, valueKeyframes, options) {\n    const isCSSVar = valueName.startsWith(\"--\");\n    this.setValue = isCSSVar ? setCSSVar : setStyle;\n    this.options = options;\n    this.updateFinishedPromise();\n    invariant(typeof options.type !== \"string\", `animateMini doesn't support \"type\" as a string. Did you mean to import { spring } from \"framer-motion\"?`);\n    const existingAnimation = getElementAnimationState(element).get(valueName);\n    existingAnimation && existingAnimation.stop();\n    const readInitialKeyframe = () => {\n      return valueName.startsWith(\"--\") ? element.style.getPropertyValue(valueName) : window.getComputedStyle(element)[valueName];\n    };\n    if (!Array.isArray(valueKeyframes)) {\n      valueKeyframes = [valueKeyframes];\n    }\n    hydrateKeyframes(valueName, valueKeyframes, readInitialKeyframe);\n    if (isGenerator(options.type)) {\n      const generatorOptions = createGeneratorEasing(options, 100, options.type);\n      options.ease = supportsLinearEasing() ? generatorOptions.ease : defaultEasing2;\n      options.duration = secondsToMilliseconds(generatorOptions.duration);\n      options.type = \"keyframes\";\n    } else {\n      options.ease = options.ease || defaultEasing2;\n    }\n    this.removeAnimation = () => {\n      var _a;\n      return (_a = state.get(element)) === null || _a === void 0 ? void 0 : _a.delete(valueName);\n    };\n    const onFinish = () => {\n      this.setValue(element, valueName, getFinalKeyframe(valueKeyframes, this.options));\n      this.cancel();\n      this.resolveFinishedPromise();\n    };\n    if (!supportsWaapi()) {\n      onFinish();\n    } else {\n      this.animation = startWaapiAnimation(element, valueName, valueKeyframes, options);\n      if (options.autoplay === false) {\n        this.animation.pause();\n      }\n      this.animation.onfinish = onFinish;\n      if (this.pendingTimeline) {\n        attachTimeline(this.animation, this.pendingTimeline);\n      }\n      getElementAnimationState(element).set(valueName, this);\n    }\n  }\n  get duration() {\n    return millisecondsToSeconds(this.options.duration || 300);\n  }\n  get time() {\n    var _a;\n    if (this.animation) {\n      return millisecondsToSeconds(((_a = this.animation) === null || _a === void 0 ? void 0 : _a.currentTime) || 0);\n    }\n    return 0;\n  }\n  set time(newTime) {\n    if (this.animation) {\n      this.animation.currentTime = secondsToMilliseconds(newTime);\n    }\n  }\n  get speed() {\n    return this.animation ? this.animation.playbackRate : 1;\n  }\n  set speed(newSpeed) {\n    if (this.animation) {\n      this.animation.playbackRate = newSpeed;\n    }\n  }\n  get state() {\n    return this.animation ? this.animation.playState : \"finished\";\n  }\n  get startTime() {\n    return this.animation ? this.animation.startTime : null;\n  }\n  play() {\n    if (this.state === \"finished\") {\n      this.updateFinishedPromise();\n    }\n    this.animation && this.animation.play();\n  }\n  pause() {\n    this.animation && this.animation.pause();\n  }\n  stop() {\n    if (!this.animation || this.state === \"idle\" || this.state === \"finished\") {\n      return;\n    }\n    if (this.animation.commitStyles) {\n      this.animation.commitStyles();\n    }\n    this.cancel();\n  }\n  complete() {\n    this.animation && this.animation.finish();\n  }\n  cancel() {\n    this.removeAnimation();\n    try {\n      this.animation && this.animation.cancel();\n    } catch (e) {\n    }\n  }\n  /**\n   * Allows the returned animation to be awaited or promise-chained. Currently\n   * resolves when the animation finishes at all but in a future update could/should\n   * reject if its cancels.\n   */\n  then(resolve, reject) {\n    return this.currentFinishedPromise.then(resolve, reject);\n  }\n  updateFinishedPromise() {\n    this.currentFinishedPromise = new Promise((resolve) => {\n      this.resolveFinishedPromise = resolve;\n    });\n  }\n  attachTimeline(timeline) {\n    if (!this.animation) {\n      this.pendingTimeline = timeline;\n    } else {\n      attachTimeline(this.animation, timeline);\n    }\n    return noop;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs\nfunction animateElements(elementOrSelector, keyframes2, options, scope) {\n  const elements = resolveElements(elementOrSelector, scope);\n  const numElements = elements.length;\n  invariant(Boolean(numElements), \"No valid element provided.\");\n  const animations2 = [];\n  for (let i = 0; i < numElements; i++) {\n    const element = elements[i];\n    const elementTransition = { ...options };\n    if (typeof elementTransition.delay === \"function\") {\n      elementTransition.delay = elementTransition.delay(i, numElements);\n    }\n    for (const valueName in keyframes2) {\n      const valueKeyframes = keyframes2[valueName];\n      const valueOptions = {\n        ...getValueTransition(options, valueName)\n      };\n      valueOptions.duration = valueOptions.duration ? secondsToMilliseconds(valueOptions.duration) : valueOptions.duration;\n      valueOptions.delay = secondsToMilliseconds(valueOptions.delay || 0);\n      animations2.push(new NativeAnimation(element, valueName, valueKeyframes, valueOptions));\n    }\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs\nvar createScopedWaapiAnimate = (scope) => {\n  function scopedAnimate(elementOrSelector, keyframes2, options) {\n    return new GroupPlaybackControls(animateElements(elementOrSelector, keyframes2, options, scope));\n  }\n  return scopedAnimate;\n};\nvar animateMini = /* @__PURE__ */ createScopedWaapiAnimate();\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animate-style.mjs\nfunction useAnimateMini() {\n  const scope = useConstant(() => ({\n    current: null,\n    // Will be hydrated by React\n    animations: []\n  }));\n  const animate2 = useConstant(() => createScopedWaapiAnimate(scope));\n  useUnmountEffect(() => {\n    scope.animations.forEach((animation) => animation.stop());\n  });\n  return [scope, animate2];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs\nfunction useAnimationControls() {\n  const controls = useConstant(animationControls);\n  useIsomorphicLayoutEffect(controls.mount, []);\n  return controls;\n}\nvar useAnimation = useAnimationControls;\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-cycle.mjs\nimport { useRef as useRef10, useState as useState6, useCallback as useCallback5 } from \"react\";\nfunction useCycle(...items) {\n  const index = useRef10(0);\n  const [item, setItem] = useState6(items[index.current]);\n  const runCycle = useCallback5(\n    (next) => {\n      index.current = typeof next !== \"number\" ? wrap(0, items.length, index.current + 1) : next;\n      setItem(items[index.current]);\n    },\n    // The array will change on each call, but by putting items.length at\n    // the front of this array, we guarantee the dependency comparison will match up\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [items.length, ...items]\n  );\n  return [item, runCycle];\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs\nvar thresholds = {\n  some: 0,\n  all: 1\n};\nfunction inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = \"some\" } = {}) {\n  const elements = resolveElements(elementOrSelector);\n  const activeIntersections = /* @__PURE__ */ new WeakMap();\n  const onIntersectionChange = (entries) => {\n    entries.forEach((entry) => {\n      const onEnd = activeIntersections.get(entry.target);\n      if (entry.isIntersecting === Boolean(onEnd))\n        return;\n      if (entry.isIntersecting) {\n        const newOnEnd = onStart(entry);\n        if (typeof newOnEnd === \"function\") {\n          activeIntersections.set(entry.target, newOnEnd);\n        } else {\n          observer2.unobserve(entry.target);\n        }\n      } else if (onEnd) {\n        onEnd(entry);\n        activeIntersections.delete(entry.target);\n      }\n    });\n  };\n  const observer2 = new IntersectionObserver(onIntersectionChange, {\n    root,\n    rootMargin,\n    threshold: typeof amount === \"number\" ? amount : thresholds[amount]\n  });\n  elements.forEach((element) => observer2.observe(element));\n  return () => observer2.disconnect();\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-in-view.mjs\nimport { useState as useState7, useEffect as useEffect10 } from \"react\";\nfunction useInView(ref, { root, margin, amount, once = false } = {}) {\n  const [isInView, setInView] = useState7(false);\n  useEffect10(() => {\n    if (!ref.current || once && isInView)\n      return;\n    const onEnter = () => {\n      setInView(true);\n      return once ? void 0 : () => setInView(false);\n    };\n    const options = {\n      root: root && root.current || void 0,\n      margin,\n      amount\n    };\n    return inView(ref.current, onEnter, options);\n  }, [root, ref, margin, once, amount]);\n  return isInView;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.mjs\nvar DragControls = class {\n  constructor() {\n    this.componentControls = /* @__PURE__ */ new Set();\n  }\n  /**\n   * Subscribe a component's internal `VisualElementDragControls` to the user-facing API.\n   *\n   * @internal\n   */\n  subscribe(controls) {\n    this.componentControls.add(controls);\n    return () => this.componentControls.delete(controls);\n  }\n  /**\n   * Start a drag gesture on every `motion` component that has this set of drag controls\n   * passed into it via the `dragControls` prop.\n   *\n   * ```jsx\n   * dragControls.start(e, {\n   *   snapToCursor: true\n   * })\n   * ```\n   *\n   * @param event - PointerEvent\n   * @param options - Options\n   *\n   * @public\n   */\n  start(event, options) {\n    this.componentControls.forEach((controls) => {\n      controls.start(event.nativeEvent || event, options);\n    });\n  }\n};\nvar createDragControls = () => new DragControls();\nfunction useDragControls() {\n  return useConstant(createDragControls);\n}\n\n// ../../../node_modules/framer-motion/dist/es/events/use-dom-event.mjs\nimport { useEffect as useEffect11 } from \"react\";\nfunction useDomEvent(ref, eventName, handler, options) {\n  useEffect11(() => {\n    const element = ref.current;\n    if (handler && element) {\n      return addDomEvent(element, eventName, handler, options);\n    }\n  }, [ref, eventName, handler, options]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/is-motion-component.mjs\nfunction isMotionComponent(component) {\n  return component !== null && typeof component === \"object\" && motionComponentSymbol in component;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/unwrap-motion-component.mjs\nfunction unwrapMotionComponent(component) {\n  if (isMotionComponent(component)) {\n    return component[motionComponentSymbol];\n  }\n  return void 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/use-instant-layout-transition.mjs\nfunction useInstantLayoutTransition() {\n  return startTransition;\n}\nfunction startTransition(callback) {\n  if (!rootProjectionNode.current)\n    return;\n  rootProjectionNode.current.isUpdating = false;\n  rootProjectionNode.current.blockUpdate();\n  callback && callback();\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-instant-transition.mjs\nimport { useRef as useRef11, useEffect as useEffect12 } from \"react\";\nfunction useInstantTransition() {\n  const [forceUpdate, forcedRenderCount] = useForceUpdate();\n  const startInstantLayoutTransition = useInstantLayoutTransition();\n  const unlockOnFrameRef = useRef11();\n  useEffect12(() => {\n    frame.postRender(() => frame.postRender(() => {\n      if (forcedRenderCount !== unlockOnFrameRef.current)\n        return;\n      instantAnimationState.current = false;\n    }));\n  }, [forcedRenderCount]);\n  return (callback) => {\n    startInstantLayoutTransition(() => {\n      instantAnimationState.current = true;\n      forceUpdate();\n      callback();\n      unlockOnFrameRef.current = forcedRenderCount + 1;\n    });\n  };\n}\nfunction disableInstantTransitions() {\n  instantAnimationState.current = false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/use-reset-projection.mjs\nimport { useCallback as useCallback6 } from \"react\";\nfunction useResetProjection() {\n  const reset = useCallback6(() => {\n    const root = rootProjectionNode.current;\n    if (!root)\n      return;\n    root.resetTree();\n  }, []);\n  return reset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/store-id.mjs\nvar appearStoreId = (elementId, valueName) => {\n  const key = transformProps.has(valueName) ? \"transform\" : valueName;\n  return `${elementId}: ${key}`;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/store.mjs\nvar appearAnimationStore = /* @__PURE__ */ new Map();\nvar appearComplete = /* @__PURE__ */ new Map();\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/handoff.mjs\nfunction handoffOptimizedAppearAnimation(elementId, valueName, frame2) {\n  var _a;\n  const storeId = appearStoreId(elementId, valueName);\n  const optimisedAnimation = appearAnimationStore.get(storeId);\n  if (!optimisedAnimation) {\n    return null;\n  }\n  const { animation, startTime } = optimisedAnimation;\n  function cancelAnimation() {\n    var _a2;\n    (_a2 = window.MotionCancelOptimisedAnimation) === null || _a2 === void 0 ? void 0 : _a2.call(window, elementId, valueName, frame2);\n  }\n  animation.onfinish = cancelAnimation;\n  if (startTime === null || ((_a = window.MotionHandoffIsComplete) === null || _a === void 0 ? void 0 : _a.call(window, elementId))) {\n    cancelAnimation();\n    return null;\n  } else {\n    return startTime;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/start.mjs\nvar startFrameTime;\nvar readyAnimation;\nvar suspendedAnimations = /* @__PURE__ */ new Set();\nfunction resumeSuspendedAnimations() {\n  suspendedAnimations.forEach((data) => {\n    data.animation.play();\n    data.animation.startTime = data.startTime;\n  });\n  suspendedAnimations.clear();\n}\nfunction startOptimizedAppearAnimation(element, name, keyframes2, options, onReady) {\n  if (window.MotionIsMounted) {\n    return;\n  }\n  const id4 = element.dataset[optimizedAppearDataId];\n  if (!id4)\n    return;\n  window.MotionHandoffAnimation = handoffOptimizedAppearAnimation;\n  const storeId = appearStoreId(id4, name);\n  if (!readyAnimation) {\n    readyAnimation = startWaapiAnimation(\n      element,\n      name,\n      [keyframes2[0], keyframes2[0]],\n      /**\n       * 10 secs is basically just a super-safe duration to give Chrome\n       * long enough to get the animation ready.\n       */\n      { duration: 1e4, ease: \"linear\" }\n    );\n    appearAnimationStore.set(storeId, {\n      animation: readyAnimation,\n      startTime: null\n    });\n    window.MotionHandoffAnimation = handoffOptimizedAppearAnimation;\n    window.MotionHasOptimisedAnimation = (elementId, valueName) => {\n      if (!elementId)\n        return false;\n      if (!valueName) {\n        return appearComplete.has(elementId);\n      }\n      const animationId = appearStoreId(elementId, valueName);\n      return Boolean(appearAnimationStore.get(animationId));\n    };\n    window.MotionHandoffMarkAsComplete = (elementId) => {\n      if (appearComplete.has(elementId)) {\n        appearComplete.set(elementId, true);\n      }\n    };\n    window.MotionHandoffIsComplete = (elementId) => {\n      return appearComplete.get(elementId) === true;\n    };\n    window.MotionCancelOptimisedAnimation = (elementId, valueName, frame2, canResume) => {\n      const animationId = appearStoreId(elementId, valueName);\n      const data = appearAnimationStore.get(animationId);\n      if (!data)\n        return;\n      if (frame2 && canResume === void 0) {\n        frame2.postRender(() => {\n          frame2.postRender(() => {\n            data.animation.cancel();\n          });\n        });\n      } else {\n        data.animation.cancel();\n      }\n      if (frame2 && canResume) {\n        suspendedAnimations.add(data);\n        frame2.render(resumeSuspendedAnimations);\n      } else {\n        appearAnimationStore.delete(animationId);\n        if (!appearAnimationStore.size) {\n          window.MotionCancelOptimisedAnimation = void 0;\n        }\n      }\n    };\n    window.MotionCheckAppearSync = (visualElement, valueName, value) => {\n      var _a, _b;\n      const appearId = getOptimisedAppearId(visualElement);\n      if (!appearId)\n        return;\n      const valueIsOptimised = (_a = window.MotionHasOptimisedAnimation) === null || _a === void 0 ? void 0 : _a.call(window, appearId, valueName);\n      const externalAnimationValue = (_b = visualElement.props.values) === null || _b === void 0 ? void 0 : _b[valueName];\n      if (!valueIsOptimised || !externalAnimationValue)\n        return;\n      const removeSyncCheck = value.on(\"change\", (latestValue) => {\n        var _a2;\n        if (externalAnimationValue.get() !== latestValue) {\n          (_a2 = window.MotionCancelOptimisedAnimation) === null || _a2 === void 0 ? void 0 : _a2.call(window, appearId, valueName);\n          removeSyncCheck();\n        }\n      });\n      return removeSyncCheck;\n    };\n  }\n  const startAnimation = () => {\n    readyAnimation.cancel();\n    const appearAnimation = startWaapiAnimation(element, name, keyframes2, options);\n    if (startFrameTime === void 0) {\n      startFrameTime = performance.now();\n    }\n    appearAnimation.startTime = startFrameTime;\n    appearAnimationStore.set(storeId, {\n      animation: appearAnimation,\n      startTime: startFrameTime\n    });\n    if (onReady)\n      onReady(appearAnimation);\n  };\n  appearComplete.set(id4, false);\n  if (readyAnimation.ready) {\n    readyAnimation.ready.then(startAnimation).catch(noop);\n  } else {\n    startAnimation();\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animated-state.mjs\nimport { useState as useState8, useLayoutEffect as useLayoutEffect2 } from \"react\";\nvar createObject = () => ({});\nvar StateVisualElement = class extends VisualElement {\n  constructor() {\n    super(...arguments);\n    this.measureInstanceViewportBox = createBox;\n  }\n  build() {\n  }\n  resetTransform() {\n  }\n  restoreTransform() {\n  }\n  removeValueFromRenderState() {\n  }\n  renderInstance() {\n  }\n  scrapeMotionValuesFromProps() {\n    return createObject();\n  }\n  getBaseTargetFromProps() {\n    return void 0;\n  }\n  readValueFromInstance(_state, key, options) {\n    return options.initialState[key] || 0;\n  }\n  sortInstanceNodePosition() {\n    return 0;\n  }\n};\nvar useVisualState = makeUseVisualState({\n  scrapeMotionValuesFromProps: createObject,\n  createRenderState: createObject\n});\nfunction useAnimatedState(initialState) {\n  const [animationState, setAnimationState] = useState8(initialState);\n  const visualState = useVisualState({}, false);\n  const element = useConstant(() => {\n    return new StateVisualElement({\n      props: {\n        onUpdate: (v) => {\n          setAnimationState({ ...v });\n        }\n      },\n      visualState,\n      presenceContext: null\n    }, { initialState });\n  });\n  useLayoutEffect2(() => {\n    element.mount({});\n    return () => element.unmount();\n  }, [element]);\n  const startAnimation = useConstant(() => (animationDefinition) => {\n    return animateVisualElement(element, animationDefinition);\n  });\n  return [animationState, startAnimation];\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-inverted-scale.mjs\nimport { useContext as useContext15 } from \"react\";\nvar maxScale = 1e5;\nvar invertScale = (scale2) => scale2 > 1e-3 ? 1 / scale2 : maxScale;\nvar hasWarned = false;\nfunction useInvertedScale(scale2) {\n  let parentScaleX = useMotionValue(1);\n  let parentScaleY = useMotionValue(1);\n  const { visualElement } = useContext15(MotionContext);\n  invariant(!!(scale2 || visualElement), \"If no scale values are provided, useInvertedScale must be used within a child of another motion component.\");\n  warning(hasWarned, \"useInvertedScale is deprecated and will be removed in 3.0. Use the layout prop instead.\");\n  hasWarned = true;\n  if (scale2) {\n    parentScaleX = scale2.scaleX || parentScaleX;\n    parentScaleY = scale2.scaleY || parentScaleY;\n  } else if (visualElement) {\n    parentScaleX = visualElement.getValue(\"scaleX\", 1);\n    parentScaleY = visualElement.getValue(\"scaleY\", 1);\n  }\n  const scaleX = useTransform(parentScaleX, invertScale);\n  const scaleY = useTransform(parentScaleY, invertScale);\n  return { scaleX, scaleY };\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimateSharedLayout.mjs\nimport { jsx as jsx9 } from \"react/jsx-runtime\";\nimport * as React3 from \"react\";\nvar id3 = 0;\nvar AnimateSharedLayout = ({ children }) => {\n  React3.useEffect(() => {\n    invariant(false, \"AnimateSharedLayout is deprecated: https://www.framer.com/docs/guide-upgrade/##shared-layout-animations\");\n  }, []);\n  return jsx9(LayoutGroup, { id: useConstant(() => `asl-${id3++}`), children });\n};\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/namespace.mjs\nvar namespace_exports = {};\n__export(namespace_exports, {\n  Group: () => ReorderGroup,\n  Item: () => ReorderItem\n});\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Group.mjs\nimport { jsx as jsx10 } from \"react/jsx-runtime\";\nimport { forwardRef as forwardRef2, useRef as useRef12, useEffect as useEffect14 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/ReorderContext.mjs\nimport { createContext as createContext8 } from \"react\";\nvar ReorderContext = createContext8(null);\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/utils/check-reorder.mjs\nfunction checkReorder(order, value, offset, velocity) {\n  if (!velocity)\n    return order;\n  const index = order.findIndex((item2) => item2.value === value);\n  if (index === -1)\n    return order;\n  const nextOffset = velocity > 0 ? 1 : -1;\n  const nextItem = order[index + nextOffset];\n  if (!nextItem)\n    return order;\n  const item = order[index];\n  const nextLayout = nextItem.layout;\n  const nextItemCenter = mixNumber(nextLayout.min, nextLayout.max, 0.5);\n  if (nextOffset === 1 && item.layout.max + offset > nextItemCenter || nextOffset === -1 && item.layout.min + offset < nextItemCenter) {\n    return moveItem(order, index, index + nextOffset);\n  }\n  return order;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Group.mjs\nfunction ReorderGroupComponent({ children, as = \"ul\", axis = \"y\", onReorder, values, ...props }, externalRef) {\n  const Component3 = useConstant(() => motion[as]);\n  const order = [];\n  const isReordering = useRef12(false);\n  invariant(Boolean(values), \"Reorder.Group must be provided a values prop\");\n  const context = {\n    axis,\n    registerItem: (value, layout2) => {\n      const idx = order.findIndex((entry) => value === entry.value);\n      if (idx !== -1) {\n        order[idx].layout = layout2[axis];\n      } else {\n        order.push({ value, layout: layout2[axis] });\n      }\n      order.sort(compareMin);\n    },\n    updateOrder: (item, offset, velocity) => {\n      if (isReordering.current)\n        return;\n      const newOrder = checkReorder(order, item, offset, velocity);\n      if (order !== newOrder) {\n        isReordering.current = true;\n        onReorder(newOrder.map(getValue).filter((value) => values.indexOf(value) !== -1));\n      }\n    }\n  };\n  useEffect14(() => {\n    isReordering.current = false;\n  });\n  return jsx10(Component3, { ...props, ref: externalRef, ignoreStrict: true, children: jsx10(ReorderContext.Provider, { value: context, children }) });\n}\nvar ReorderGroup = /* @__PURE__ */ forwardRef2(ReorderGroupComponent);\nfunction getValue(item) {\n  return item.value;\n}\nfunction compareMin(a, b) {\n  return a.layout.min - b.layout.min;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Item.mjs\nimport { jsx as jsx11 } from \"react/jsx-runtime\";\nimport { forwardRef as forwardRef3, useContext as useContext16 } from \"react\";\nfunction useDefaultMotionValue(value, defaultValue = 0) {\n  return isMotionValue(value) ? value : useMotionValue(defaultValue);\n}\nfunction ReorderItemComponent({ children, style = {}, value, as = \"li\", onDrag, layout: layout2 = true, ...props }, externalRef) {\n  const Component3 = useConstant(() => motion[as]);\n  const context = useContext16(ReorderContext);\n  const point2 = {\n    x: useDefaultMotionValue(style.x),\n    y: useDefaultMotionValue(style.y)\n  };\n  const zIndex = useTransform([point2.x, point2.y], ([latestX, latestY]) => latestX || latestY ? 1 : \"unset\");\n  invariant(Boolean(context), \"Reorder.Item must be a child of Reorder.Group\");\n  const { axis, registerItem, updateOrder } = context;\n  return jsx11(Component3, { drag: axis, ...props, dragSnapToOrigin: true, style: { ...style, x: point2.x, y: point2.y, zIndex }, layout: layout2, onDrag: (event, gesturePoint) => {\n    const { velocity } = gesturePoint;\n    velocity[axis] && updateOrder(value, point2[axis].get(), velocity[axis]);\n    onDrag && onDrag(event, gesturePoint);\n  }, onLayoutMeasure: (measured) => registerItem(value, measured), ref: externalRef, ignoreStrict: true, children });\n}\nvar ReorderItem = /* @__PURE__ */ forwardRef3(ReorderItemComponent);\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/stagger.mjs\nfunction getOriginIndex(from, total) {\n  if (from === \"first\") {\n    return 0;\n  } else {\n    const lastIndex = total - 1;\n    return from === \"last\" ? lastIndex : lastIndex / 2;\n  }\n}\nfunction stagger(duration = 0.1, { startDelay = 0, from = 0, ease: ease2 } = {}) {\n  return (i, total) => {\n    const fromIndex = typeof from === \"number\" ? from : getOriginIndex(from, total);\n    const distance2 = Math.abs(fromIndex - i);\n    let delay2 = duration * distance2;\n    if (ease2) {\n      const maxDelay = total * duration;\n      const easingFunction = easingDefinitionToFunction(ease2);\n      delay2 = easingFunction(delay2 / maxDelay) * maxDelay;\n    }\n    return startDelay + delay2;\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/index-legacy.mjs\nvar sync = frame;\nvar cancelSync = stepsOrder.reduce((acc, key) => {\n  acc[key] = (process2) => cancelFrame(process2);\n  return acc;\n}, {});\n\n// ../../../node_modules/framer-motion/dist/es/easing/steps.mjs\nfunction steps(numSteps, direction = \"end\") {\n  return (progress2) => {\n    progress2 = direction === \"end\" ? Math.min(progress2, 0.999) : Math.max(progress2, 1e-3);\n    const expanded = progress2 * numSteps;\n    const rounded = direction === \"end\" ? Math.floor(expanded) : Math.ceil(expanded);\n    return clamp(0, 1, rounded / numSteps);\n  };\n}\n\nexport {\n  MotionGlobalConfig,\n  frame,\n  cancelFrame,\n  frameData,\n  frameSteps,\n  cubicBezier,\n  mirrorEasing,\n  reverseEasing,\n  backOut,\n  backIn,\n  backInOut,\n  anticipate,\n  circIn,\n  circOut,\n  circInOut,\n  warning,\n  invariant,\n  clamp,\n  px,\n  color,\n  complex,\n  findSpring,\n  spring,\n  inertia,\n  easeIn,\n  easeOut,\n  easeInOut,\n  pipe,\n  progress,\n  mix,\n  interpolate,\n  keyframes,\n  animateValue,\n  AcceleratedAnimation,\n  MotionValue,\n  motionValue,\n  optimizedAppearDataAttribute,\n  isMotionValue,\n  animateVisualElement,\n  animations,\n  addPointerInfo,\n  addPointerEvent,\n  distance,\n  distance2D,\n  isDragActive,\n  calcLength,\n  createBox,\n  PresenceContext,\n  usePresence,\n  useIsPresent,\n  LayoutGroupContext,\n  SwitchLayoutGroupContext,\n  addScaleCorrector,\n  FlatTree,\n  resolveMotionValue,\n  delay,\n  MotionConfigContext,\n  MotionContext,\n  isBrowser,\n  useIsomorphicLayoutEffect,\n  createRendererMotionComponent,\n  makeUseVisualState,\n  buildTransform,\n  isValidMotionProp,\n  filterProps,\n  visualElementStore,\n  VisualElement,\n  motion,\n  m,\n  AnimatePresence,\n  MotionConfig,\n  LazyMotion,\n  DeprecatedLayoutGroupContext,\n  useForceUpdate,\n  LayoutGroup,\n  domMin,\n  domAnimation,\n  domMax,\n  useMotionValue,\n  useMotionTemplate,\n  transform,\n  useTransform,\n  useSpring,\n  useMotionValueEvent,\n  useVelocity,\n  scrollInfo,\n  scroll,\n  useScroll,\n  useElementScroll,\n  useViewportScroll,\n  useAnimationFrame,\n  useTime,\n  useWillChange,\n  useReducedMotion,\n  useReducedMotionConfig,\n  animationControls,\n  useUnmountEffect,\n  wrap,\n  createScopedAnimate,\n  animate,\n  useAnimate,\n  animateMini,\n  useAnimateMini,\n  useAnimationControls,\n  useAnimation,\n  useCycle,\n  inView,\n  useInView,\n  DragControls,\n  useDragControls,\n  useDomEvent,\n  isMotionComponent,\n  unwrapMotionComponent,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  disableInstantTransitions,\n  useResetProjection,\n  startOptimizedAppearAnimation,\n  useAnimatedState,\n  useInvertedScale,\n  AnimateSharedLayout,\n  namespace_exports,\n  stagger,\n  sync,\n  cancelSync,\n  steps\n};\n//# sourceMappingURL=chunk-4Z6NVKPU.mjs.map\n", "import*as a from\"react\";import*as i from\"scheduler\";var u=\"default\"in a?a.default:a;var o=\"default\"in i?i.default:i;var s={};var w=u,x=o;function p(a){for(var i=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,u=1;u<arguments.length;u++)i+=\"&args[]=\"+encodeURIComponent(arguments[u]);return\"Minified React error #\"+a+\"; visit \"+i+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var C=new Set,z={};function fa(a,i){ha(a,i);ha(a+\"Capture\",i)}function ha(a,i){z[a]=i;for(a=0;a<i.length;a++)C.add(i[a])}var N=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),_=Object.prototype.hasOwnProperty,j=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,P={},T={};function oa(a){if(_.call(T,a))return!0;if(_.call(P,a))return!1;if(j.test(a))return T[a]=!0;P[a]=!0;return!1}function pa(a,i,u,o){if(null!==u&&0===u.type)return!1;switch(typeof i){case\"function\":case\"symbol\":return!0;case\"boolean\":if(o)return!1;if(null!==u)return!u.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}function qa(a,i,u,o){if(null===i||\"undefined\"===typeof i||pa(a,i,u,o))return!0;if(o)return!1;if(null!==u)switch(u.type){case 3:return!i;case 4:return!1===i;case 5:return isNaN(i);case 6:return isNaN(i)||1>i}return!1}function v(a,i,u,o,s,w,x){this.acceptsBooleans=2===i||3===i||4===i;this.attributeName=o;this.attributeNamespace=s;this.mustUseProperty=u;this.propertyName=a;this.type=i;this.sanitizeURL=w;this.removeEmptyString=x}var M={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach((function(a){M[a]=new v(a,0,!1,a,null,!1,!1)}));[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach((function(a){var i=a[0];M[i]=new v(i,1,!1,a[1],null,!1,!1)}));[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach((function(a){M[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)}));[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach((function(a){M[a]=new v(a,2,!1,a,null,!1,!1)}));\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach((function(a){M[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)}));[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach((function(a){M[a]=new v(a,3,!0,a,null,!1,!1)}));[\"capture\",\"download\"].forEach((function(a){M[a]=new v(a,4,!1,a,null,!1,!1)}));[\"cols\",\"rows\",\"size\",\"span\"].forEach((function(a){M[a]=new v(a,6,!1,a,null,!1,!1)}));[\"rowSpan\",\"start\"].forEach((function(a){M[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)}));var F=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach((function(a){var i=a.replace(F,sa);M[i]=new v(i,1,!1,a,null,!1,!1)}));\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach((function(a){var i=a.replace(F,sa);M[i]=new v(i,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)}));[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach((function(a){var i=a.replace(F,sa);M[i]=new v(i,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)}));[\"tabIndex\",\"crossOrigin\"].forEach((function(a){M[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)}));M.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach((function(a){M[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)}));function ta(a,i,u,o){var s=M.hasOwnProperty(i)?M[i]:null;(null!==s?0!==s.type:o||!(2<i.length)||\"o\"!==i[0]&&\"O\"!==i[0]||\"n\"!==i[1]&&\"N\"!==i[1])&&(qa(i,u,s,o)&&(u=null),o||null===s?oa(i)&&(null===u?a.removeAttribute(i):a.setAttribute(i,\"\"+u)):s.mustUseProperty?a[s.propertyName]=null===u?3!==s.type&&\"\":u:(i=s.attributeName,o=s.attributeNamespace,null===u?a.removeAttribute(i):(s=s.type,u=3===s||4===s&&!0===u?\"\":\"\"+u,o?a.setAttributeNS(o,i,u):a.setAttribute(i,u))))}var R=w.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,O=Symbol.for(\"react.element\"),I=Symbol.for(\"react.portal\"),U=Symbol.for(\"react.fragment\"),V=Symbol.for(\"react.strict_mode\"),A=Symbol.for(\"react.profiler\"),B=Symbol.for(\"react.provider\"),H=Symbol.for(\"react.context\"),$=Symbol.for(\"react.forward_ref\"),K=Symbol.for(\"react.suspense\"),Y=Symbol.for(\"react.suspense_list\"),Z=Symbol.for(\"react.memo\"),X=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");var ee=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var le=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=le&&a[le]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var ae,ie=Object.assign;function Ma(a){if(void 0===ae)try{throw Error()}catch(a){var i=a.stack.trim().match(/\\n( *(at )?)/);ae=i&&i[1]||\"\"}return\"\\n\"+ae+a}var ce=!1;function Oa(a,i){if(!a||ce)return\"\";ce=!0;var u=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(i)if(i=function(){throw Error()},Object.defineProperty(i.prototype,\"props\",{set:function(){throw Error()}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(i,[])}catch(a){var o=a}Reflect.construct(a,[],i)}else{try{i.call()}catch(a){o=a}a.call(i.prototype)}else{try{throw Error()}catch(a){o=a}a()}}catch(i){if(i&&o&&\"string\"===typeof i.stack){for(var s=i.stack.split(\"\\n\"),w=o.stack.split(\"\\n\"),x=s.length-1,C=w.length-1;1<=x&&0<=C&&s[x]!==w[C];)C--;for(;1<=x&&0<=C;x--,C--)if(s[x]!==w[C]){if(1!==x||1!==C)do{if(x--,C--,0>C||s[x]!==w[C]){var z=\"\\n\"+s[x].replace(\" at new \",\" at \");a.displayName&&z.includes(\"<anonymous>\")&&(z=z.replace(\"<anonymous>\",a.displayName));return z}}while(1<=x&&0<=C);break}}}finally{ce=!1,Error.prepareStackTrace=u}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}function Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}function Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case U:return\"Fragment\";case I:return\"Portal\";case A:return\"Profiler\";case V:return\"StrictMode\";case K:return\"Suspense\";case Y:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case H:return(a.displayName||\"Context\")+\".Consumer\";case B:return(a._context.displayName||\"Context\")+\".Provider\";case $:var i=a.render;a=a.displayName;a||(a=i.displayName||i.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Z:return i=a.displayName||null,null!==i?i:Qa(a.type)||\"Memo\";case X:i=a._payload;a=a._init;try{return Qa(a(i))}catch(a){}}return null}function Ra(a){var i=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(i.displayName||\"Context\")+\".Consumer\";case 10:return(i._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=i.render,a=a.displayName||a.name||\"\",i.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return i;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(i);case 8:return i===V?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";case 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof i)return i.displayName||i.name||null;if(\"string\"===typeof i)return i}return null}function Sa(a){switch(typeof a){case\"boolean\":case\"number\":case\"string\":case\"undefined\":return a;case\"object\":return a;default:return\"\"}}function Ta(a){var i=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===i||\"radio\"===i)}function Ua(a){var i=Ta(a)?\"checked\":\"value\",u=Object.getOwnPropertyDescriptor(a.constructor.prototype,i),o=\"\"+a[i];if(!a.hasOwnProperty(i)&&\"undefined\"!==typeof u&&\"function\"===typeof u.get&&\"function\"===typeof u.set){var s=u.get,w=u.set;Object.defineProperty(a,i,{configurable:!0,get:function(){return s.call(this)},set:function(a){o=\"\"+a;w.call(this,a)}});Object.defineProperty(a,i,{enumerable:u.enumerable});return{getValue:function(){return o},setValue:function(a){o=\"\"+a},stopTracking:function(){a._valueTracker=null;delete a[i]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var i=a._valueTracker;if(!i)return!0;var u=i.getValue();var o=\"\";a&&(o=Ta(a)?a.checked?\"true\":\"false\":a.value);a=o;return a!==u&&(i.setValue(a),!0)}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(i){return a.body}}function Ya(a,i){var u=i.checked;return ie({},i,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=u?u:a._wrapperState.initialChecked})}function Za(a,i){var u=null==i.defaultValue?\"\":i.defaultValue,o=null!=i.checked?i.checked:i.defaultChecked;u=Sa(null!=i.value?i.value:u);a._wrapperState={initialChecked:o,initialValue:u,controlled:\"checkbox\"===i.type||\"radio\"===i.type?null!=i.checked:null!=i.value}}function ab(a,i){i=i.checked;null!=i&&ta(a,\"checked\",i,!1)}function bb(a,i){ab(a,i);var u=Sa(i.value),o=i.type;if(null!=u)\"number\"===o?(0===u&&\"\"===a.value||a.value!=u)&&(a.value=\"\"+u):a.value!==\"\"+u&&(a.value=\"\"+u);else if(\"submit\"===o||\"reset\"===o){a.removeAttribute(\"value\");return}i.hasOwnProperty(\"value\")?cb(a,i.type,u):i.hasOwnProperty(\"defaultValue\")&&cb(a,i.type,Sa(i.defaultValue));null==i.checked&&null!=i.defaultChecked&&(a.defaultChecked=!!i.defaultChecked)}function db(a,i,u){if(i.hasOwnProperty(\"value\")||i.hasOwnProperty(\"defaultValue\")){var o=i.type;if(!(\"submit\"!==o&&\"reset\"!==o||void 0!==i.value&&null!==i.value))return;i=\"\"+a._wrapperState.initialValue;u||i===a.value||(a.value=i);a.defaultValue=i}u=a.name;\"\"!==u&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==u&&(a.name=u)}function cb(a,i,u){\"number\"===i&&Xa(a.ownerDocument)===a||(null==u?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+u&&(a.defaultValue=\"\"+u))}var fe=Array.isArray;function fb(a,i,u,o){a=a.options;if(i){i={};for(var s=0;s<u.length;s++)i[\"$\"+u[s]]=!0;for(u=0;u<a.length;u++)s=i.hasOwnProperty(\"$\"+a[u].value),a[u].selected!==s&&(a[u].selected=s),s&&o&&(a[u].defaultSelected=!0)}else{u=\"\"+Sa(u);i=null;for(s=0;s<a.length;s++){if(a[s].value===u){a[s].selected=!0;o&&(a[s].defaultSelected=!0);return}null!==i||a[s].disabled||(i=a[s])}null!==i&&(i.selected=!0)}}function gb(a,i){if(null!=i.dangerouslySetInnerHTML)throw Error(p(91));return ie({},i,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,i){var u=i.value;if(null==u){u=i.children;i=i.defaultValue;if(null!=u){if(null!=i)throw Error(p(92));if(fe(u)){if(1<u.length)throw Error(p(93));u=u[0]}i=u}null==i&&(i=\"\");u=i}a._wrapperState={initialValue:Sa(u)}}function ib(a,i){var u=Sa(i.value),o=Sa(i.defaultValue);null!=u&&(u=\"\"+u,u!==a.value&&(a.value=u),null==i.defaultValue&&a.defaultValue!==u&&(a.defaultValue=u));null!=o&&(a.defaultValue=\"\"+o)}function jb(a){var i=a.textContent;i===a._wrapperState.initialValue&&\"\"!==i&&null!==i&&(a.value=i)}function kb(a){switch(a){case\"svg\":return\"http://www.w3.org/2000/svg\";case\"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function lb(a,i){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(i):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===i?\"http://www.w3.org/1999/xhtml\":a}var de,pe=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(i,u,o,s){MSApp.execUnsafeLocalFunction((function(){return a(i,u,o,s)}))}:a}((function(a,i){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=i;else{de=de||document.createElement(\"div\");de.innerHTML=\"<svg>\"+i.valueOf().toString()+\"</svg>\";for(i=de.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;i.firstChild;)a.appendChild(i.firstChild)}}));function ob(a,i){if(i){var u=a.firstChild;if(u&&u===a.lastChild&&3===u.nodeType){u.nodeValue=i;return}}a.textContent=i}var be={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(be).forEach((function(a){ye.forEach((function(i){i=i+a.charAt(0).toUpperCase()+a.substring(1);be[i]=be[a]}))}));function rb(a,i,u){return null==i||\"boolean\"===typeof i||\"\"===i?\"\":u||\"number\"!==typeof i||0===i||be.hasOwnProperty(a)&&be[a]?(\"\"+i).trim():i+\"px\"}function sb(a,i){a=a.style;for(var u in i)if(i.hasOwnProperty(u)){var o=0===u.indexOf(\"--\"),s=rb(u,i[u],o);\"float\"===u&&(u=\"cssFloat\");o?a.setProperty(u,s):a[u]=s}}var we=ie({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ub(a,i){if(i){if(we[a]&&(null!=i.children||null!=i.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=i.dangerouslySetInnerHTML){if(null!=i.children)throw Error(p(60));if(\"object\"!==typeof i.dangerouslySetInnerHTML||!(\"__html\"in i.dangerouslySetInnerHTML))throw Error(p(61))}if(null!=i.style&&\"object\"!==typeof i.style)throw Error(p(62))}}function vb(a,i){if(-1===a.indexOf(\"-\"))return\"string\"===typeof i.is;switch(a){case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return!1;default:return!0}}var Se=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var xe=null,ze=null,_e=null;function Bb(a){if(a=Cb(a)){if(\"function\"!==typeof xe)throw Error(p(280));var i=a.stateNode;i&&(i=Db(i),xe(a.stateNode,a.type,i))}}function Eb(a){ze?_e?_e.push(a):_e=[a]:ze=a}function Fb(){if(ze){var a=ze,i=_e;_e=ze=null;Bb(a);if(i)for(a=0;a<i.length;a++)Bb(i[a])}}function Gb(a,i){return a(i)}function Hb(){}var Pe=!1;function Jb(a,i,u){if(Pe)return a(i,u);Pe=!0;try{return Gb(a,i,u)}finally{(Pe=!1,null!==ze||null!==_e)&&(Hb(),Fb())}}function Kb(a,i){var u=a.stateNode;if(null===u)return null;var o=Db(u);if(null===o)return null;u=o[i];e:switch(i){case\"onClick\":case\"onClickCapture\":case\"onDoubleClick\":case\"onDoubleClickCapture\":case\"onMouseDown\":case\"onMouseDownCapture\":case\"onMouseMove\":case\"onMouseMoveCapture\":case\"onMouseUp\":case\"onMouseUpCapture\":case\"onMouseEnter\":(o=!o.disabled)||(a=a.type,o=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!o;break e;default:a=!1}if(a)return null;if(u&&\"function\"!==typeof u)throw Error(p(231,i,typeof u));return u}var Te=!1;if(N)try{var Re={};Object.defineProperty(Re,\"passive\",{get:function(){Te=!0}});window.addEventListener(\"test\",Re,Re);window.removeEventListener(\"test\",Re,Re)}catch(a){Te=!1}function Nb(a,i,u,o,s,w,x,C,z){var N=Array.prototype.slice.call(arguments,3);try{i.apply(u,N)}catch(a){this.onError(a)}}var We=!1,Qe=null,He=!1,$e=null,Ye={onError:function(a){We=!0;Qe=a}};function Tb(a,i,u,o,s,w,x,C,z){We=!1;Qe=null;Nb.apply(Ye,arguments)}function Ub(a,i,u,o,s,w,x,C,z){Tb.apply(this,arguments);if(We){if(!We)throw Error(p(198));var N=Qe;We=!1;Qe=null;He||(He=!0,$e=N)}}function Vb(a){var i=a,u=a;if(a.alternate)for(;i.return;)i=i.return;else{a=i;do{i=a,0!==(4098&i.flags)&&(u=i.return),a=i.return}while(a)}return 3===i.tag?u:null}function Wb(a){if(13===a.tag){var i=a.memoizedState;null===i&&(a=a.alternate,null!==a&&(i=a.memoizedState));if(null!==i)return i.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188))}function Yb(a){var i=a.alternate;if(!i){i=Vb(a);if(null===i)throw Error(p(188));return i!==a?null:a}for(var u=a,o=i;;){var s=u.return;if(null===s)break;var w=s.alternate;if(null===w){o=s.return;if(null!==o){u=o;continue}break}if(s.child===w.child){for(w=s.child;w;){if(w===u)return Xb(s),a;if(w===o)return Xb(s),i;w=w.sibling}throw Error(p(188))}if(u.return!==o.return)u=s,o=w;else{for(var x=!1,C=s.child;C;){if(C===u){x=!0;u=s;o=w;break}if(C===o){x=!0;o=s;u=w;break}C=C.sibling}if(!x){for(C=w.child;C;){if(C===u){x=!0;u=w;o=s;break}if(C===o){x=!0;o=w;u=s;break}C=C.sibling}if(!x)throw Error(p(189))}}if(u.alternate!==o)throw Error(p(190))}if(3!==u.tag)throw Error(p(188));return u.stateNode.current===u?a:i}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var i=$b(a);if(null!==i)return i;a=a.sibling}return null}var qe=x.unstable_scheduleCallback,Xe=x.unstable_cancelCallback,en=x.unstable_shouldYield,nn=x.unstable_requestPaint,tn=x.unstable_now,rn=x.unstable_getCurrentPriorityLevel,ln=x.unstable_ImmediatePriority,an=x.unstable_UserBlockingPriority,un=x.unstable_NormalPriority,on=x.unstable_LowPriority,sn=x.unstable_IdlePriority,cn=null,fn=null;function mc(a){if(fn&&\"function\"===typeof fn.onCommitFiberRoot)try{fn.onCommitFiberRoot(cn,a,void 0,128===(128&a.current.flags))}catch(a){}}var dn=Math.clz32?Math.clz32:nc,pn=Math.log,hn=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pn(a)/hn|0)|0}var gn=64,mn=4194304;function tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&a;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&a;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return a}}function uc(a,i){var u=a.pendingLanes;if(0===u)return 0;var o=0,s=a.suspendedLanes,w=a.pingedLanes,x=268435455&u;if(0!==x){var C=x&~s;0!==C?o=tc(C):(w&=x,0!==w&&(o=tc(w)))}else x=u&~s,0!==x?o=tc(x):0!==w&&(o=tc(w));if(0===o)return 0;if(0!==i&&i!==o&&0===(i&s)&&(s=o&-o,w=i&-i,s>=w||16===s&&0!==(4194240&w)))return i;0!==(4&o)&&(o|=16&u);i=a.entangledLanes;if(0!==i)for(a=a.entanglements,i&=o;0<i;)u=31-dn(i),s=1<<u,o|=a[u],i&=~s;return o}function vc(a,i){switch(a){case 1:case 2:case 4:return i+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function wc(a,i){for(var u=a.suspendedLanes,o=a.pingedLanes,s=a.expirationTimes,w=a.pendingLanes;0<w;){var x=31-dn(w),C=1<<x,z=s[x];-1===z?0!==(C&u)&&0===(C&o)||(s[x]=vc(C,i)):z<=i&&(a.expiredLanes|=C);w&=~C}}function xc(a){a=-1073741825&a.pendingLanes;return 0!==a?a:1073741824&a?1073741824:0}function yc(){var a=gn;gn<<=1;0===(4194240&gn)&&(gn=64);return a}function zc(a){for(var i=[],u=0;31>u;u++)i.push(a);return i}function Ac(a,i,u){a.pendingLanes|=i;536870912!==i&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;i=31-dn(i);a[i]=u}function Bc(a,i){var u=a.pendingLanes&~i;a.pendingLanes=i;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=i;a.mutableReadLanes&=i;a.entangledLanes&=i;i=a.entanglements;var o=a.eventTimes;for(a=a.expirationTimes;0<u;){var s=31-dn(u),w=1<<s;i[s]=0;o[s]=-1;a[s]=-1;u&=~w}}function Cc(a,i){var u=a.entangledLanes|=i;for(a=a.entanglements;u;){var o=31-dn(u),s=1<<o;s&i|a[o]&i&&(a[o]|=i);u&=~s}}var vn=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(268435455&a)?16:536870912:4:1}var bn,yn,kn,wn,Sn,En=!1,xn=[],Cn=null,zn=null,Nn=null,Ln=new Map,_n=new Map,jn=[],Pn=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");function Sc(a,i){switch(a){case\"focusin\":case\"focusout\":Cn=null;break;case\"dragenter\":case\"dragleave\":zn=null;break;case\"mouseover\":case\"mouseout\":Nn=null;break;case\"pointerover\":case\"pointerout\":Ln.delete(i.pointerId);break;case\"gotpointercapture\":case\"lostpointercapture\":_n.delete(i.pointerId)}}function Tc(a,i,u,o,s,w){if(null===a||a.nativeEvent!==w)return a={blockedOn:i,domEventName:u,eventSystemFlags:o,nativeEvent:w,targetContainers:[s]},null!==i&&(i=Cb(i),null!==i&&yn(i)),a;a.eventSystemFlags|=o;i=a.targetContainers;null!==s&&-1===i.indexOf(s)&&i.push(s);return a}function Uc(a,i,u,o,s){switch(i){case\"focusin\":return Cn=Tc(Cn,a,i,u,o,s),!0;case\"dragenter\":return zn=Tc(zn,a,i,u,o,s),!0;case\"mouseover\":return Nn=Tc(Nn,a,i,u,o,s),!0;case\"pointerover\":var w=s.pointerId;Ln.set(w,Tc(Ln.get(w)||null,a,i,u,o,s));return!0;case\"gotpointercapture\":return w=s.pointerId,_n.set(w,Tc(_n.get(w)||null,a,i,u,o,s)),!0}return!1}function Vc(a){var i=Wc(a.target);if(null!==i){var u=Vb(i);if(null!==u)if(i=u.tag,13===i){if(i=Wb(u),null!==i){a.blockedOn=i;Sn(a.priority,(function(){kn(u)}));return}}else if(3===i&&u.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===u.tag?u.stateNode.containerInfo:null;return}}a.blockedOn=null}function Xc(a){if(null!==a.blockedOn)return!1;for(var i=a.targetContainers;0<i.length;){var u=Yc(a.domEventName,a.eventSystemFlags,i[0],a.nativeEvent);if(null!==u)return i=Cb(u),null!==i&&yn(i),a.blockedOn=u,!1;u=a.nativeEvent;var o=new u.constructor(u.type,u);Se=o;u.target.dispatchEvent(o);Se=null;i.shift()}return!0}function Zc(a,i,u){Xc(a)&&u.delete(i)}function $c(){En=!1;null!==Cn&&Xc(Cn)&&(Cn=null);null!==zn&&Xc(zn)&&(zn=null);null!==Nn&&Xc(Nn)&&(Nn=null);Ln.forEach(Zc);_n.forEach(Zc)}function ad(a,i){a.blockedOn===i&&(a.blockedOn=null,En||(En=!0,x.unstable_scheduleCallback(x.unstable_NormalPriority,$c)))}function bd(a){function b(i){return ad(i,a)}if(0<xn.length){ad(xn[0],a);for(var i=1;i<xn.length;i++){var u=xn[i];u.blockedOn===a&&(u.blockedOn=null)}}null!==Cn&&ad(Cn,a);null!==zn&&ad(zn,a);null!==Nn&&ad(Nn,a);Ln.forEach(b);_n.forEach(b);for(i=0;i<jn.length;i++)u=jn[i],u.blockedOn===a&&(u.blockedOn=null);for(;0<jn.length&&(i=jn[0],null===i.blockedOn);)Vc(i),null===i.blockedOn&&jn.shift()}var Tn=R.ReactCurrentBatchConfig,Dn=!0;function ed(a,i,u,o){var s=vn,w=Tn.transition;Tn.transition=null;try{vn=1,fd(a,i,u,o)}finally{vn=s,Tn.transition=w}}function gd(a,i,u,o){var s=vn,w=Tn.transition;Tn.transition=null;try{vn=4,fd(a,i,u,o)}finally{vn=s,Tn.transition=w}}function fd(a,i,u,o){if(Dn){var s=Yc(a,i,u,o);if(null===s)hd(a,i,o,Mn,u),Sc(a,o);else if(Uc(s,a,i,u,o))o.stopPropagation();else if(Sc(a,o),4&i&&-1<Pn.indexOf(a)){for(;null!==s;){var w=Cb(s);null!==w&&bn(w);w=Yc(a,i,u,o);null===w&&hd(a,i,o,Mn,u);if(w===s)break;s=w}null!==s&&o.stopPropagation()}else hd(a,i,o,null,u)}}var Mn=null;function Yc(a,i,u,o){Mn=null;a=xb(o);a=Wc(a);if(null!==a)if(i=Vb(a),null===i)a=null;else if(u=i.tag,13===u){a=Wb(i);if(null!==a)return a;a=null}else if(3===u){if(i.stateNode.current.memoizedState.isDehydrated)return 3===i.tag?i.stateNode.containerInfo:null;a=null}else i!==a&&(a=null);Mn=a;return null}function jd(a){switch(a){case\"cancel\":case\"click\":case\"close\":case\"contextmenu\":case\"copy\":case\"cut\":case\"auxclick\":case\"dblclick\":case\"dragend\":case\"dragstart\":case\"drop\":case\"focusin\":case\"focusout\":case\"input\":case\"invalid\":case\"keydown\":case\"keypress\":case\"keyup\":case\"mousedown\":case\"mouseup\":case\"paste\":case\"pause\":case\"play\":case\"pointercancel\":case\"pointerdown\":case\"pointerup\":case\"ratechange\":case\"reset\":case\"resize\":case\"seeked\":case\"submit\":case\"touchcancel\":case\"touchend\":case\"touchstart\":case\"volumechange\":case\"change\":case\"selectionchange\":case\"textInput\":case\"compositionstart\":case\"compositionend\":case\"compositionupdate\":case\"beforeblur\":case\"afterblur\":case\"beforeinput\":case\"blur\":case\"fullscreenchange\":case\"focus\":case\"hashchange\":case\"popstate\":case\"select\":case\"selectstart\":return 1;case\"drag\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"mousemove\":case\"mouseout\":case\"mouseover\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"scroll\":case\"toggle\":case\"touchmove\":case\"wheel\":case\"mouseenter\":case\"mouseleave\":case\"pointerenter\":case\"pointerleave\":return 4;case\"message\":switch(rn()){case ln:return 1;case an:return 4;case un:case on:return 16;case sn:return 536870912;default:return 16}default:return 16}}var Fn=null,Rn=null,On=null;function nd(){if(On)return On;var a,i,u=Rn,o=u.length,s=\"value\"in Fn?Fn.value:Fn.textContent,w=s.length;for(a=0;a<o&&u[a]===s[a];a++);var x=o-a;for(i=1;i<=x&&u[o-i]===s[w-i];i++);return On=s.slice(a,1<i?1-i:void 0)}function od(a){var i=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===i&&(a=13)):a=i;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}function rd(a){function b(i,u,o,s,w){this._reactName=i;this._targetInst=o;this.type=u;this.nativeEvent=s;this.target=w;this.currentTarget=null;for(var x in a)a.hasOwnProperty(x)&&(i=a[x],this[x]=i?i(s):s[x]);this.isDefaultPrevented=(null!=s.defaultPrevented?s.defaultPrevented:!1===s.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}ie(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}var In,Un,Vn,Wn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Qn=rd(Wn),An=ie({},Wn,{view:0,detail:0}),Bn=rd(An),Hn=ie({},An,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in a)return a.movementX;a!==Vn&&(Vn&&\"mousemove\"===a.type?(In=a.screenX-Vn.screenX,Un=a.screenY-Vn.screenY):Un=In=0,Vn=a);return In},movementY:function(a){return\"movementY\"in a?a.movementY:Un}}),$n=rd(Hn),Kn=ie({},Hn,{dataTransfer:0}),Yn=rd(Kn),Zn=ie({},An,{relatedTarget:0}),Gn=rd(Zn),qn=ie({},Wn,{animationName:0,elapsedTime:0,pseudoElement:0}),Xn=rd(qn),Jn=ie({},Wn,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),et=rd(Jn),nt=ie({},Wn,{data:0}),tt=rd(nt),rt={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},lt={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},at={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var i=this.nativeEvent;return i.getModifierState?i.getModifierState(a):!!(a=at[a])&&!!i[a]}function zd(){return Pd}var it=ie({},An,{key:function(a){if(a.key){var i=rt[a.key]||a.key;if(\"Unidentified\"!==i)return i}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?lt[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),ut=rd(it),ot=ie({},Hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),st=rd(ot),ct=ie({},An,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),ft=rd(ct),dt=ie({},Wn,{propertyName:0,elapsedTime:0,pseudoElement:0}),pt=rd(dt),ht=ie({},Hn,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),gt=rd(ht),mt=[9,13,27,32],vt=N&&\"CompositionEvent\"in window,bt=null;N&&\"documentMode\"in document&&(bt=document.documentMode);var yt=N&&\"TextEvent\"in window&&!bt,kt=N&&(!vt||bt&&8<bt&&11>=bt),wt=String.fromCharCode(32),St=!1;function ge(a,i){switch(a){case\"keyup\":return-1!==mt.indexOf(i.keyCode);case\"keydown\":return 229!==i.keyCode;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var Et=!1;function je(a,i){switch(a){case\"compositionend\":return he(i);case\"keypress\":if(32!==i.which)return null;St=!0;return wt;case\"textInput\":return a=i.data,a===wt&&St?null:a;default:return null}}function ke(a,i){if(Et)return\"compositionend\"===a||!vt&&ge(a,i)?(a=nd(),On=Rn=Fn=null,Et=!1,a):null;switch(a){case\"paste\":return null;case\"keypress\":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1<i.char.length)return i.char;if(i.which)return String.fromCharCode(i.which)}return null;case\"compositionend\":return kt&&\"ko\"!==i.locale?null:i.data;default:return null}}var xt={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===i?!!xt[a.type]:\"textarea\"===i}function ne(a,i,u,o){Eb(o);i=oe(i,\"onChange\");0<i.length&&(u=new Qn(\"onChange\",\"change\",null,u,o),a.push({event:u,listeners:i}))}var Ct=null,zt=null;function re(a){se(a,0)}function te(a){var i=ue(a);if(Wa(i))return a}function ve(a,i){if(\"change\"===a)return i}var Nt=!1;if(N){var Lt;if(N){var _t=\"oninput\"in document;if(!_t){var jt=document.createElement(\"div\");jt.setAttribute(\"oninput\",\"return;\");_t=\"function\"===typeof jt.oninput}Lt=_t}else Lt=!1;Nt=Lt&&(!document.documentMode||9<document.documentMode)}function Ae(){Ct&&(Ct.detachEvent(\"onpropertychange\",Be),zt=Ct=null)}function Be(a){if(\"value\"===a.propertyName&&te(zt)){var i=[];ne(i,zt,a,xb(a));Jb(re,i)}}function Ce(a,i,u){\"focusin\"===a?(Ae(),Ct=i,zt=u,Ct.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(zt)}function Ee(a,i){if(\"click\"===a)return te(i)}function Fe(a,i){if(\"input\"===a||\"change\"===a)return te(i)}function Ge(a,i){return a===i&&(0!==a||1/a===1/i)||a!==a&&i!==i}var Pt=\"function\"===typeof Object.is?Object.is:Ge;function Ie(a,i){if(Pt(a,i))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof i||null===i)return!1;var u=Object.keys(a),o=Object.keys(i);if(u.length!==o.length)return!1;for(o=0;o<u.length;o++){var s=u[o];if(!_.call(i,s)||!Pt(a[s],i[s]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function Ke(a,i){var u=Je(a);a=0;for(var o;u;){if(3===u.nodeType){o=a+u.textContent.length;if(a<=i&&o>=i)return{node:u,offset:i-a};a=o}e:{for(;u;){if(u.nextSibling){u=u.nextSibling;break e}u=u.parentNode}u=void 0}u=Je(u)}}function Le(a,i){return!(!a||!i)&&(a===i||(!a||3!==a.nodeType)&&(i&&3===i.nodeType?Le(a,i.parentNode):\"contains\"in a?a.contains(i):!!a.compareDocumentPosition&&!!(16&a.compareDocumentPosition(i))))}function Me(){for(var a=window,i=Xa();i instanceof a.HTMLIFrameElement;){try{var u=\"string\"===typeof i.contentWindow.location.href}catch(a){u=!1}if(!u)break;a=i.contentWindow;i=Xa(a.document)}return i}function Ne(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return i&&(\"input\"===i&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===i||\"true\"===a.contentEditable)}function Oe(a){var i=Me(),u=a.focusedElem,o=a.selectionRange;if(i!==u&&u&&u.ownerDocument&&Le(u.ownerDocument.documentElement,u)){if(null!==o&&Ne(u))if(i=o.start,a=o.end,void 0===a&&(a=i),\"selectionStart\"in u)u.selectionStart=i,u.selectionEnd=Math.min(a,u.value.length);else if(a=(i=u.ownerDocument||document)&&i.defaultView||window,a.getSelection){a=a.getSelection();var s=u.textContent.length,w=Math.min(o.start,s);o=void 0===o.end?w:Math.min(o.end,s);!a.extend&&w>o&&(s=o,o=w,w=s);s=Ke(u,w);var x=Ke(u,o);s&&x&&(1!==a.rangeCount||a.anchorNode!==s.node||a.anchorOffset!==s.offset||a.focusNode!==x.node||a.focusOffset!==x.offset)&&(i=i.createRange(),i.setStart(s.node,s.offset),a.removeAllRanges(),w>o?(a.addRange(i),a.extend(x.node,x.offset)):(i.setEnd(x.node,x.offset),a.addRange(i)))}i=[];for(a=u;a=a.parentNode;)1===a.nodeType&&i.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof u.focus&&u.focus();for(u=0;u<i.length;u++)a=i[u],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}var Tt=N&&\"documentMode\"in document&&11>=document.documentMode,Dt=null,Mt=null,Ft=null,Rt=!1;function Ue(a,i,u){var o=u.window===u?u.document:9===u.nodeType?u:u.ownerDocument;Rt||null==Dt||Dt!==Xa(o)||(o=Dt,\"selectionStart\"in o&&Ne(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Ft&&Ie(Ft,o)||(Ft=o,o=oe(Mt,\"onSelect\"),0<o.length&&(i=new Qn(\"onSelect\",\"select\",null,i,u),a.push({event:i,listeners:o}),i.target=Dt)))}function Ve(a,i){var u={};u[a.toLowerCase()]=i.toLowerCase();u[\"Webkit\"+a]=\"webkit\"+i;u[\"Moz\"+a]=\"moz\"+i;return u}var Ot={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},It={},Ut={};N&&(Ut=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ot.animationend.animation,delete Ot.animationiteration.animation,delete Ot.animationstart.animation),\"TransitionEvent\"in window||delete Ot.transitionend.transition);function Ze(a){if(It[a])return It[a];if(!Ot[a])return a;var i,u=Ot[a];for(i in u)if(u.hasOwnProperty(i)&&i in Ut)return It[a]=u[i];return a}var Vt=Ze(\"animationend\"),Wt=Ze(\"animationiteration\"),Qt=Ze(\"animationstart\"),At=Ze(\"transitionend\"),Bt=new Map,Ht=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");function ff(a,i){Bt.set(a,i);fa(i,[a])}for(var $t=0;$t<Ht.length;$t++){var Kt=Ht[$t],Yt=Kt.toLowerCase(),Zt=Kt[0].toUpperCase()+Kt.slice(1);ff(Yt,\"on\"+Zt)}ff(Vt,\"onAnimationEnd\");ff(Wt,\"onAnimationIteration\");ff(Qt,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(At,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Gt=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),qt=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Gt));function nf(a,i,u){var o=a.type||\"unknown-event\";a.currentTarget=u;Ub(o,i,void 0,a);a.currentTarget=null}function se(a,i){i=0!==(4&i);for(var u=0;u<a.length;u++){var o=a[u],s=o.event;o=o.listeners;e:{var w=void 0;if(i)for(var x=o.length-1;0<=x;x--){var C=o[x],z=C.instance,N=C.currentTarget;C=C.listener;if(z!==w&&s.isPropagationStopped())break e;nf(s,C,N);w=z}else for(x=0;x<o.length;x++){C=o[x];z=C.instance;N=C.currentTarget;C=C.listener;if(z!==w&&s.isPropagationStopped())break e;nf(s,C,N);w=z}}}if(He)throw a=$e,He=!1,$e=null,a}function D(a,i){var u=i[fr];void 0===u&&(u=i[fr]=new Set);var o=a+\"__bubble\";u.has(o)||(pf(i,a,2,!1),u.add(o))}function qf(a,i,u){var o=0;i&&(o|=4);pf(u,a,o,i)}var Xt=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[Xt]){a[Xt]=!0;C.forEach((function(i){\"selectionchange\"!==i&&(qt.has(i)||qf(i,!1,a),qf(i,!0,a))}));var i=9===a.nodeType?a:a.ownerDocument;null===i||i[Xt]||(i[Xt]=!0,qf(\"selectionchange\",!1,i))}}function pf(a,i,u,o){switch(jd(i)){case 1:var s=ed;break;case 4:s=gd;break;default:s=fd}u=s.bind(null,i,u,a);s=void 0;!Te||\"touchstart\"!==i&&\"touchmove\"!==i&&\"wheel\"!==i||(s=!0);o?void 0!==s?a.addEventListener(i,u,{capture:!0,passive:s}):a.addEventListener(i,u,!0):void 0!==s?a.addEventListener(i,u,{passive:s}):a.addEventListener(i,u,!1)}function hd(a,i,u,o,s){var w=o;if(0===(1&i)&&0===(2&i)&&null!==o)e:for(;;){if(null===o)return;var x=o.tag;if(3===x||4===x){var C=o.stateNode.containerInfo;if(C===s||8===C.nodeType&&C.parentNode===s)break;if(4===x)for(x=o.return;null!==x;){var z=x.tag;if((3===z||4===z)&&(z=x.stateNode.containerInfo,z===s||8===z.nodeType&&z.parentNode===s))return;x=x.return}for(;null!==C;){x=Wc(C);if(null===x)return;z=x.tag;if(5===z||6===z){o=w=x;continue e}C=C.parentNode}}o=o.return}Jb((function(){var o=w,s=xb(u),x=[];e:{var C=Bt.get(a);if(void 0!==C){var z=Qn,N=a;switch(a){case\"keypress\":if(0===od(u))break e;case\"keydown\":case\"keyup\":z=ut;break;case\"focusin\":N=\"focus\";z=Gn;break;case\"focusout\":N=\"blur\";z=Gn;break;case\"beforeblur\":case\"afterblur\":z=Gn;break;case\"click\":if(2===u.button)break e;case\"auxclick\":case\"dblclick\":case\"mousedown\":case\"mousemove\":case\"mouseup\":case\"mouseout\":case\"mouseover\":case\"contextmenu\":z=$n;break;case\"drag\":case\"dragend\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"dragstart\":case\"drop\":z=Yn;break;case\"touchcancel\":case\"touchend\":case\"touchmove\":case\"touchstart\":z=ft;break;case Vt:case Wt:case Qt:z=Xn;break;case At:z=pt;break;case\"scroll\":z=Bn;break;case\"wheel\":z=gt;break;case\"copy\":case\"cut\":case\"paste\":z=et;break;case\"gotpointercapture\":case\"lostpointercapture\":case\"pointercancel\":case\"pointerdown\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"pointerup\":z=st}var _=0!==(4&i),j=!_&&\"scroll\"===a,P=_?null!==C?C+\"Capture\":null:C;_=[];for(var T,M=o;null!==M;){T=M;var F=T.stateNode;5===T.tag&&null!==F&&(T=F,null!==P&&(F=Kb(M,P),null!=F&&_.push(tf(M,F,T))));if(j)break;M=M.return}0<_.length&&(C=new z(C,N,null,u,s),x.push({event:C,listeners:_}))}}if(0===(7&i)){C=\"mouseover\"===a||\"pointerover\"===a;z=\"mouseout\"===a||\"pointerout\"===a;if((!C||u===Se||!(N=u.relatedTarget||u.fromElement)||!Wc(N)&&!N[cr])&&(z||C)){C=s.window===s?s:(C=s.ownerDocument)?C.defaultView||C.parentWindow:window;z?(N=u.relatedTarget||u.toElement,z=o,N=N?Wc(N):null,null!==N&&(j=Vb(N),N!==j||5!==N.tag&&6!==N.tag))&&(N=null):(z=null,N=o);if(z!==N){_=$n;F=\"onMouseLeave\";P=\"onMouseEnter\";M=\"mouse\";\"pointerout\"!==a&&\"pointerover\"!==a||(_=st,F=\"onPointerLeave\",P=\"onPointerEnter\",M=\"pointer\");j=null==z?C:ue(z);T=null==N?C:ue(N);C=new _(F,M+\"leave\",z,u,s);C.target=j;C.relatedTarget=T;F=null;Wc(s)===o&&(_=new _(P,M+\"enter\",N,u,s),_.target=T,_.relatedTarget=j,F=_);j=F;if(z&&N)e:{_=z;P=N;M=0;for(T=_;T;T=vf(T))M++;T=0;for(F=P;F;F=vf(F))T++;for(;0<M-T;)_=vf(_),M--;for(;0<T-M;)P=vf(P),T--;for(;M--;){if(_===P||null!==P&&_===P.alternate)break e;_=vf(_);P=vf(P)}_=null}else _=null;null!==z&&wf(x,C,z,_,!1);null!==N&&null!==j&&wf(x,j,N,_,!0)}}C=o?ue(o):window;z=C.nodeName&&C.nodeName.toLowerCase();if(\"select\"===z||\"input\"===z&&\"file\"===C.type)var R=ve;else if(me(C))if(Nt)R=Fe;else{R=De;var O=Ce}else(z=C.nodeName)&&\"input\"===z.toLowerCase()&&(\"checkbox\"===C.type||\"radio\"===C.type)&&(R=Ee);if(R&&(R=R(a,o)))ne(x,R,u,s);else{O&&O(a,C,o);\"focusout\"===a&&(O=C._wrapperState)&&O.controlled&&\"number\"===C.type&&cb(C,\"number\",C.value)}O=o?ue(o):window;switch(a){case\"focusin\":(me(O)||\"true\"===O.contentEditable)&&(Dt=O,Mt=o,Ft=null);break;case\"focusout\":Ft=Mt=Dt=null;break;case\"mousedown\":Rt=!0;break;case\"contextmenu\":case\"mouseup\":case\"dragend\":Rt=!1;Ue(x,u,s);break;case\"selectionchange\":if(Tt)break;case\"keydown\":case\"keyup\":Ue(x,u,s)}var I;if(vt)e:{switch(a){case\"compositionstart\":var U=\"onCompositionStart\";break e;case\"compositionend\":U=\"onCompositionEnd\";break e;case\"compositionupdate\":U=\"onCompositionUpdate\";break e}U=void 0}else Et?ge(a,u)&&(U=\"onCompositionEnd\"):\"keydown\"===a&&229===u.keyCode&&(U=\"onCompositionStart\");U&&(kt&&\"ko\"!==u.locale&&(Et||\"onCompositionStart\"!==U?\"onCompositionEnd\"===U&&Et&&(I=nd()):(Fn=s,Rn=\"value\"in Fn?Fn.value:Fn.textContent,Et=!0)),O=oe(o,U),0<O.length&&(U=new tt(U,a,null,u,s),x.push({event:U,listeners:O}),I?U.data=I:(I=he(u),null!==I&&(U.data=I))));(I=yt?je(a,u):ke(a,u))&&(o=oe(o,\"onBeforeInput\"),0<o.length&&(s=new tt(\"onBeforeInput\",\"beforeinput\",null,u,s),x.push({event:s,listeners:o}),s.data=I))}se(x,i)}))}function tf(a,i,u){return{instance:a,listener:i,currentTarget:u}}function oe(a,i){for(var u=i+\"Capture\",o=[];null!==a;){var s=a,w=s.stateNode;5===s.tag&&null!==w&&(s=w,w=Kb(a,u),null!=w&&o.unshift(tf(a,w,s)),w=Kb(a,i),null!=w&&o.push(tf(a,w,s)));a=a.return}return o}function vf(a){if(null===a)return null;do{a=a.return}while(a&&5!==a.tag);return a||null}function wf(a,i,u,o,s){for(var w=i._reactName,x=[];null!==u&&u!==o;){var C=u,z=C.alternate,N=C.stateNode;if(null!==z&&z===o)break;5===C.tag&&null!==N&&(C=N,s?(z=Kb(u,w),null!=z&&x.unshift(tf(u,z,C))):s||(z=Kb(u,w),null!=z&&x.push(tf(u,z,C))));u=u.return}0!==x.length&&a.push({event:i,listeners:x})}var Jt=/\\r\\n?/g,er=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(Jt,\"\\n\").replace(er,\"\")}function Af(a,i,u){i=zf(i);if(zf(a)!==i&&u)throw Error(p(425))}function Bf(){}var nr=null,tr=null;function Ef(a,i){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof i.children||\"number\"===typeof i.children||\"object\"===typeof i.dangerouslySetInnerHTML&&null!==i.dangerouslySetInnerHTML&&null!=i.dangerouslySetInnerHTML.__html}var rr=\"function\"===typeof setTimeout?setTimeout:void 0,lr=\"function\"===typeof clearTimeout?clearTimeout:void 0,ar=\"function\"===typeof Promise?Promise:void 0,ir=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof ar?function(a){return ar.resolve(null).then(a).catch(If)}:rr;function If(a){setTimeout((function(){throw a}))}function Kf(a,i){var u=i,o=0;do{var s=u.nextSibling;a.removeChild(u);if(s&&8===s.nodeType)if(u=s.data,\"/$\"===u){if(0===o){a.removeChild(s);bd(i);return}o--}else\"$\"!==u&&\"$?\"!==u&&\"$!\"!==u||o++;u=s}while(u);bd(i)}function Lf(a){for(;null!=a;a=a.nextSibling){var i=a.nodeType;if(1===i||3===i)break;if(8===i){i=a.data;if(\"$\"===i||\"$!\"===i||\"$?\"===i)break;if(\"/$\"===i)return null}}return a}function Mf(a){a=a.previousSibling;for(var i=0;a;){if(8===a.nodeType){var u=a.data;if(\"$\"===u||\"$!\"===u||\"$?\"===u){if(0===i)return a;i--}else\"/$\"===u&&i++}a=a.previousSibling}return null}var ur=Math.random().toString(36).slice(2),or=\"__reactFiber$\"+ur,sr=\"__reactProps$\"+ur,cr=\"__reactContainer$\"+ur,fr=\"__reactEvents$\"+ur,dr=\"__reactListeners$\"+ur,pr=\"__reactHandles$\"+ur;function Wc(a){var i=a[or];if(i)return i;for(var u=a.parentNode;u;){if(i=u[cr]||u[or]){u=i.alternate;if(null!==i.child||null!==u&&null!==u.child)for(a=Mf(a);null!==a;){if(u=a[or])return u;a=Mf(a)}return i}a=u;u=a.parentNode}return null}function Cb(a){a=a[or]||a[cr];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33))}function Db(a){return a[sr]||null}var hr=[],gr=-1;function Uf(a){return{current:a}}function E(a){0>gr||(a.current=hr[gr],hr[gr]=null,gr--)}function G(a,i){gr++;hr[gr]=a.current;a.current=i}var mr={},vr=Uf(mr),br=Uf(!1),yr=mr;function Yf(a,i){var u=a.type.contextTypes;if(!u)return mr;var o=a.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===i)return o.__reactInternalMemoizedMaskedChildContext;var s,w={};for(s in u)w[s]=i[s];o&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=i,a.__reactInternalMemoizedMaskedChildContext=w);return w}function Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(br);E(vr)}function ag(a,i,u){if(vr.current!==mr)throw Error(p(168));G(vr,i);G(br,u)}function bg(a,i,u){var o=a.stateNode;i=i.childContextTypes;if(\"function\"!==typeof o.getChildContext)return u;o=o.getChildContext();for(var s in o)if(!(s in i))throw Error(p(108,Ra(a)||\"Unknown\",s));return ie({},u,o)}function cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||mr;yr=vr.current;G(vr,a);G(br,br.current);return!0}function dg(a,i,u){var o=a.stateNode;if(!o)throw Error(p(169));u?(a=bg(a,i,yr),o.__reactInternalMemoizedMergedChildContext=a,E(br),E(vr),G(vr,a)):E(br);G(br,u)}var kr=null,wr=!1,Sr=!1;function hg(a){null===kr?kr=[a]:kr.push(a)}function ig(a){wr=!0;hg(a)}function jg(){if(!Sr&&null!==kr){Sr=!0;var a=0,i=vn;try{var u=kr;for(vn=1;a<u.length;a++){var o=u[a];do{o=o(!0)}while(null!==o)}kr=null;wr=!1}catch(i){throw null!==kr&&(kr=kr.slice(a+1)),qe(ln,jg),i}finally{vn=i,Sr=!1}}return null}var Er=[],xr=0,Cr=null,zr=0,Nr=[],Lr=0,_r=null,jr=1,Pr=\"\";function tg(a,i){Er[xr++]=zr;Er[xr++]=Cr;Cr=a;zr=i}function ug(a,i,u){Nr[Lr++]=jr;Nr[Lr++]=Pr;Nr[Lr++]=_r;_r=a;var o=jr;a=Pr;var s=32-dn(o)-1;o&=~(1<<s);u+=1;var w=32-dn(i)+s;if(30<w){var x=s-s%5;w=(o&(1<<x)-1).toString(32);o>>=x;s-=x;jr=1<<32-dn(i)+s|u<<s|o;Pr=w+a}else jr=1<<w|u<<s|o,Pr=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===Cr;)Cr=Er[--xr],Er[xr]=null,zr=Er[--xr],Er[xr]=null;for(;a===_r;)_r=Nr[--Lr],Nr[Lr]=null,Pr=Nr[--Lr],Nr[Lr]=null,jr=Nr[--Lr],Nr[Lr]=null}var Tr=null,Dr=null,Mr=!1,Fr=null;function Ag(a,i){var u=Bg(5,null,null,0);u.elementType=\"DELETED\";u.stateNode=i;u.return=a;i=a.deletions;null===i?(a.deletions=[u],a.flags|=16):i.push(u)}function Cg(a,i){switch(a.tag){case 5:var u=a.type;i=1!==i.nodeType||u.toLowerCase()!==i.nodeName.toLowerCase()?null:i;return null!==i&&(a.stateNode=i,Tr=a,Dr=Lf(i.firstChild),!0);case 6:return i=\"\"===a.pendingProps||3!==i.nodeType?null:i,null!==i&&(a.stateNode=i,Tr=a,Dr=null,!0);case 13:return i=8!==i.nodeType?null:i,null!==i&&(u=null!==_r?{id:jr,overflow:Pr}:null,a.memoizedState={dehydrated:i,treeContext:u,retryLane:1073741824},u=Bg(18,null,null,0),u.stateNode=i,u.return=a,a.child=u,Tr=a,Dr=null,!0);default:return!1}}function Dg(a){return 0!==(1&a.mode)&&0===(128&a.flags)}function Eg(a){if(Mr){var i=Dr;if(i){var u=i;if(!Cg(a,i)){if(Dg(a))throw Error(p(418));i=Lf(u.nextSibling);var o=Tr;i&&Cg(a,i)?Ag(o,u):(a.flags=-4097&a.flags|2,Mr=!1,Tr=a)}}else{if(Dg(a))throw Error(p(418));a.flags=-4097&a.flags|2;Mr=!1;Tr=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Tr=a}function Gg(a){if(a!==Tr)return!1;if(!Mr)return Fg(a),Mr=!0,!1;var i;(i=3!==a.tag)&&!(i=5!==a.tag)&&(i=a.type,i=\"head\"!==i&&\"body\"!==i&&!Ef(a.type,a.memoizedProps));if(i&&(i=Dr)){if(Dg(a))throw Hg(),Error(p(418));for(;i;)Ag(a,i),i=Lf(i.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));e:{a=a.nextSibling;for(i=0;a;){if(8===a.nodeType){var u=a.data;if(\"/$\"===u){if(0===i){Dr=Lf(a.nextSibling);break e}i--}else\"$\"!==u&&\"$!\"!==u&&\"$?\"!==u||i++}a=a.nextSibling}Dr=null}}else Dr=Tr?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=Dr;a;)a=Lf(a.nextSibling)}function Ig(){Dr=Tr=null;Mr=!1}function Jg(a){null===Fr?Fr=[a]:Fr.push(a)}var Rr=R.ReactCurrentBatchConfig;function Lg(a,i){if(a&&a.defaultProps){i=ie({},i);a=a.defaultProps;for(var u in a)void 0===i[u]&&(i[u]=a[u]);return i}return i}var Or=Uf(null),Ir=null,Ur=null,Vr=null;function Qg(){Vr=Ur=Ir=null}function Rg(a){var i=Or.current;E(Or);a._currentValue=i}function Sg(a,i,u){for(;null!==a;){var o=a.alternate;(a.childLanes&i)!==i?(a.childLanes|=i,null!==o&&(o.childLanes|=i)):null!==o&&(o.childLanes&i)!==i&&(o.childLanes|=i);if(a===u)break;a=a.return}}function Tg(a,i){Ir=a;Vr=Ur=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&i)&&(Tl=!0),a.firstContext=null)}function Vg(a){var i=a._currentValue;if(Vr!==a)if(a={context:a,memoizedValue:i,next:null},null===Ur){if(null===Ir)throw Error(p(308));Ur=a;Ir.dependencies={lanes:0,firstContext:a}}else Ur=Ur.next=a;return i}var Wr=null;function Xg(a){null===Wr?Wr=[a]:Wr.push(a)}function Yg(a,i,u,o){var s=i.interleaved;null===s?(u.next=u,Xg(i)):(u.next=s.next,s.next=u);i.interleaved=u;return Zg(a,o)}function Zg(a,i){a.lanes|=i;var u=a.alternate;null!==u&&(u.lanes|=i);u=a;for(a=a.return;null!==a;)a.childLanes|=i,u=a.alternate,null!==u&&(u.childLanes|=i),u=a,a=a.return;return 3===u.tag?u.stateNode:null}var Qr=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function bh(a,i){a=a.updateQueue;i.updateQueue===a&&(i.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,i){return{eventTime:a,lane:i,tag:0,payload:null,callback:null,next:null}}function dh(a,i,u){var o=a.updateQueue;if(null===o)return null;o=o.shared;if(0!==(2&Zl)){var s=o.pending;null===s?i.next=i:(i.next=s.next,s.next=i);o.pending=i;return Zg(a,u)}s=o.interleaved;null===s?(i.next=i,Xg(o)):(i.next=s.next,s.next=i);o.interleaved=i;return Zg(a,u)}function eh(a,i,u){i=i.updateQueue;if(null!==i&&(i=i.shared,0!==(4194240&u))){var o=i.lanes;o&=a.pendingLanes;u|=o;i.lanes=u;Cc(a,u)}}function fh(a,i){var u=a.updateQueue,o=a.alternate;if(null===o||(o=o.updateQueue,u!==o)){a=u.lastBaseUpdate;null===a?u.firstBaseUpdate=i:a.next=i;u.lastBaseUpdate=i}else{var s=null,w=null;u=u.firstBaseUpdate;if(null!==u){do{var x={eventTime:u.eventTime,lane:u.lane,tag:u.tag,payload:u.payload,callback:u.callback,next:null};null===w?s=w=x:w=w.next=x;u=u.next}while(null!==u);null===w?s=w=i:w=w.next=i}else s=w=i;u={baseState:o.baseState,firstBaseUpdate:s,lastBaseUpdate:w,shared:o.shared,effects:o.effects};a.updateQueue=u}}function gh(a,i,u,o){var s=a.updateQueue;Qr=!1;var w=s.firstBaseUpdate,x=s.lastBaseUpdate,C=s.shared.pending;if(null!==C){s.shared.pending=null;var z=C,N=z.next;z.next=null;null===x?w=N:x.next=N;x=z;var _=a.alternate;null!==_&&(_=_.updateQueue,C=_.lastBaseUpdate,C!==x&&(null===C?_.firstBaseUpdate=N:C.next=N,_.lastBaseUpdate=z))}if(null!==w){var j=s.baseState;x=0;_=N=z=null;C=w;do{var P=C.lane,T=C.eventTime;if((o&P)===P){null!==_&&(_=_.next={eventTime:T,lane:0,tag:C.tag,payload:C.payload,callback:C.callback,next:null});e:{var M=a,F=C;P=i;T=u;switch(F.tag){case 1:M=F.payload;if(\"function\"===typeof M){j=M.call(T,j,P);break e}j=M;break e;case 3:M.flags=-65537&M.flags|128;case 0:M=F.payload;P=\"function\"===typeof M?M.call(T,j,P):M;if(null===P||void 0===P)break e;j=ie({},j,P);break e;case 2:Qr=!0}}null!==C.callback&&0!==C.lane&&(a.flags|=64,P=s.effects,null===P?s.effects=[C]:P.push(C))}else T={eventTime:T,lane:P,tag:C.tag,payload:C.payload,callback:C.callback,next:null},null===_?(N=_=T,z=j):_=_.next=T,x|=P;C=C.next;if(null===C){if(C=s.shared.pending,null===C)break;P=C,C=P.next,P.next=null,s.lastBaseUpdate=P,s.shared.pending=null}}while(1);null===_&&(z=j);s.baseState=z;s.firstBaseUpdate=N;s.lastBaseUpdate=_;i=s.shared.interleaved;if(null!==i){s=i;do{x|=s.lane,s=s.next}while(s!==i)}else null===w&&(s.shared.lanes=0);aa|=x;a.lanes=x;a.memoizedState=j}}function ih(a,i,u){a=i.effects;i.effects=null;if(null!==a)for(i=0;i<a.length;i++){var o=a[i],s=o.callback;if(null!==s){o.callback=null;o=u;if(\"function\"!==typeof s)throw Error(p(191,s));s.call(o)}}}var Ar=(new w.Component).refs;function kh(a,i,u,o){i=a.memoizedState;u=u(o,i);u=null===u||void 0===u?i:ie({},i,u);a.memoizedState=u;0===a.lanes&&(a.updateQueue.baseState=u)}var Br={isMounted:function(a){return!!(a=a._reactInternals)&&Vb(a)===a},enqueueSetState:function(a,i,u){a=a._reactInternals;var o=L(),s=lh(a),w=ch(o,s);w.payload=i;void 0!==u&&null!==u&&(w.callback=u);i=dh(a,w,s);null!==i&&(mh(i,a,s,o),eh(i,a,s))},enqueueReplaceState:function(a,i,u){a=a._reactInternals;var o=L(),s=lh(a),w=ch(o,s);w.tag=1;w.payload=i;void 0!==u&&null!==u&&(w.callback=u);i=dh(a,w,s);null!==i&&(mh(i,a,s,o),eh(i,a,s))},enqueueForceUpdate:function(a,i){a=a._reactInternals;var u=L(),o=lh(a),s=ch(u,o);s.tag=2;void 0!==i&&null!==i&&(s.callback=i);i=dh(a,s,o);null!==i&&(mh(i,a,o,u),eh(i,a,o))}};function oh(a,i,u,o,s,w,x){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(o,w,x):!i.prototype||!i.prototype.isPureReactComponent||(!Ie(u,o)||!Ie(s,w))}function ph(a,i,u){var o=!1,s=mr;var w=i.contextType;\"object\"===typeof w&&null!==w?w=Vg(w):(s=Zf(i)?yr:vr.current,o=i.contextTypes,w=(o=null!==o&&void 0!==o)?Yf(a,s):mr);i=new i(u,w);a.memoizedState=null!==i.state&&void 0!==i.state?i.state:null;i.updater=Br;a.stateNode=i;i._reactInternals=a;o&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=s,a.__reactInternalMemoizedMaskedChildContext=w);return i}function qh(a,i,u,o){a=i.state;\"function\"===typeof i.componentWillReceiveProps&&i.componentWillReceiveProps(u,o);\"function\"===typeof i.UNSAFE_componentWillReceiveProps&&i.UNSAFE_componentWillReceiveProps(u,o);i.state!==a&&Br.enqueueReplaceState(i,i.state,null)}function rh(a,i,u,o){var s=a.stateNode;s.props=u;s.state=a.memoizedState;s.refs=Ar;ah(a);var w=i.contextType;\"object\"===typeof w&&null!==w?s.context=Vg(w):(w=Zf(i)?yr:vr.current,s.context=Yf(a,w));s.state=a.memoizedState;w=i.getDerivedStateFromProps;\"function\"===typeof w&&(kh(a,i,w,u),s.state=a.memoizedState);\"function\"===typeof i.getDerivedStateFromProps||\"function\"===typeof s.getSnapshotBeforeUpdate||\"function\"!==typeof s.UNSAFE_componentWillMount&&\"function\"!==typeof s.componentWillMount||(i=s.state,\"function\"===typeof s.componentWillMount&&s.componentWillMount(),\"function\"===typeof s.UNSAFE_componentWillMount&&s.UNSAFE_componentWillMount(),i!==s.state&&Br.enqueueReplaceState(s,s.state,null),gh(a,u,s,o),s.state=a.memoizedState);\"function\"===typeof s.componentDidMount&&(a.flags|=4194308)}function sh(a,i,u){a=u.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(u._owner){u=u._owner;if(u){if(1!==u.tag)throw Error(p(309));var o=u.stateNode}if(!o)throw Error(p(147,a));var s=o,w=\"\"+a;if(null!==i&&null!==i.ref&&\"function\"===typeof i.ref&&i.ref._stringRef===w)return i.ref;i=function(a){var i=s.refs;i===Ar&&(i=s.refs={});null===a?delete i[w]:i[w]=a};i._stringRef=w;return i}if(\"string\"!==typeof a)throw Error(p(284));if(!u._owner)throw Error(p(290,a))}return a}function th(a,i){a=Object.prototype.toString.call(i);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(i).join(\", \")+\"}\":a))}function uh(a){var i=a._init;return i(a._payload)}function vh(a){function b(i,u){if(a){var o=i.deletions;null===o?(i.deletions=[u],i.flags|=16):o.push(u)}}function c(i,u){if(!a)return null;for(;null!==u;)b(i,u),u=u.sibling;return null}function d(a,i){for(a=new Map;null!==i;)null!==i.key?a.set(i.key,i):a.set(i.index,i),i=i.sibling;return a}function e(a,i){a=wh(a,i);a.index=0;a.sibling=null;return a}function f(i,u,o){i.index=o;if(!a)return i.flags|=1048576,u;o=i.alternate;if(null!==o)return o=o.index,o<u?(i.flags|=2,u):o;i.flags|=2;return u}function g(i){a&&null===i.alternate&&(i.flags|=2);return i}function h(a,i,u,o){if(null===i||6!==i.tag)return i=xh(u,a.mode,o),i.return=a,i;i=e(i,u);i.return=a;return i}function k(a,i,u,o){var s=u.type;if(s===U)return m(a,i,u.props.children,o,u.key);if(null!==i&&(i.elementType===s||\"object\"===typeof s&&null!==s&&s.$$typeof===X&&uh(s)===i.type))return o=e(i,u.props),o.ref=sh(a,i,u),o.return=a,o;o=yh(u.type,u.key,u.props,null,a.mode,o);o.ref=sh(a,i,u);o.return=a;return o}function l(a,i,u,o){if(null===i||4!==i.tag||i.stateNode.containerInfo!==u.containerInfo||i.stateNode.implementation!==u.implementation)return i=zh(u,a.mode,o),i.return=a,i;i=e(i,u.children||[]);i.return=a;return i}function m(a,i,u,o,s){if(null===i||7!==i.tag)return i=Ah(u,a.mode,o,s),i.return=a,i;i=e(i,u);i.return=a;return i}function q(a,i,u){if(\"string\"===typeof i&&\"\"!==i||\"number\"===typeof i)return i=xh(\"\"+i,a.mode,u),i.return=a,i;if(\"object\"===typeof i&&null!==i){switch(i.$$typeof){case O:return u=yh(i.type,i.key,i.props,null,a.mode,u),u.ref=sh(a,null,i),u.return=a,u;case I:return i=zh(i,a.mode,u),i.return=a,i;case X:var o=i._init;return q(a,o(i._payload),u)}if(fe(i)||Ka(i))return i=Ah(i,a.mode,u,null),i.return=a,i;th(a,i)}return null}function r(a,i,u,o){var s=null!==i?i.key:null;if(\"string\"===typeof u&&\"\"!==u||\"number\"===typeof u)return null!==s?null:h(a,i,\"\"+u,o);if(\"object\"===typeof u&&null!==u){switch(u.$$typeof){case O:return u.key===s?k(a,i,u,o):null;case I:return u.key===s?l(a,i,u,o):null;case X:return s=u._init,r(a,i,s(u._payload),o)}if(fe(u)||Ka(u))return null!==s?null:m(a,i,u,o,null);th(a,u)}return null}function y(a,i,u,o,s){if(\"string\"===typeof o&&\"\"!==o||\"number\"===typeof o)return a=a.get(u)||null,h(i,a,\"\"+o,s);if(\"object\"===typeof o&&null!==o){switch(o.$$typeof){case O:return a=a.get(null===o.key?u:o.key)||null,k(i,a,o,s);case I:return a=a.get(null===o.key?u:o.key)||null,l(i,a,o,s);case X:var w=o._init;return y(a,i,u,w(o._payload),s)}if(fe(o)||Ka(o))return a=a.get(u)||null,m(i,a,o,s,null);th(i,o)}return null}function n(i,u,o,s){for(var w=null,x=null,C=u,z=u=0,N=null;null!==C&&z<o.length;z++){C.index>z?(N=C,C=null):N=C.sibling;var _=r(i,C,o[z],s);if(null===_){null===C&&(C=N);break}a&&C&&null===_.alternate&&b(i,C);u=f(_,u,z);null===x?w=_:x.sibling=_;x=_;C=N}if(z===o.length)return c(i,C),Mr&&tg(i,z),w;if(null===C){for(;z<o.length;z++)C=q(i,o[z],s),null!==C&&(u=f(C,u,z),null===x?w=C:x.sibling=C,x=C);Mr&&tg(i,z);return w}for(C=d(i,C);z<o.length;z++)N=y(C,i,z,o[z],s),null!==N&&(a&&null!==N.alternate&&C.delete(null===N.key?z:N.key),u=f(N,u,z),null===x?w=N:x.sibling=N,x=N);a&&C.forEach((function(a){return b(i,a)}));Mr&&tg(i,z);return w}function t(i,u,o,s){var w=Ka(o);if(\"function\"!==typeof w)throw Error(p(150));o=w.call(o);if(null==o)throw Error(p(151));for(var x=w=null,C=u,z=u=0,N=null,_=o.next();null!==C&&!_.done;z++,_=o.next()){C.index>z?(N=C,C=null):N=C.sibling;var j=r(i,C,_.value,s);if(null===j){null===C&&(C=N);break}a&&C&&null===j.alternate&&b(i,C);u=f(j,u,z);null===x?w=j:x.sibling=j;x=j;C=N}if(_.done)return c(i,C),Mr&&tg(i,z),w;if(null===C){for(;!_.done;z++,_=o.next())_=q(i,_.value,s),null!==_&&(u=f(_,u,z),null===x?w=_:x.sibling=_,x=_);Mr&&tg(i,z);return w}for(C=d(i,C);!_.done;z++,_=o.next())_=y(C,i,z,_.value,s),null!==_&&(a&&null!==_.alternate&&C.delete(null===_.key?z:_.key),u=f(_,u,z),null===x?w=_:x.sibling=_,x=_);a&&C.forEach((function(a){return b(i,a)}));Mr&&tg(i,z);return w}function J(a,i,u,o){\"object\"===typeof u&&null!==u&&u.type===U&&null===u.key&&(u=u.props.children);if(\"object\"===typeof u&&null!==u){switch(u.$$typeof){case O:e:{for(var s=u.key,w=i;null!==w;){if(w.key===s){s=u.type;if(s===U){if(7===w.tag){c(a,w.sibling);i=e(w,u.props.children);i.return=a;a=i;break e}}else if(w.elementType===s||\"object\"===typeof s&&null!==s&&s.$$typeof===X&&uh(s)===w.type){c(a,w.sibling);i=e(w,u.props);i.ref=sh(a,w,u);i.return=a;a=i;break e}c(a,w);break}b(a,w);w=w.sibling}u.type===U?(i=Ah(u.props.children,a.mode,o,u.key),i.return=a,a=i):(o=yh(u.type,u.key,u.props,null,a.mode,o),o.ref=sh(a,i,u),o.return=a,a=o)}return g(a);case I:e:{for(w=u.key;null!==i;){if(i.key===w){if(4===i.tag&&i.stateNode.containerInfo===u.containerInfo&&i.stateNode.implementation===u.implementation){c(a,i.sibling);i=e(i,u.children||[]);i.return=a;a=i;break e}c(a,i);break}b(a,i);i=i.sibling}i=zh(u,a.mode,o);i.return=a;a=i}return g(a);case X:return w=u._init,J(a,i,w(u._payload),o)}if(fe(u))return n(a,i,u,o);if(Ka(u))return t(a,i,u,o);th(a,u)}return\"string\"===typeof u&&\"\"!==u||\"number\"===typeof u?(u=\"\"+u,null!==i&&6===i.tag?(c(a,i.sibling),i=e(i,u),i.return=a,a=i):(c(a,i),i=xh(u,a.mode,o),i.return=a,a=i),g(a)):c(a,i)}return J}var Hr=vh(!0),$r=vh(!1),Kr={},Yr=Uf(Kr),Zr=Uf(Kr),Gr=Uf(Kr);function Hh(a){if(a===Kr)throw Error(p(174));return a}function Ih(a,i){G(Gr,i);G(Zr,a);G(Yr,Kr);a=i.nodeType;switch(a){case 9:case 11:i=(i=i.documentElement)?i.namespaceURI:lb(null,\"\");break;default:a=8===a?i.parentNode:i,i=a.namespaceURI||null,a=a.tagName,i=lb(i,a)}E(Yr);G(Yr,i)}function Jh(){E(Yr);E(Zr);E(Gr)}function Kh(a){Hh(Gr.current);var i=Hh(Yr.current);var u=lb(i,a.type);i!==u&&(G(Zr,a),G(Yr,u))}function Lh(a){Zr.current===a&&(E(Yr),E(Zr))}var qr=Uf(0);function Mh(a){for(var i=a;null!==i;){if(13===i.tag){var u=i.memoizedState;if(null!==u&&(u=u.dehydrated,null===u||\"$?\"===u.data||\"$!\"===u.data))return i}else if(19===i.tag&&void 0!==i.memoizedProps.revealOrder){if(0!==(128&i.flags))return i}else if(null!==i.child){i.child.return=i;i=i.child;continue}if(i===a)break;for(;null===i.sibling;){if(null===i.return||i.return===a)return null;i=i.return}i.sibling.return=i.return;i=i.sibling}return null}var Xr=[];function Oh(){for(var a=0;a<Xr.length;a++)Xr[a]._workInProgressVersionPrimary=null;Xr.length=0}var Jr=R.ReactCurrentDispatcher,tl=R.ReactCurrentBatchConfig,ll=0,ul=null,vl=null,yl=null,wl=!1,Sl=!1,El=0,xl=0;function Q(){throw Error(p(321))}function Wh(a,i){if(null===i)return!1;for(var u=0;u<i.length&&u<a.length;u++)if(!Pt(a[u],i[u]))return!1;return!0}function Xh(a,i,u,o,s,w){ll=w;ul=i;i.memoizedState=null;i.updateQueue=null;i.lanes=0;Jr.current=null===a||null===a.memoizedState?zl:Nl;a=u(o,s);if(Sl){w=0;do{Sl=!1;El=0;if(25<=w)throw Error(p(301));w+=1;yl=vl=null;i.updateQueue=null;Jr.current=Ll;a=u(o,s)}while(Sl)}Jr.current=Cl;i=null!==vl&&null!==vl.next;ll=0;yl=vl=ul=null;wl=!1;if(i)throw Error(p(300));return a}function bi(){var a=0!==El;El=0;return a}function ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===yl?ul.memoizedState=yl=a:yl=yl.next=a;return yl}function di(){if(null===vl){var a=ul.alternate;a=null!==a?a.memoizedState:null}else a=vl.next;var i=null===yl?ul.memoizedState:yl.next;if(null!==i)yl=i,vl=a;else{if(null===a)throw Error(p(310));vl=a;a={memoizedState:vl.memoizedState,baseState:vl.baseState,baseQueue:vl.baseQueue,queue:vl.queue,next:null};null===yl?ul.memoizedState=yl=a:yl=yl.next=a}return yl}function ei(a,i){return\"function\"===typeof i?i(a):i}function fi(a){var i=di(),u=i.queue;if(null===u)throw Error(p(311));u.lastRenderedReducer=a;var o=vl,s=o.baseQueue,w=u.pending;if(null!==w){if(null!==s){var x=s.next;s.next=w.next;w.next=x}o.baseQueue=s=w;u.pending=null}if(null!==s){w=s.next;o=o.baseState;var C=x=null,z=null,N=w;do{var _=N.lane;if((ll&_)===_)null!==z&&(z=z.next={lane:0,action:N.action,hasEagerState:N.hasEagerState,eagerState:N.eagerState,next:null}),o=N.hasEagerState?N.eagerState:a(o,N.action);else{var j={lane:_,action:N.action,hasEagerState:N.hasEagerState,eagerState:N.eagerState,next:null};null===z?(C=z=j,x=o):z=z.next=j;ul.lanes|=_;aa|=_}N=N.next}while(null!==N&&N!==w);null===z?x=o:z.next=C;Pt(o,i.memoizedState)||(Tl=!0);i.memoizedState=o;i.baseState=x;i.baseQueue=z;u.lastRenderedState=o}a=u.interleaved;if(null!==a){s=a;do{w=s.lane,ul.lanes|=w,aa|=w,s=s.next}while(s!==a)}else null===s&&(u.lanes=0);return[i.memoizedState,u.dispatch]}function gi(a){var i=di(),u=i.queue;if(null===u)throw Error(p(311));u.lastRenderedReducer=a;var o=u.dispatch,s=u.pending,w=i.memoizedState;if(null!==s){u.pending=null;var x=s=s.next;do{w=a(w,x.action),x=x.next}while(x!==s);Pt(w,i.memoizedState)||(Tl=!0);i.memoizedState=w;null===i.baseQueue&&(i.baseState=w);u.lastRenderedState=w}return[w,o]}function hi(){}function ii(a,i){var u=ul,o=di(),s=i(),w=!Pt(o.memoizedState,s);w&&(o.memoizedState=s,Tl=!0);o=o.queue;ji(ki.bind(null,u,o,a),[a]);if(o.getSnapshot!==i||w||null!==yl&&1&yl.memoizedState.tag){u.flags|=2048;li(9,mi.bind(null,u,o,s,i),void 0,null);if(null===Gl)throw Error(p(349));0!==(30&ll)||ni(u,i,s)}return s}function ni(a,i,u){a.flags|=16384;a={getSnapshot:i,value:u};i=ul.updateQueue;null===i?(i={lastEffect:null,stores:null},ul.updateQueue=i,i.stores=[a]):(u=i.stores,null===u?i.stores=[a]:u.push(a))}function mi(a,i,u,o){i.value=u;i.getSnapshot=o;oi(i)&&pi(a)}function ki(a,i,u){return u((function(){oi(i)&&pi(a)}))}function oi(a){var i=a.getSnapshot;a=a.value;try{var u=i();return!Pt(a,u)}catch(a){return!0}}function pi(a){var i=Zg(a,1);null!==i&&mh(i,a,1,-1)}function qi(a){var i=ci();\"function\"===typeof a&&(a=a());i.memoizedState=i.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};i.queue=a;a=a.dispatch=ri.bind(null,ul,a);return[i.memoizedState,a]}function li(a,i,u,o){a={tag:a,create:i,destroy:u,deps:o,next:null};i=ul.updateQueue;null===i?(i={lastEffect:null,stores:null},ul.updateQueue=i,i.lastEffect=a.next=a):(u=i.lastEffect,null===u?i.lastEffect=a.next=a:(o=u.next,u.next=a,a.next=o,i.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,i,u,o){var s=ci();ul.flags|=a;s.memoizedState=li(1|i,u,void 0,void 0===o?null:o)}function ui(a,i,u,o){var s=di();o=void 0===o?null:o;var w=void 0;if(null!==vl){var x=vl.memoizedState;w=x.destroy;if(null!==o&&Wh(o,x.deps)){s.memoizedState=li(i,u,w,o);return}}ul.flags|=a;s.memoizedState=li(1|i,u,w,o)}function vi(a,i){return ti(8390656,8,a,i)}function ji(a,i){return ui(2048,8,a,i)}function wi(a,i){return ui(4,2,a,i)}function xi(a,i){return ui(4,4,a,i)}function yi(a,i){return\"function\"===typeof i?(a=a(),i(a),function(){i(null)}):null!==i&&void 0!==i?(a=a(),i.current=a,function(){i.current=null}):void 0}function zi(a,i,u){u=null!==u&&void 0!==u?u.concat([a]):null;return ui(4,4,yi.bind(null,i,a),u)}function Ai(){}function Bi(a,i){var u=di();i=void 0===i?null:i;var o=u.memoizedState;if(null!==o&&null!==i&&Wh(i,o[1]))return o[0];u.memoizedState=[a,i];return a}function Ci(a,i){var u=di();i=void 0===i?null:i;var o=u.memoizedState;if(null!==o&&null!==i&&Wh(i,o[1]))return o[0];a=a();u.memoizedState=[a,i];return a}function Di(a,i,u){if(0===(21&ll))return a.baseState&&(a.baseState=!1,Tl=!0),a.memoizedState=u;Pt(u,i)||(u=yc(),ul.lanes|=u,aa|=u,a.baseState=!0);return i}function Ei(a,i){var u=vn;vn=0!==u&&4>u?u:4;a(!0);var o=tl.transition;tl.transition={};try{a(!1),i()}finally{vn=u,tl.transition=o}}function Fi(){return di().memoizedState}function Gi(a,i,u){var o=lh(a);u={lane:o,action:u,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(i,u);else if(u=Yg(a,i,u,o),null!==u){var s=L();mh(u,a,o,s);Ji(u,i,o)}}function ri(a,i,u){var o=lh(a),s={lane:o,action:u,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(i,s);else{var w=a.alternate;if(0===a.lanes&&(null===w||0===w.lanes)&&(w=i.lastRenderedReducer,null!==w))try{var x=i.lastRenderedState,C=w(x,u);s.hasEagerState=!0;s.eagerState=C;if(Pt(C,x)){var z=i.interleaved;null===z?(s.next=s,Xg(i)):(s.next=z.next,z.next=s);i.interleaved=s;return}}catch(a){}u=Yg(a,i,s,o);null!==u&&(s=L(),mh(u,a,o,s),Ji(u,i,o))}}function Hi(a){var i=a.alternate;return a===ul||null!==i&&i===ul}function Ii(a,i){Sl=wl=!0;var u=a.pending;null===u?i.next=i:(i.next=u.next,u.next=i);a.pending=i}function Ji(a,i,u){if(0!==(4194240&u)){var o=i.lanes;o&=a.pendingLanes;u|=o;i.lanes=u;Cc(a,u)}}var Cl={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},zl={readContext:Vg,useCallback:function(a,i){ci().memoizedState=[a,void 0===i?null:i];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,i,u){u=null!==u&&void 0!==u?u.concat([a]):null;return ti(4194308,4,yi.bind(null,i,a),u)},useLayoutEffect:function(a,i){return ti(4194308,4,a,i)},useInsertionEffect:function(a,i){return ti(4,2,a,i)},useMemo:function(a,i){var u=ci();i=void 0===i?null:i;a=a();u.memoizedState=[a,i];return a},useReducer:function(a,i,u){var o=ci();i=void 0!==u?u(i):i;o.memoizedState=o.baseState=i;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:i};o.queue=a;a=a.dispatch=Gi.bind(null,ul,a);return[o.memoizedState,a]},useRef:function(a){var i=ci();a={current:a};return i.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),i=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[i,a]},useMutableSource:function(){},useSyncExternalStore:function(a,i,u){var o=ul,s=ci();if(Mr){if(void 0===u)throw Error(p(407));u=u()}else{u=i();if(null===Gl)throw Error(p(349));0!==(30&ll)||ni(o,i,u)}s.memoizedState=u;var w={value:u,getSnapshot:i};s.queue=w;vi(ki.bind(null,o,w,a),[a]);o.flags|=2048;li(9,mi.bind(null,o,w,u,i),void 0,null);return u},useId:function(){var a=ci(),i=Gl.identifierPrefix;if(Mr){var u=Pr;var o=jr;u=(o&~(1<<32-dn(o)-1)).toString(32)+u;i=\":\"+i+\"R\"+u;u=El++;0<u&&(i+=\"H\"+u.toString(32));i+=\":\"}else u=xl++,i=\":\"+i+\"r\"+u.toString(32)+\":\";return a.memoizedState=i},unstable_isNewReconciler:!1},Nl={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var i=di();return Di(i,vl.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],i=di().memoizedState;return[a,i]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},Ll={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var i=di();return null===vl?i.memoizedState=a:Di(i,vl.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],i=di().memoizedState;return[a,i]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,i){try{var u=\"\",o=i;do{u+=Pa(o),o=o.return}while(o);var s=u}catch(a){s=\"\\nError generating stack: \"+a.message+\"\\n\"+a.stack}return{value:a,source:i,stack:s,digest:null}}function Li(a,i,u){return{value:a,source:null,stack:null!=u?u:null,digest:null!=i?i:null}}function Mi(a,i){try{console.error(i.value)}catch(a){setTimeout((function(){throw a}))}}var _l=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,i,u){u=ch(-1,u);u.tag=3;u.payload={element:null};var o=i.value;u.callback=function(){ba||(ba=!0,ya=o);Mi(a,i)};return u}function Ri(a,i,u){u=ch(-1,u);u.tag=3;var o=a.type.getDerivedStateFromError;if(\"function\"===typeof o){var s=i.value;u.payload=function(){return o(s)};u.callback=function(){Mi(a,i)}}var w=a.stateNode;null!==w&&\"function\"===typeof w.componentDidCatch&&(u.callback=function(){Mi(a,i);\"function\"!==typeof o&&(null===ka?ka=new Set([this]):ka.add(this));var u=i.stack;this.componentDidCatch(i.value,{componentStack:null!==u?u:\"\"})});return u}function Ti(a,i,u){var o=a.pingCache;if(null===o){o=a.pingCache=new _l;var s=new Set;o.set(i,s)}else s=o.get(i),void 0===s&&(s=new Set,o.set(i,s));s.has(u)||(s.add(u),a=Ui.bind(null,a,i,u),i.then(a,a))}function Vi(a){do{var i;(i=13===a.tag)&&(i=a.memoizedState,i=null===i||null!==i.dehydrated);if(i)return a;a=a.return}while(null!==a);return null}function Wi(a,i,u,o,s){if(0===(1&a.mode))return a===i?a.flags|=65536:(a.flags|=128,u.flags|=131072,u.flags&=-52805,1===u.tag&&(null===u.alternate?u.tag=17:(i=ch(-1,1),i.tag=2,dh(u,i,1))),u.lanes|=1),a;a.flags|=65536;a.lanes=s;return a}var Pl=R.ReactCurrentOwner,Tl=!1;function Yi(a,i,u,o){i.child=null===a?$r(i,null,u,o):Hr(i,a.child,u,o)}function Zi(a,i,u,o,s){u=u.render;var w=i.ref;Tg(i,s);o=Xh(a,i,u,o,w,s);u=bi();if(null!==a&&!Tl)return i.updateQueue=a.updateQueue,i.flags&=-2053,a.lanes&=~s,$i(a,i,s);Mr&&u&&vg(i);i.flags|=1;Yi(a,i,o,s);return i.child}function aj(a,i,u,o,s){if(null===a){var w=u.type;if(\"function\"===typeof w&&!bj(w)&&void 0===w.defaultProps&&null===u.compare&&void 0===u.defaultProps)return i.tag=15,i.type=w,cj(a,i,w,o,s);a=yh(u.type,null,o,i,i.mode,s);a.ref=i.ref;a.return=i;return i.child=a}w=a.child;if(0===(a.lanes&s)){var x=w.memoizedProps;u=u.compare;u=null!==u?u:Ie;if(u(x,o)&&a.ref===i.ref)return $i(a,i,s)}i.flags|=1;a=wh(w,o);a.ref=i.ref;a.return=i;return i.child=a}function cj(a,i,u,o,s){if(null!==a){var w=a.memoizedProps;if(Ie(w,o)&&a.ref===i.ref){if(Tl=!1,i.pendingProps=o=w,0===(a.lanes&s))return i.lanes=a.lanes,$i(a,i,s);0!==(131072&a.flags)&&(Tl=!0)}}return dj(a,i,u,o,s)}function ej(a,i,u){var o=i.pendingProps,s=o.children,w=null!==a?a.memoizedState:null;if(\"hidden\"===o.mode)if(0===(1&i.mode))i.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(na,ea),ea|=u;else{if(0===(1073741824&u))return a=null!==w?w.baseLanes|u:u,i.lanes=i.childLanes=1073741824,i.memoizedState={baseLanes:a,cachePool:null,transitions:null},i.updateQueue=null,G(na,ea),ea|=a,null;i.memoizedState={baseLanes:0,cachePool:null,transitions:null};o=null!==w?w.baseLanes:u;G(na,ea);ea|=o}else null!==w?(o=w.baseLanes|u,i.memoizedState=null):o=u,G(na,ea),ea|=o;Yi(a,i,s,u);return i.child}function hj(a,i){var u=i.ref;(null===a&&null!==u||null!==a&&a.ref!==u)&&(i.flags|=512,i.flags|=2097152)}function dj(a,i,u,o,s){var w=Zf(u)?yr:vr.current;w=Yf(i,w);Tg(i,s);u=Xh(a,i,u,o,w,s);o=bi();if(null!==a&&!Tl)return i.updateQueue=a.updateQueue,i.flags&=-2053,a.lanes&=~s,$i(a,i,s);Mr&&o&&vg(i);i.flags|=1;Yi(a,i,u,s);return i.child}function ij(a,i,u,o,s){if(Zf(u)){var w=!0;cg(i)}else w=!1;Tg(i,s);if(null===i.stateNode)jj(a,i),ph(i,u,o),rh(i,u,o,s),o=!0;else if(null===a){var x=i.stateNode,C=i.memoizedProps;x.props=C;var z=x.context,N=u.contextType;\"object\"===typeof N&&null!==N?N=Vg(N):(N=Zf(u)?yr:vr.current,N=Yf(i,N));var _=u.getDerivedStateFromProps,j=\"function\"===typeof _||\"function\"===typeof x.getSnapshotBeforeUpdate;j||\"function\"!==typeof x.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof x.componentWillReceiveProps||(C!==o||z!==N)&&qh(i,x,o,N);Qr=!1;var P=i.memoizedState;x.state=P;gh(i,o,x,s);z=i.memoizedState;C!==o||P!==z||br.current||Qr?(\"function\"===typeof _&&(kh(i,u,_,o),z=i.memoizedState),(C=Qr||oh(i,u,C,o,P,z,N))?(j||\"function\"!==typeof x.UNSAFE_componentWillMount&&\"function\"!==typeof x.componentWillMount||(\"function\"===typeof x.componentWillMount&&x.componentWillMount(),\"function\"===typeof x.UNSAFE_componentWillMount&&x.UNSAFE_componentWillMount()),\"function\"===typeof x.componentDidMount&&(i.flags|=4194308)):(\"function\"===typeof x.componentDidMount&&(i.flags|=4194308),i.memoizedProps=o,i.memoizedState=z),x.props=o,x.state=z,x.context=N,o=C):(\"function\"===typeof x.componentDidMount&&(i.flags|=4194308),o=!1)}else{x=i.stateNode;bh(a,i);C=i.memoizedProps;N=i.type===i.elementType?C:Lg(i.type,C);x.props=N;j=i.pendingProps;P=x.context;z=u.contextType;\"object\"===typeof z&&null!==z?z=Vg(z):(z=Zf(u)?yr:vr.current,z=Yf(i,z));var T=u.getDerivedStateFromProps;(_=\"function\"===typeof T||\"function\"===typeof x.getSnapshotBeforeUpdate)||\"function\"!==typeof x.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof x.componentWillReceiveProps||(C!==j||P!==z)&&qh(i,x,o,z);Qr=!1;P=i.memoizedState;x.state=P;gh(i,o,x,s);var M=i.memoizedState;C!==j||P!==M||br.current||Qr?(\"function\"===typeof T&&(kh(i,u,T,o),M=i.memoizedState),(N=Qr||oh(i,u,N,o,P,M,z)||!1)?(_||\"function\"!==typeof x.UNSAFE_componentWillUpdate&&\"function\"!==typeof x.componentWillUpdate||(\"function\"===typeof x.componentWillUpdate&&x.componentWillUpdate(o,M,z),\"function\"===typeof x.UNSAFE_componentWillUpdate&&x.UNSAFE_componentWillUpdate(o,M,z)),\"function\"===typeof x.componentDidUpdate&&(i.flags|=4),\"function\"===typeof x.getSnapshotBeforeUpdate&&(i.flags|=1024)):(\"function\"!==typeof x.componentDidUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=4),\"function\"!==typeof x.getSnapshotBeforeUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=1024),i.memoizedProps=o,i.memoizedState=M),x.props=o,x.state=M,x.context=z,o=N):(\"function\"!==typeof x.componentDidUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=4),\"function\"!==typeof x.getSnapshotBeforeUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=1024),o=!1)}return kj(a,i,u,o,w,s)}function kj(a,i,u,o,s,w){hj(a,i);var x=0!==(128&i.flags);if(!o&&!x)return s&&dg(i,u,!1),$i(a,i,w);o=i.stateNode;Pl.current=i;var C=x&&\"function\"!==typeof u.getDerivedStateFromError?null:o.render();i.flags|=1;null!==a&&x?(i.child=Hr(i,a.child,null,w),i.child=Hr(i,null,C,w)):Yi(a,i,C,w);i.memoizedState=o.state;s&&dg(i,u,!0);return i.child}function lj(a){var i=a.stateNode;i.pendingContext?ag(a,i.pendingContext,i.pendingContext!==i.context):i.context&&ag(a,i.context,!1);Ih(a,i.containerInfo)}function mj(a,i,u,o,s){Ig();Jg(s);i.flags|=256;Yi(a,i,u,o);return i.child}var Dl={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}function pj(a,i,u){var o,s=i.pendingProps,w=qr.current,x=!1,C=0!==(128&i.flags);(o=C)||(o=(null===a||null!==a.memoizedState)&&0!==(2&w));o?(x=!0,i.flags&=-129):null!==a&&null===a.memoizedState||(w|=1);G(qr,1&w);if(null===a){Eg(i);a=i.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(1&i.mode)?i.lanes=1:\"$!\"===a.data?i.lanes=8:i.lanes=1073741824,null;C=s.children;a=s.fallback;return x?(s=i.mode,x=i.child,C={mode:\"hidden\",children:C},0===(1&s)&&null!==x?(x.childLanes=0,x.pendingProps=C):x=qj(C,s,0,null),a=Ah(a,s,u,null),x.return=i,a.return=i,x.sibling=a,i.child=x,i.child.memoizedState=oj(u),i.memoizedState=Dl,a):rj(i,C)}w=a.memoizedState;if(null!==w&&(o=w.dehydrated,null!==o))return sj(a,i,C,s,o,w,u);if(x){x=s.fallback;C=i.mode;w=a.child;o=w.sibling;var z={mode:\"hidden\",children:s.children};0===(1&C)&&i.child!==w?(s=i.child,s.childLanes=0,s.pendingProps=z,i.deletions=null):(s=wh(w,z),s.subtreeFlags=14680064&w.subtreeFlags);null!==o?x=wh(o,x):(x=Ah(x,C,u,null),x.flags|=2);x.return=i;s.return=i;s.sibling=x;i.child=s;s=x;x=i.child;C=a.child.memoizedState;C=null===C?oj(u):{baseLanes:C.baseLanes|u,cachePool:null,transitions:C.transitions};x.memoizedState=C;x.childLanes=a.childLanes&~u;i.memoizedState=Dl;return s}x=a.child;a=x.sibling;s=wh(x,{mode:\"visible\",children:s.children});0===(1&i.mode)&&(s.lanes=u);s.return=i;s.sibling=null;null!==a&&(u=i.deletions,null===u?(i.deletions=[a],i.flags|=16):u.push(a));i.child=s;i.memoizedState=null;return s}function rj(a,i){i=qj({mode:\"visible\",children:i},a.mode,0,null);i.return=a;return a.child=i}function tj(a,i,u,o){null!==o&&Jg(o);Hr(i,a.child,null,u);a=rj(i,i.pendingProps.children);a.flags|=2;i.memoizedState=null;return a}function sj(a,i,u,o,s,w,x){if(u){if(256&i.flags)return i.flags&=-257,o=Li(Error(p(422))),tj(a,i,x,o);if(null!==i.memoizedState)return i.child=a.child,i.flags|=128,null;w=o.fallback;s=i.mode;o=qj({mode:\"visible\",children:o.children},s,0,null);w=Ah(w,s,x,null);w.flags|=2;o.return=i;w.return=i;o.sibling=w;i.child=o;0!==(1&i.mode)&&Hr(i,a.child,null,x);i.child.memoizedState=oj(x);i.memoizedState=Dl;return w}if(0===(1&i.mode))return tj(a,i,x,null);if(\"$!\"===s.data){o=s.nextSibling&&s.nextSibling.dataset;if(o)var C=o.dgst;o=C;w=Error(p(419));o=Li(w,o,void 0);return tj(a,i,x,o)}C=0!==(x&a.childLanes);if(Tl||C){o=Gl;if(null!==o){switch(x&-x){case 4:s=2;break;case 16:s=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:s=32;break;case 536870912:s=268435456;break;default:s=0}s=0!==(s&(o.suspendedLanes|x))?0:s;0!==s&&s!==w.retryLane&&(w.retryLane=s,Zg(a,s),mh(o,a,s,-1))}uj();o=Li(Error(p(421)));return tj(a,i,x,o)}if(\"$?\"===s.data)return i.flags|=128,i.child=a.child,i=vj.bind(null,a),s._reactRetry=i,null;a=w.treeContext;Dr=Lf(s.nextSibling);Tr=i;Mr=!0;Fr=null;null!==a&&(Nr[Lr++]=jr,Nr[Lr++]=Pr,Nr[Lr++]=_r,jr=a.id,Pr=a.overflow,_r=i);i=rj(i,o.children);i.flags|=4096;return i}function wj(a,i,u){a.lanes|=i;var o=a.alternate;null!==o&&(o.lanes|=i);Sg(a.return,i,u)}function xj(a,i,u,o,s){var w=a.memoizedState;null===w?a.memoizedState={isBackwards:i,rendering:null,renderingStartTime:0,last:o,tail:u,tailMode:s}:(w.isBackwards=i,w.rendering=null,w.renderingStartTime=0,w.last=o,w.tail=u,w.tailMode=s)}function yj(a,i,u){var o=i.pendingProps,s=o.revealOrder,w=o.tail;Yi(a,i,o.children,u);o=qr.current;if(0!==(2&o))o=1&o|2,i.flags|=128;else{if(null!==a&&0!==(128&a.flags))e:for(a=i.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,u,i);else if(19===a.tag)wj(a,u,i);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===i)break e;for(;null===a.sibling;){if(null===a.return||a.return===i)break e;a=a.return}a.sibling.return=a.return;a=a.sibling}o&=1}G(qr,o);if(0===(1&i.mode))i.memoizedState=null;else switch(s){case\"forwards\":u=i.child;for(s=null;null!==u;)a=u.alternate,null!==a&&null===Mh(a)&&(s=u),u=u.sibling;u=s;null===u?(s=i.child,i.child=null):(s=u.sibling,u.sibling=null);xj(i,!1,s,u,w);break;case\"backwards\":u=null;s=i.child;for(i.child=null;null!==s;){a=s.alternate;if(null!==a&&null===Mh(a)){i.child=s;break}a=s.sibling;s.sibling=u;u=s;s=a}xj(i,!0,u,null,w);break;case\"together\":xj(i,!1,null,null,void 0);break;default:i.memoizedState=null}return i.child}function jj(a,i){0===(1&i.mode)&&null!==a&&(a.alternate=null,i.alternate=null,i.flags|=2)}function $i(a,i,u){null!==a&&(i.dependencies=a.dependencies);aa|=i.lanes;if(0===(u&i.childLanes))return null;if(null!==a&&i.child!==a.child)throw Error(p(153));if(null!==i.child){a=i.child;u=wh(a,a.pendingProps);i.child=u;for(u.return=i;null!==a.sibling;)a=a.sibling,u=u.sibling=wh(a,a.pendingProps),u.return=i;u.sibling=null}return i.child}function zj(a,i,u){switch(i.tag){case 3:lj(i);Ig();break;case 5:Kh(i);break;case 1:Zf(i.type)&&cg(i);break;case 4:Ih(i,i.stateNode.containerInfo);break;case 10:var o=i.type._context,s=i.memoizedProps.value;G(Or,o._currentValue);o._currentValue=s;break;case 13:o=i.memoizedState;if(null!==o){if(null!==o.dehydrated)return G(qr,1&qr.current),i.flags|=128,null;if(0!==(u&i.child.childLanes))return pj(a,i,u);G(qr,1&qr.current);a=$i(a,i,u);return null!==a?a.sibling:null}G(qr,1&qr.current);break;case 19:o=0!==(u&i.childLanes);if(0!==(128&a.flags)){if(o)return yj(a,i,u);i.flags|=128}s=i.memoizedState;null!==s&&(s.rendering=null,s.tail=null,s.lastEffect=null);G(qr,qr.current);if(o)break;return null;case 22:case 23:return i.lanes=0,ej(a,i,u)}return $i(a,i,u)}var Ml,Fl,Rl,Ol;Ml=function(a,i){for(var u=i.child;null!==u;){if(5===u.tag||6===u.tag)a.appendChild(u.stateNode);else if(4!==u.tag&&null!==u.child){u.child.return=u;u=u.child;continue}if(u===i)break;for(;null===u.sibling;){if(null===u.return||u.return===i)return;u=u.return}u.sibling.return=u.return;u=u.sibling}};Fl=function(){};Rl=function(a,i,u,o){var s=a.memoizedProps;if(s!==o){a=i.stateNode;Hh(Yr.current);var w=null;switch(u){case\"input\":s=Ya(a,s);o=Ya(a,o);w=[];break;case\"select\":s=ie({},s,{value:void 0});o=ie({},o,{value:void 0});w=[];break;case\"textarea\":s=gb(a,s);o=gb(a,o);w=[];break;default:\"function\"!==typeof s.onClick&&\"function\"===typeof o.onClick&&(a.onclick=Bf)}ub(u,o);var x;u=null;for(_ in s)if(!o.hasOwnProperty(_)&&s.hasOwnProperty(_)&&null!=s[_])if(\"style\"===_){var C=s[_];for(x in C)C.hasOwnProperty(x)&&(u||(u={}),u[x]=\"\")}else\"dangerouslySetInnerHTML\"!==_&&\"children\"!==_&&\"suppressContentEditableWarning\"!==_&&\"suppressHydrationWarning\"!==_&&\"autoFocus\"!==_&&(z.hasOwnProperty(_)?w||(w=[]):(w=w||[]).push(_,null));for(_ in o){var N=o[_];C=null!=s?s[_]:void 0;if(o.hasOwnProperty(_)&&N!==C&&(null!=N||null!=C))if(\"style\"===_)if(C){for(x in C)!C.hasOwnProperty(x)||N&&N.hasOwnProperty(x)||(u||(u={}),u[x]=\"\");for(x in N)N.hasOwnProperty(x)&&C[x]!==N[x]&&(u||(u={}),u[x]=N[x])}else u||(w||(w=[]),w.push(_,u)),u=N;else\"dangerouslySetInnerHTML\"===_?(N=N?N.__html:void 0,C=C?C.__html:void 0,null!=N&&C!==N&&(w=w||[]).push(_,N)):\"children\"===_?\"string\"!==typeof N&&\"number\"!==typeof N||(w=w||[]).push(_,\"\"+N):\"suppressContentEditableWarning\"!==_&&\"suppressHydrationWarning\"!==_&&(z.hasOwnProperty(_)?(null!=N&&\"onScroll\"===_&&D(\"scroll\",a),w||C===N||(w=[])):(w=w||[]).push(_,N))}u&&(w=w||[]).push(\"style\",u);var _=w;(i.updateQueue=_)&&(i.flags|=4)}};Ol=function(a,i,u,o){u!==o&&(i.flags|=4)};function Ej(a,i){if(!Mr)switch(a.tailMode){case\"hidden\":i=a.tail;for(var u=null;null!==i;)null!==i.alternate&&(u=i),i=i.sibling;null===u?a.tail=null:u.sibling=null;break;case\"collapsed\":u=a.tail;for(var o=null;null!==u;)null!==u.alternate&&(o=u),u=u.sibling;null===o?i||null===a.tail?a.tail=null:a.tail.sibling=null:o.sibling=null}}function S(a){var i=null!==a.alternate&&a.alternate.child===a.child,u=0,o=0;if(i)for(var s=a.child;null!==s;)u|=s.lanes|s.childLanes,o|=14680064&s.subtreeFlags,o|=14680064&s.flags,s.return=a,s=s.sibling;else for(s=a.child;null!==s;)u|=s.lanes|s.childLanes,o|=s.subtreeFlags,o|=s.flags,s.return=a,s=s.sibling;a.subtreeFlags|=o;a.childLanes=u;return i}function Fj(a,i,u){var o=i.pendingProps;wg(i);switch(i.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(i),null;case 1:return Zf(i.type)&&$f(),S(i),null;case 3:o=i.stateNode;Jh();E(br);E(vr);Oh();o.pendingContext&&(o.context=o.pendingContext,o.pendingContext=null);null!==a&&null!==a.child||(Gg(i)?i.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(256&i.flags)||(i.flags|=1024,null!==Fr&&(Gj(Fr),Fr=null)));Fl(a,i);S(i);return null;case 5:Lh(i);var s=Hh(Gr.current);u=i.type;if(null!==a&&null!=i.stateNode)Rl(a,i,u,o,s),a.ref!==i.ref&&(i.flags|=512,i.flags|=2097152);else{if(!o){if(null===i.stateNode)throw Error(p(166));S(i);return null}a=Hh(Yr.current);if(Gg(i)){o=i.stateNode;u=i.type;var w=i.memoizedProps;o[or]=i;o[sr]=w;a=0!==(1&i.mode);switch(u){case\"dialog\":D(\"cancel\",o);D(\"close\",o);break;case\"iframe\":case\"object\":case\"embed\":D(\"load\",o);break;case\"video\":case\"audio\":for(s=0;s<Gt.length;s++)D(Gt[s],o);break;case\"source\":D(\"error\",o);break;case\"img\":case\"image\":case\"link\":D(\"error\",o);D(\"load\",o);break;case\"details\":D(\"toggle\",o);break;case\"input\":Za(o,w);D(\"invalid\",o);break;case\"select\":o._wrapperState={wasMultiple:!!w.multiple};D(\"invalid\",o);break;case\"textarea\":hb(o,w),D(\"invalid\",o)}ub(u,w);s=null;for(var x in w)if(w.hasOwnProperty(x)){var C=w[x];\"children\"===x?\"string\"===typeof C?o.textContent!==C&&(!0!==w.suppressHydrationWarning&&Af(o.textContent,C,a),s=[\"children\",C]):\"number\"===typeof C&&o.textContent!==\"\"+C&&(!0!==w.suppressHydrationWarning&&Af(o.textContent,C,a),s=[\"children\",\"\"+C]):z.hasOwnProperty(x)&&null!=C&&\"onScroll\"===x&&D(\"scroll\",o)}switch(u){case\"input\":Va(o);db(o,w,!0);break;case\"textarea\":Va(o);jb(o);break;case\"select\":case\"option\":break;default:\"function\"===typeof w.onClick&&(o.onclick=Bf)}o=s;i.updateQueue=o;null!==o&&(i.flags|=4)}else{x=9===s.nodeType?s:s.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(u));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===u?(a=x.createElement(\"div\"),a.innerHTML=\"<script><\\/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof o.is?a=x.createElement(u,{is:o.is}):(a=x.createElement(u),\"select\"===u&&(x=a,o.multiple?x.multiple=!0:o.size&&(x.size=o.size))):a=x.createElementNS(a,u);a[or]=i;a[sr]=o;Ml(a,i,!1,!1);i.stateNode=a;e:{x=vb(u,o);switch(u){case\"dialog\":D(\"cancel\",a);D(\"close\",a);s=o;break;case\"iframe\":case\"object\":case\"embed\":D(\"load\",a);s=o;break;case\"video\":case\"audio\":for(s=0;s<Gt.length;s++)D(Gt[s],a);s=o;break;case\"source\":D(\"error\",a);s=o;break;case\"img\":case\"image\":case\"link\":D(\"error\",a);D(\"load\",a);s=o;break;case\"details\":D(\"toggle\",a);s=o;break;case\"input\":Za(a,o);s=Ya(a,o);D(\"invalid\",a);break;case\"option\":s=o;break;case\"select\":a._wrapperState={wasMultiple:!!o.multiple};s=ie({},o,{value:void 0});D(\"invalid\",a);break;case\"textarea\":hb(a,o);s=gb(a,o);D(\"invalid\",a);break;default:s=o}ub(u,s);C=s;for(w in C)if(C.hasOwnProperty(w)){var N=C[w];\"style\"===w?sb(a,N):\"dangerouslySetInnerHTML\"===w?(N=N?N.__html:void 0,null!=N&&pe(a,N)):\"children\"===w?\"string\"===typeof N?(\"textarea\"!==u||\"\"!==N)&&ob(a,N):\"number\"===typeof N&&ob(a,\"\"+N):\"suppressContentEditableWarning\"!==w&&\"suppressHydrationWarning\"!==w&&\"autoFocus\"!==w&&(z.hasOwnProperty(w)?null!=N&&\"onScroll\"===w&&D(\"scroll\",a):null!=N&&ta(a,w,N,x))}switch(u){case\"input\":Va(a);db(a,o,!1);break;case\"textarea\":Va(a);jb(a);break;case\"option\":null!=o.value&&a.setAttribute(\"value\",\"\"+Sa(o.value));break;case\"select\":a.multiple=!!o.multiple;w=o.value;null!=w?fb(a,!!o.multiple,w,!1):null!=o.defaultValue&&fb(a,!!o.multiple,o.defaultValue,!0);break;default:\"function\"===typeof s.onClick&&(a.onclick=Bf)}switch(u){case\"button\":case\"input\":case\"select\":case\"textarea\":o=!!o.autoFocus;break e;case\"img\":o=!0;break e;default:o=!1}}o&&(i.flags|=4)}null!==i.ref&&(i.flags|=512,i.flags|=2097152)}S(i);return null;case 6:if(a&&null!=i.stateNode)Ol(a,i,a.memoizedProps,o);else{if(\"string\"!==typeof o&&null===i.stateNode)throw Error(p(166));u=Hh(Gr.current);Hh(Yr.current);if(Gg(i)){o=i.stateNode;u=i.memoizedProps;o[or]=i;if((w=o.nodeValue!==u)&&(a=Tr,null!==a))switch(a.tag){case 3:Af(o.nodeValue,u,0!==(1&a.mode));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(o.nodeValue,u,0!==(1&a.mode))}w&&(i.flags|=4)}else o=(9===u.nodeType?u:u.ownerDocument).createTextNode(o),o[or]=i,i.stateNode=o}S(i);return null;case 13:E(qr);o=i.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(Mr&&null!==Dr&&0!==(1&i.mode)&&0===(128&i.flags))Hg(),Ig(),i.flags|=98560,w=!1;else if(w=Gg(i),null!==o&&null!==o.dehydrated){if(null===a){if(!w)throw Error(p(318));w=i.memoizedState;w=null!==w?w.dehydrated:null;if(!w)throw Error(p(317));w[or]=i}else Ig(),0===(128&i.flags)&&(i.memoizedState=null),i.flags|=4;S(i);w=!1}else null!==Fr&&(Gj(Fr),Fr=null),w=!0;if(!w)return 65536&i.flags?i:null}if(0!==(128&i.flags))return i.lanes=u,i;o=null!==o;o!==(null!==a&&null!==a.memoizedState)&&o&&(i.child.flags|=8192,0!==(1&i.mode)&&(null===a||0!==(1&qr.current)?0===ra&&(ra=3):uj()));null!==i.updateQueue&&(i.flags|=4);S(i);return null;case 4:return Jh(),Fl(a,i),null===a&&sf(i.stateNode.containerInfo),S(i),null;case 10:return Rg(i.type._context),S(i),null;case 17:return Zf(i.type)&&$f(),S(i),null;case 19:E(qr);w=i.memoizedState;if(null===w)return S(i),null;o=0!==(128&i.flags);x=w.rendering;if(null===x)if(o)Ej(w,!1);else{if(0!==ra||null!==a&&0!==(128&a.flags))for(a=i.child;null!==a;){x=Mh(a);if(null!==x){i.flags|=128;Ej(w,!1);o=x.updateQueue;null!==o&&(i.updateQueue=o,i.flags|=4);i.subtreeFlags=0;o=u;for(u=i.child;null!==u;)w=u,a=o,w.flags&=14680066,x=w.alternate,null===x?(w.childLanes=0,w.lanes=a,w.child=null,w.subtreeFlags=0,w.memoizedProps=null,w.memoizedState=null,w.updateQueue=null,w.dependencies=null,w.stateNode=null):(w.childLanes=x.childLanes,w.lanes=x.lanes,w.child=x.child,w.subtreeFlags=0,w.deletions=null,w.memoizedProps=x.memoizedProps,w.memoizedState=x.memoizedState,w.updateQueue=x.updateQueue,w.type=x.type,a=x.dependencies,w.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),u=u.sibling;G(qr,1&qr.current|2);return i.child}a=a.sibling}null!==w.tail&&tn()>ma&&(i.flags|=128,o=!0,Ej(w,!1),i.lanes=4194304)}else{if(!o)if(a=Mh(x),null!==a){if(i.flags|=128,o=!0,u=a.updateQueue,null!==u&&(i.updateQueue=u,i.flags|=4),Ej(w,!0),null===w.tail&&\"hidden\"===w.tailMode&&!x.alternate&&!Mr)return S(i),null}else 2*tn()-w.renderingStartTime>ma&&1073741824!==u&&(i.flags|=128,o=!0,Ej(w,!1),i.lanes=4194304);w.isBackwards?(x.sibling=i.child,i.child=x):(u=w.last,null!==u?u.sibling=x:i.child=x,w.last=x)}if(null!==w.tail)return i=w.tail,w.rendering=i,w.tail=i.sibling,w.renderingStartTime=tn(),i.sibling=null,u=qr.current,G(qr,o?1&u|2:1&u),i;S(i);return null;case 22:case 23:return Ij(),o=null!==i.memoizedState,null!==a&&null!==a.memoizedState!==o&&(i.flags|=8192),o&&0!==(1&i.mode)?0!==(1073741824&ea)&&(S(i),6&i.subtreeFlags&&(i.flags|=8192)):S(i),null;case 24:return null;case 25:return null}throw Error(p(156,i.tag))}function Jj(a,i){wg(i);switch(i.tag){case 1:return Zf(i.type)&&$f(),a=i.flags,65536&a?(i.flags=-65537&a|128,i):null;case 3:return Jh(),E(br),E(vr),Oh(),a=i.flags,0!==(65536&a)&&0===(128&a)?(i.flags=-65537&a|128,i):null;case 5:return Lh(i),null;case 13:E(qr);a=i.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===i.alternate)throw Error(p(340));Ig()}a=i.flags;return 65536&a?(i.flags=-65537&a|128,i):null;case 19:return E(qr),null;case 4:return Jh(),null;case 10:return Rg(i.type._context),null;case 22:case 23:return Ij(),null;case 24:return null;default:return null}}var Il=!1,Ul=!1,Vl=\"function\"===typeof WeakSet?WeakSet:Set,Wl=null;function Mj(a,i){var u=a.ref;if(null!==u)if(\"function\"===typeof u)try{u(null)}catch(u){W(a,i,u)}else u.current=null}function Nj(a,i,u){try{u()}catch(u){W(a,i,u)}}var Ql=!1;function Pj(a,i){nr=Dn;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var u={start:a.selectionStart,end:a.selectionEnd};else e:{u=(u=a.ownerDocument)&&u.defaultView||window;var o=u.getSelection&&u.getSelection();if(o&&0!==o.rangeCount){u=o.anchorNode;var s=o.anchorOffset,w=o.focusNode;o=o.focusOffset;try{u.nodeType,w.nodeType}catch(a){u=null;break e}var x=0,C=-1,z=-1,N=0,_=0,j=a,P=null;n:for(;;){for(var T;;){j!==u||0!==s&&3!==j.nodeType||(C=x+s);j!==w||0!==o&&3!==j.nodeType||(z=x+o);3===j.nodeType&&(x+=j.nodeValue.length);if(null===(T=j.firstChild))break;P=j;j=T}for(;;){if(j===a)break n;P===u&&++N===s&&(C=x);P===w&&++_===o&&(z=x);if(null!==(T=j.nextSibling))break;j=P;P=j.parentNode}j=T}u=-1===C||-1===z?null:{start:C,end:z}}else u=null}u=u||{start:0,end:0}}else u=null;tr={focusedElem:a,selectionRange:u};Dn=!1;for(Wl=i;null!==Wl;)if(i=Wl,a=i.child,0!==(1028&i.subtreeFlags)&&null!==a)a.return=i,Wl=a;else for(;null!==Wl;){i=Wl;try{var M=i.alternate;if(0!==(1024&i.flags))switch(i.tag){case 0:case 11:case 15:break;case 1:if(null!==M){var F=M.memoizedProps,R=M.memoizedState,O=i.stateNode,I=O.getSnapshotBeforeUpdate(i.elementType===i.type?F:Lg(i.type,F),R);O.__reactInternalSnapshotBeforeUpdate=I}break;case 3:var U=i.stateNode.containerInfo;1===U.nodeType?U.textContent=\"\":9===U.nodeType&&U.documentElement&&U.removeChild(U.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163))}}catch(a){W(i,i.return,a)}a=i.sibling;if(null!==a){a.return=i.return;Wl=a;break}Wl=i.return}M=Ql;Ql=!1;return M}function Qj(a,i,u){var o=i.updateQueue;o=null!==o?o.lastEffect:null;if(null!==o){var s=o=o.next;do{if((s.tag&a)===a){var w=s.destroy;s.destroy=void 0;void 0!==w&&Nj(i,u,w)}s=s.next}while(s!==o)}}function Rj(a,i){i=i.updateQueue;i=null!==i?i.lastEffect:null;if(null!==i){var u=i=i.next;do{if((u.tag&a)===a){var o=u.create;u.destroy=o()}u=u.next}while(u!==i)}}function Sj(a){var i=a.ref;if(null!==i){var u=a.stateNode;switch(a.tag){case 5:a=u;break;default:a=u}\"function\"===typeof i?i(a):i.current=a}}function Tj(a){var i=a.alternate;null!==i&&(a.alternate=null,Tj(i));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(i=a.stateNode,null!==i&&(delete i[or],delete i[sr],delete i[fr],delete i[dr],delete i[pr]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}function Vj(a){e:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(2&a.flags)continue e;if(null===a.child||4===a.tag)continue e;a.child.return=a,a=a.child}if(!(2&a.flags))return a.stateNode}}function Wj(a,i,u){var o=a.tag;if(5===o||6===o)a=a.stateNode,i?8===u.nodeType?u.parentNode.insertBefore(a,i):u.insertBefore(a,i):(8===u.nodeType?(i=u.parentNode,i.insertBefore(a,u)):(i=u,i.appendChild(a)),u=u._reactRootContainer,null!==u&&void 0!==u||null!==i.onclick||(i.onclick=Bf));else if(4!==o&&(a=a.child,null!==a))for(Wj(a,i,u),a=a.sibling;null!==a;)Wj(a,i,u),a=a.sibling}function Xj(a,i,u){var o=a.tag;if(5===o||6===o)a=a.stateNode,i?u.insertBefore(a,i):u.appendChild(a);else if(4!==o&&(a=a.child,null!==a))for(Xj(a,i,u),a=a.sibling;null!==a;)Xj(a,i,u),a=a.sibling}var Al=null,Bl=!1;function Zj(a,i,u){for(u=u.child;null!==u;)ak(a,i,u),u=u.sibling}function ak(a,i,u){if(fn&&\"function\"===typeof fn.onCommitFiberUnmount)try{fn.onCommitFiberUnmount(cn,u)}catch(a){}switch(u.tag){case 5:Ul||Mj(u,i);case 6:var o=Al,s=Bl;Al=null;Zj(a,i,u);Al=o;Bl=s;null!==Al&&(Bl?(a=Al,u=u.stateNode,8===a.nodeType?a.parentNode.removeChild(u):a.removeChild(u)):Al.removeChild(u.stateNode));break;case 18:null!==Al&&(Bl?(a=Al,u=u.stateNode,8===a.nodeType?Kf(a.parentNode,u):1===a.nodeType&&Kf(a,u),bd(a)):Kf(Al,u.stateNode));break;case 4:o=Al;s=Bl;Al=u.stateNode.containerInfo;Bl=!0;Zj(a,i,u);Al=o;Bl=s;break;case 0:case 11:case 14:case 15:if(!Ul&&(o=u.updateQueue,null!==o&&(o=o.lastEffect,null!==o))){s=o=o.next;do{var w=s,x=w.destroy;w=w.tag;void 0!==x&&(0!==(2&w)||0!==(4&w))&&Nj(u,i,x);s=s.next}while(s!==o)}Zj(a,i,u);break;case 1:if(!Ul&&(Mj(u,i),o=u.stateNode,\"function\"===typeof o.componentWillUnmount))try{o.props=u.memoizedProps,o.state=u.memoizedState,o.componentWillUnmount()}catch(a){W(u,i,a)}Zj(a,i,u);break;case 21:Zj(a,i,u);break;case 22:1&u.mode?(Ul=(o=Ul)||null!==u.memoizedState,Zj(a,i,u),Ul=o):Zj(a,i,u);break;default:Zj(a,i,u)}}function bk(a){var i=a.updateQueue;if(null!==i){a.updateQueue=null;var u=a.stateNode;null===u&&(u=a.stateNode=new Vl);i.forEach((function(i){var o=ck.bind(null,a,i);u.has(i)||(u.add(i),i.then(o,o))}))}}function dk(a,i){var u=i.deletions;if(null!==u)for(var o=0;o<u.length;o++){var s=u[o];try{var w=a,x=i,C=x;e:for(;null!==C;){switch(C.tag){case 5:Al=C.stateNode;Bl=!1;break e;case 3:Al=C.stateNode.containerInfo;Bl=!0;break e;case 4:Al=C.stateNode.containerInfo;Bl=!0;break e}C=C.return}if(null===Al)throw Error(p(160));ak(w,x,s);Al=null;Bl=!1;var z=s.alternate;null!==z&&(z.return=null);s.return=null}catch(a){W(s,i,a)}}if(12854&i.subtreeFlags)for(i=i.child;null!==i;)ek(i,a),i=i.sibling}function ek(a,i){var u=a.alternate,o=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(i,a);fk(a);if(4&o){try{Qj(3,a,a.return),Rj(3,a)}catch(i){W(a,a.return,i)}try{Qj(5,a,a.return)}catch(i){W(a,a.return,i)}}break;case 1:dk(i,a);fk(a);512&o&&null!==u&&Mj(u,u.return);break;case 5:dk(i,a);fk(a);512&o&&null!==u&&Mj(u,u.return);if(32&a.flags){var s=a.stateNode;try{ob(s,\"\")}catch(i){W(a,a.return,i)}}if(4&o&&(s=a.stateNode,null!=s)){var w=a.memoizedProps,x=null!==u?u.memoizedProps:w,C=a.type,z=a.updateQueue;a.updateQueue=null;if(null!==z)try{\"input\"===C&&\"radio\"===w.type&&null!=w.name&&ab(s,w);vb(C,x);var N=vb(C,w);for(x=0;x<z.length;x+=2){var _=z[x],j=z[x+1];\"style\"===_?sb(s,j):\"dangerouslySetInnerHTML\"===_?pe(s,j):\"children\"===_?ob(s,j):ta(s,_,j,N)}switch(C){case\"input\":bb(s,w);break;case\"textarea\":ib(s,w);break;case\"select\":var P=s._wrapperState.wasMultiple;s._wrapperState.wasMultiple=!!w.multiple;var T=w.value;null!=T?fb(s,!!w.multiple,T,!1):P!==!!w.multiple&&(null!=w.defaultValue?fb(s,!!w.multiple,w.defaultValue,!0):fb(s,!!w.multiple,w.multiple?[]:\"\",!1))}s[sr]=w}catch(i){W(a,a.return,i)}}break;case 6:dk(i,a);fk(a);if(4&o){if(null===a.stateNode)throw Error(p(162));s=a.stateNode;w=a.memoizedProps;try{s.nodeValue=w}catch(i){W(a,a.return,i)}}break;case 3:dk(i,a);fk(a);if(4&o&&null!==u&&u.memoizedState.isDehydrated)try{bd(i.containerInfo)}catch(i){W(a,a.return,i)}break;case 4:dk(i,a);fk(a);break;case 13:dk(i,a);fk(a);s=a.child;8192&s.flags&&(w=null!==s.memoizedState,s.stateNode.isHidden=w,!w||null!==s.alternate&&null!==s.alternate.memoizedState||(ga=tn()));4&o&&bk(a);break;case 22:_=null!==u&&null!==u.memoizedState;1&a.mode?(Ul=(N=Ul)||_,dk(i,a),Ul=N):dk(i,a);fk(a);if(8192&o){N=null!==a.memoizedState;if((a.stateNode.isHidden=N)&&!_&&0!==(1&a.mode))for(Wl=a,_=a.child;null!==_;){for(j=Wl=_;null!==Wl;){P=Wl;T=P.child;switch(P.tag){case 0:case 11:case 14:case 15:Qj(4,P,P.return);break;case 1:Mj(P,P.return);var M=P.stateNode;if(\"function\"===typeof M.componentWillUnmount){o=P;u=P.return;try{i=o,M.props=i.memoizedProps,M.state=i.memoizedState,M.componentWillUnmount()}catch(a){W(o,u,a)}}break;case 5:Mj(P,P.return);break;case 22:if(null!==P.memoizedState){hk(j);continue}}null!==T?(T.return=P,Wl=T):hk(j)}_=_.sibling}e:for(_=null,j=a;;){if(5===j.tag){if(null===_){_=j;try{s=j.stateNode,N?(w=s.style,\"function\"===typeof w.setProperty?w.setProperty(\"display\",\"none\",\"important\"):w.display=\"none\"):(C=j.stateNode,z=j.memoizedProps.style,x=void 0!==z&&null!==z&&z.hasOwnProperty(\"display\")?z.display:null,C.style.display=rb(\"display\",x))}catch(i){W(a,a.return,i)}}}else if(6===j.tag){if(null===_)try{j.stateNode.nodeValue=N?\"\":j.memoizedProps}catch(i){W(a,a.return,i)}}else if((22!==j.tag&&23!==j.tag||null===j.memoizedState||j===a)&&null!==j.child){j.child.return=j;j=j.child;continue}if(j===a)break e;for(;null===j.sibling;){if(null===j.return||j.return===a)break e;_===j&&(_=null);j=j.return}_===j&&(_=null);j.sibling.return=j.return;j=j.sibling}}break;case 19:dk(i,a);fk(a);4&o&&bk(a);break;case 21:break;default:dk(i,a),fk(a)}}function fk(a){var i=a.flags;if(2&i){try{e:{for(var u=a.return;null!==u;){if(Uj(u)){var o=u;break e}u=u.return}throw Error(p(160))}switch(o.tag){case 5:var s=o.stateNode;32&o.flags&&(ob(s,\"\"),o.flags&=-33);var w=Vj(a);Xj(a,w,s);break;case 3:case 4:var x=o.stateNode.containerInfo,C=Vj(a);Wj(a,C,x);break;default:throw Error(p(161))}}catch(i){W(a,a.return,i)}a.flags&=-3}4096&i&&(a.flags&=-4097)}function ik(a,i,u){Wl=a;jk(a,i,u)}function jk(a,i,u){for(var o=0!==(1&a.mode);null!==Wl;){var s=Wl,w=s.child;if(22===s.tag&&o){var x=null!==s.memoizedState||Il;if(!x){var C=s.alternate,z=null!==C&&null!==C.memoizedState||Ul;C=Il;var N=Ul;Il=x;if((Ul=z)&&!N)for(Wl=s;null!==Wl;)x=Wl,z=x.child,22===x.tag&&null!==x.memoizedState?kk(s):null!==z?(z.return=x,Wl=z):kk(s);for(;null!==w;)Wl=w,jk(w,i,u),w=w.sibling;Wl=s;Il=C;Ul=N}lk(a,i,u)}else 0!==(8772&s.subtreeFlags)&&null!==w?(w.return=s,Wl=w):lk(a,i,u)}}function lk(a){for(;null!==Wl;){var i=Wl;if(0!==(8772&i.flags)){var u=i.alternate;try{if(0!==(8772&i.flags))switch(i.tag){case 0:case 11:case 15:Ul||Rj(5,i);break;case 1:var o=i.stateNode;if(4&i.flags&&!Ul)if(null===u)o.componentDidMount();else{var s=i.elementType===i.type?u.memoizedProps:Lg(i.type,u.memoizedProps);o.componentDidUpdate(s,u.memoizedState,o.__reactInternalSnapshotBeforeUpdate)}var w=i.updateQueue;null!==w&&ih(i,w,o);break;case 3:var x=i.updateQueue;if(null!==x){u=null;if(null!==i.child)switch(i.child.tag){case 5:u=i.child.stateNode;break;case 1:u=i.child.stateNode}ih(i,x,u)}break;case 5:var C=i.stateNode;if(null===u&&4&i.flags){u=C;var z=i.memoizedProps;switch(i.type){case\"button\":case\"input\":case\"select\":case\"textarea\":z.autoFocus&&u.focus();break;case\"img\":z.src&&(u.src=z.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===i.memoizedState){var N=i.alternate;if(null!==N){var _=N.memoizedState;if(null!==_){var j=_.dehydrated;null!==j&&bd(j)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(p(163))}Ul||512&i.flags&&Sj(i)}catch(a){W(i,i.return,a)}}if(i===a){Wl=null;break}u=i.sibling;if(null!==u){u.return=i.return;Wl=u;break}Wl=i.return}}function hk(a){for(;null!==Wl;){var i=Wl;if(i===a){Wl=null;break}var u=i.sibling;if(null!==u){u.return=i.return;Wl=u;break}Wl=i.return}}function kk(a){for(;null!==Wl;){var i=Wl;try{switch(i.tag){case 0:case 11:case 15:var u=i.return;try{Rj(4,i)}catch(a){W(i,u,a)}break;case 1:var o=i.stateNode;if(\"function\"===typeof o.componentDidMount){var s=i.return;try{o.componentDidMount()}catch(a){W(i,s,a)}}var w=i.return;try{Sj(i)}catch(a){W(i,w,a)}break;case 5:var x=i.return;try{Sj(i)}catch(a){W(i,x,a)}}}catch(a){W(i,i.return,a)}if(i===a){Wl=null;break}var C=i.sibling;if(null!==C){C.return=i.return;Wl=C;break}Wl=i.return}}var Hl=Math.ceil,$l=R.ReactCurrentDispatcher,Kl=R.ReactCurrentOwner,Yl=R.ReactCurrentBatchConfig,Zl=0,Gl=null,Xl=null,Jl=0,ea=0,na=Uf(0),ra=0,la=null,aa=0,ia=0,ua=0,ca=null,da=null,ga=0,ma=Infinity,va=null,ba=!1,ya=null,ka=null,wa=!1,Ea=null,xa=0,Ca=0,za=null,Na=-1,La=0;function L(){return 0!==(6&Zl)?tn():-1!==Na?Na:Na=tn()}function lh(a){if(0===(1&a.mode))return 1;if(0!==(2&Zl)&&0!==Jl)return Jl&-Jl;if(null!==Rr.transition)return 0===La&&(La=yc()),La;a=vn;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,i,u,o){if(50<Ca)throw Ca=0,za=null,Error(p(185));Ac(a,u,o);0!==(2&Zl)&&a===Gl||(a===Gl&&(0===(2&Zl)&&(ia|=u),4===ra&&Dk(a,Jl)),Ek(a,o),1===u&&0===Zl&&0===(1&i.mode)&&(ma=tn()+500,wr&&jg()))}function Ek(a,i){var u=a.callbackNode;wc(a,i);var o=uc(a,a===Gl?Jl:0);if(0===o)null!==u&&Xe(u),a.callbackNode=null,a.callbackPriority=0;else if(i=o&-o,a.callbackPriority!==i){null!=u&&Xe(u);if(1===i)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),ir((function(){0===(6&Zl)&&jg()})),u=null;else{switch(Dc(o)){case 1:u=ln;break;case 4:u=an;break;case 16:u=un;break;case 536870912:u=sn;break;default:u=un}u=Gk(u,Hk.bind(null,a))}a.callbackPriority=i;a.callbackNode=u}}function Hk(a,i){Na=-1;La=0;if(0!==(6&Zl))throw Error(p(327));var u=a.callbackNode;if(Ik()&&a.callbackNode!==u)return null;var o=uc(a,a===Gl?Jl:0);if(0===o)return null;if(0!==(30&o)||0!==(o&a.expiredLanes)||i)i=Jk(a,o);else{i=o;var s=Zl;Zl|=2;var w=Kk();Gl===a&&Jl===i||(va=null,ma=tn()+500,Lk(a,i));do{try{Mk();break}catch(i){Nk(a,i)}}while(1);Qg();$l.current=w;Zl=s;null!==Xl?i=0:(Gl=null,Jl=0,i=ra)}if(0!==i){2===i&&(s=xc(a),0!==s&&(o=s,i=Ok(a,s)));if(1===i)throw u=la,Lk(a,0),Dk(a,o),Ek(a,tn()),u;if(6===i)Dk(a,o);else{s=a.current.alternate;if(0===(30&o)&&!Pk(s)&&(i=Jk(a,o),2===i&&(w=xc(a),0!==w&&(o=w,i=Ok(a,w))),1===i))throw u=la,Lk(a,0),Dk(a,o),Ek(a,tn()),u;a.finishedWork=s;a.finishedLanes=o;switch(i){case 0:case 1:throw Error(p(345));case 2:Qk(a,da,va);break;case 3:Dk(a,o);if((130023424&o)===o&&(i=ga+500-tn(),10<i)){if(0!==uc(a,0))break;s=a.suspendedLanes;if((s&o)!==o){L();a.pingedLanes|=a.suspendedLanes&s;break}a.timeoutHandle=rr(Qk.bind(null,a,da,va),i);break}Qk(a,da,va);break;case 4:Dk(a,o);if((4194240&o)===o)break;i=a.eventTimes;for(s=-1;0<o;){var x=31-dn(o);w=1<<x;x=i[x];x>s&&(s=x);o&=~w}o=s;o=tn()-o;o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Hl(o/1960))-o;if(10<o){a.timeoutHandle=rr(Qk.bind(null,a,da,va),o);break}Qk(a,da,va);break;case 5:Qk(a,da,va);break;default:throw Error(p(329))}}}Ek(a,tn());return a.callbackNode===u?Hk.bind(null,a):null}function Ok(a,i){var u=ca;a.current.memoizedState.isDehydrated&&(Lk(a,i).flags|=256);a=Jk(a,i);2!==a&&(i=da,da=u,null!==i&&Gj(i));return a}function Gj(a){null===da?da=a:da.push.apply(da,a)}function Pk(a){for(var i=a;;){if(16384&i.flags){var u=i.updateQueue;if(null!==u&&(u=u.stores,null!==u))for(var o=0;o<u.length;o++){var s=u[o],w=s.getSnapshot;s=s.value;try{if(!Pt(w(),s))return!1}catch(a){return!1}}}u=i.child;if(16384&i.subtreeFlags&&null!==u)u.return=i,i=u;else{if(i===a)break;for(;null===i.sibling;){if(null===i.return||i.return===a)return!0;i=i.return}i.sibling.return=i.return;i=i.sibling}}return!0}function Dk(a,i){i&=~ua;i&=~ia;a.suspendedLanes|=i;a.pingedLanes&=~i;for(a=a.expirationTimes;0<i;){var u=31-dn(i),o=1<<u;a[u]=-1;i&=~o}}function Fk(a){if(0!==(6&Zl))throw Error(p(327));Ik();var i=uc(a,0);if(0===(1&i))return Ek(a,tn()),null;var u=Jk(a,i);if(0!==a.tag&&2===u){var o=xc(a);0!==o&&(i=o,u=Ok(a,o))}if(1===u)throw u=la,Lk(a,0),Dk(a,i),Ek(a,tn()),u;if(6===u)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=i;Qk(a,da,va);Ek(a,tn());return null}function Rk(a,i){var u=Zl;Zl|=1;try{return a(i)}finally{Zl=u,0===Zl&&(ma=tn()+500,wr&&jg())}}function Sk(a){null!==Ea&&0===Ea.tag&&0===(6&Zl)&&Ik();var i=Zl;Zl|=1;var u=Yl.transition,o=vn;try{if(Yl.transition=null,vn=1,a)return a()}finally{vn=o,Yl.transition=u,Zl=i,0===(6&Zl)&&jg()}}function Ij(){ea=na.current;E(na)}function Lk(a,i){a.finishedWork=null;a.finishedLanes=0;var u=a.timeoutHandle;-1!==u&&(a.timeoutHandle=-1,lr(u));if(null!==Xl)for(u=Xl.return;null!==u;){var o=u;wg(o);switch(o.tag){case 1:o=o.type.childContextTypes;null!==o&&void 0!==o&&$f();break;case 3:Jh();E(br);E(vr);Oh();break;case 5:Lh(o);break;case 4:Jh();break;case 13:E(qr);break;case 19:E(qr);break;case 10:Rg(o.type._context);break;case 22:case 23:Ij()}u=u.return}Gl=a;Xl=a=wh(a.current,null);Jl=ea=i;ra=0;la=null;ua=ia=aa=0;da=ca=null;if(null!==Wr){for(i=0;i<Wr.length;i++)if(u=Wr[i],o=u.interleaved,null!==o){u.interleaved=null;var s=o.next,w=u.pending;if(null!==w){var x=w.next;w.next=s;o.next=x}u.pending=o}Wr=null}return a}function Nk(a,i){do{var u=Xl;try{Qg();Jr.current=Cl;if(wl){for(var o=ul.memoizedState;null!==o;){var s=o.queue;null!==s&&(s.pending=null);o=o.next}wl=!1}ll=0;yl=vl=ul=null;Sl=!1;El=0;Kl.current=null;if(null===u||null===u.return){ra=1;la=i;Xl=null;break}e:{var w=a,x=u.return,C=u,z=i;i=Jl;C.flags|=32768;if(null!==z&&\"object\"===typeof z&&\"function\"===typeof z.then){var N=z,_=C,j=_.tag;if(0===(1&_.mode)&&(0===j||11===j||15===j)){var P=_.alternate;P?(_.updateQueue=P.updateQueue,_.memoizedState=P.memoizedState,_.lanes=P.lanes):(_.updateQueue=null,_.memoizedState=null)}var T=Vi(x);if(null!==T){T.flags&=-257;Wi(T,x,C,w,i);1&T.mode&&Ti(w,N,i);i=T;z=N;var M=i.updateQueue;if(null===M){var F=new Set;F.add(z);i.updateQueue=F}else M.add(z);break e}if(0===(1&i)){Ti(w,N,i);uj();break e}z=Error(p(426))}else if(Mr&&1&C.mode){var R=Vi(x);if(null!==R){0===(65536&R.flags)&&(R.flags|=256);Wi(R,x,C,w,i);Jg(Ki(z,C));break e}}w=z=Ki(z,C);4!==ra&&(ra=2);null===ca?ca=[w]:ca.push(w);w=x;do{switch(w.tag){case 3:w.flags|=65536;i&=-i;w.lanes|=i;var O=Oi(w,z,i);fh(w,O);break e;case 1:C=z;var I=w.type,U=w.stateNode;if(0===(128&w.flags)&&(\"function\"===typeof I.getDerivedStateFromError||null!==U&&\"function\"===typeof U.componentDidCatch&&(null===ka||!ka.has(U)))){w.flags|=65536;i&=-i;w.lanes|=i;var V=Ri(w,C,i);fh(w,V);break e}}w=w.return}while(null!==w)}Tk(u)}catch(a){i=a;Xl===u&&null!==u&&(Xl=u=u.return);continue}break}while(1)}function Kk(){var a=$l.current;$l.current=Cl;return null===a?Cl:a}function uj(){0!==ra&&3!==ra&&2!==ra||(ra=4);null===Gl||0===(268435455&aa)&&0===(268435455&ia)||Dk(Gl,Jl)}function Jk(a,i){var u=Zl;Zl|=2;var o=Kk();Gl===a&&Jl===i||(va=null,Lk(a,i));do{try{Uk();break}catch(i){Nk(a,i)}}while(1);Qg();Zl=u;$l.current=o;if(null!==Xl)throw Error(p(261));Gl=null;Jl=0;return ra}function Uk(){for(;null!==Xl;)Vk(Xl)}function Mk(){for(;null!==Xl&&!en();)Vk(Xl)}function Vk(a){var i=_a(a.alternate,a,ea);a.memoizedProps=a.pendingProps;null===i?Tk(a):Xl=i;Kl.current=null}function Tk(a){var i=a;do{var u=i.alternate;a=i.return;if(0===(32768&i.flags)){if(u=Fj(u,i,ea),null!==u){Xl=u;return}}else{u=Jj(u,i);if(null!==u){u.flags&=32767;Xl=u;return}if(null===a){ra=6;Xl=null;return}a.flags|=32768,a.subtreeFlags=0,a.deletions=null}i=i.sibling;if(null!==i){Xl=i;return}Xl=i=a}while(null!==i);0===ra&&(ra=5)}function Qk(a,i,u){var o=vn,s=Yl.transition;try{Yl.transition=null,vn=1,Xk(a,i,u,o)}finally{Yl.transition=s,vn=o}return null}function Xk(a,i,u,o){do{Ik()}while(null!==Ea);if(0!==(6&Zl))throw Error(p(327));u=a.finishedWork;var s=a.finishedLanes;if(null===u)return null;a.finishedWork=null;a.finishedLanes=0;if(u===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var w=u.lanes|u.childLanes;Bc(a,w);a===Gl&&(Xl=Gl=null,Jl=0);0===(2064&u.subtreeFlags)&&0===(2064&u.flags)||wa||(wa=!0,Gk(un,(function(){Ik();return null})));w=0!==(15990&u.flags);if(0!==(15990&u.subtreeFlags)||w){w=Yl.transition;Yl.transition=null;var x=vn;vn=1;var C=Zl;Zl|=4;Kl.current=null;Pj(a,u);ek(u,a);Oe(tr);Dn=!!nr;tr=nr=null;a.current=u;ik(u,a,s);nn();Zl=C;vn=x;Yl.transition=w}else a.current=u;wa&&(wa=!1,Ea=a,xa=s);w=a.pendingLanes;0===w&&(ka=null);mc(u.stateNode,o);Ek(a,tn());if(null!==i)for(o=a.onRecoverableError,u=0;u<i.length;u++)s=i[u],o(s.value,{componentStack:s.stack,digest:s.digest});if(ba)throw ba=!1,a=ya,ya=null,a;0!==(1&xa)&&0!==a.tag&&Ik();w=a.pendingLanes;0!==(1&w)?a===za?Ca++:(Ca=0,za=a):Ca=0;jg();return null}function Ik(){if(null!==Ea){var a=Dc(xa),i=Yl.transition,u=vn;try{Yl.transition=null;vn=16>a?16:a;if(null===Ea)var o=!1;else{a=Ea;Ea=null;xa=0;if(0!==(6&Zl))throw Error(p(331));var s=Zl;Zl|=4;for(Wl=a.current;null!==Wl;){var w=Wl,x=w.child;if(0!==(16&Wl.flags)){var C=w.deletions;if(null!==C){for(var z=0;z<C.length;z++){var N=C[z];for(Wl=N;null!==Wl;){var _=Wl;switch(_.tag){case 0:case 11:case 15:Qj(8,_,w)}var j=_.child;if(null!==j)j.return=_,Wl=j;else for(;null!==Wl;){_=Wl;var P=_.sibling,T=_.return;Tj(_);if(_===N){Wl=null;break}if(null!==P){P.return=T;Wl=P;break}Wl=T}}}var M=w.alternate;if(null!==M){var F=M.child;if(null!==F){M.child=null;do{var R=F.sibling;F.sibling=null;F=R}while(null!==F)}}Wl=w}}if(0!==(2064&w.subtreeFlags)&&null!==x)x.return=w,Wl=x;else e:for(;null!==Wl;){w=Wl;if(0!==(2048&w.flags))switch(w.tag){case 0:case 11:case 15:Qj(9,w,w.return)}var O=w.sibling;if(null!==O){O.return=w.return;Wl=O;break e}Wl=w.return}}var I=a.current;for(Wl=I;null!==Wl;){x=Wl;var U=x.child;if(0!==(2064&x.subtreeFlags)&&null!==U)U.return=x,Wl=U;else e:for(x=I;null!==Wl;){C=Wl;if(0!==(2048&C.flags))try{switch(C.tag){case 0:case 11:case 15:Rj(9,C)}}catch(a){W(C,C.return,a)}if(C===x){Wl=null;break e}var V=C.sibling;if(null!==V){V.return=C.return;Wl=V;break e}Wl=C.return}}Zl=s;jg();if(fn&&\"function\"===typeof fn.onPostCommitFiberRoot)try{fn.onPostCommitFiberRoot(cn,a)}catch(a){}o=!0}return o}finally{vn=u,Yl.transition=i}}return!1}function Yk(a,i,u){i=Ki(u,i);i=Oi(a,i,1);a=dh(a,i,1);i=L();null!==a&&(Ac(a,1,i),Ek(a,i))}function W(a,i,u){if(3===a.tag)Yk(a,a,u);else for(;null!==i;){if(3===i.tag){Yk(i,a,u);break}if(1===i.tag){var o=i.stateNode;if(\"function\"===typeof i.type.getDerivedStateFromError||\"function\"===typeof o.componentDidCatch&&(null===ka||!ka.has(o))){a=Ki(u,a);a=Ri(i,a,1);i=dh(i,a,1);a=L();null!==i&&(Ac(i,1,a),Ek(i,a));break}}i=i.return}}function Ui(a,i,u){var o=a.pingCache;null!==o&&o.delete(i);i=L();a.pingedLanes|=a.suspendedLanes&u;Gl===a&&(Jl&u)===u&&(4===ra||3===ra&&(130023424&Jl)===Jl&&500>tn()-ga?Lk(a,0):ua|=u);Ek(a,i)}function Zk(a,i){0===i&&(0===(1&a.mode)?i=1:(i=mn,mn<<=1,0===(130023424&mn)&&(mn=4194304)));var u=L();a=Zg(a,i);null!==a&&(Ac(a,i,u),Ek(a,u))}function vj(a){var i=a.memoizedState,u=0;null!==i&&(u=i.retryLane);Zk(a,u)}function ck(a,i){var u=0;switch(a.tag){case 13:var o=a.stateNode;var s=a.memoizedState;null!==s&&(u=s.retryLane);break;case 19:o=a.stateNode;break;default:throw Error(p(314))}null!==o&&o.delete(i);Zk(a,u)}var _a;_a=function(a,i,u){if(null!==a)if(a.memoizedProps!==i.pendingProps||br.current)Tl=!0;else{if(0===(a.lanes&u)&&0===(128&i.flags))return Tl=!1,zj(a,i,u);Tl=0!==(131072&a.flags)}else Tl=!1,Mr&&0!==(1048576&i.flags)&&ug(i,zr,i.index);i.lanes=0;switch(i.tag){case 2:var o=i.type;jj(a,i);a=i.pendingProps;var s=Yf(i,vr.current);Tg(i,u);s=Xh(null,i,o,a,s,u);var w=bi();i.flags|=1;\"object\"===typeof s&&null!==s&&\"function\"===typeof s.render&&void 0===s.$$typeof?(i.tag=1,i.memoizedState=null,i.updateQueue=null,Zf(o)?(w=!0,cg(i)):w=!1,i.memoizedState=null!==s.state&&void 0!==s.state?s.state:null,ah(i),s.updater=Br,i.stateNode=s,s._reactInternals=i,rh(i,o,a,u),i=kj(null,i,o,!0,w,u)):(i.tag=0,Mr&&w&&vg(i),Yi(null,i,s,u),i=i.child);return i;case 16:o=i.elementType;e:{jj(a,i);a=i.pendingProps;s=o._init;o=s(o._payload);i.type=o;s=i.tag=$k(o);a=Lg(o,a);switch(s){case 0:i=dj(null,i,o,a,u);break e;case 1:i=ij(null,i,o,a,u);break e;case 11:i=Zi(null,i,o,a,u);break e;case 14:i=aj(null,i,o,Lg(o.type,a),u);break e}throw Error(p(306,o,\"\"))}return i;case 0:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),dj(a,i,o,s,u);case 1:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),ij(a,i,o,s,u);case 3:e:{lj(i);if(null===a)throw Error(p(387));o=i.pendingProps;w=i.memoizedState;s=w.element;bh(a,i);gh(i,o,null,u);var x=i.memoizedState;o=x.element;if(w.isDehydrated){if(w={element:o,isDehydrated:!1,cache:x.cache,pendingSuspenseBoundaries:x.pendingSuspenseBoundaries,transitions:x.transitions},i.updateQueue.baseState=w,i.memoizedState=w,256&i.flags){s=Ki(Error(p(423)),i);i=mj(a,i,o,u,s);break e}if(o!==s){s=Ki(Error(p(424)),i);i=mj(a,i,o,u,s);break e}for(Dr=Lf(i.stateNode.containerInfo.firstChild),Tr=i,Mr=!0,Fr=null,u=$r(i,null,o,u),i.child=u;u;)u.flags=-3&u.flags|4096,u=u.sibling}else{Ig();if(o===s){i=$i(a,i,u);break e}Yi(a,i,o,u)}i=i.child}return i;case 5:return Kh(i),null===a&&Eg(i),o=i.type,s=i.pendingProps,w=null!==a?a.memoizedProps:null,x=s.children,Ef(o,s)?x=null:null!==w&&Ef(o,w)&&(i.flags|=32),hj(a,i),Yi(a,i,x,u),i.child;case 6:return null===a&&Eg(i),null;case 13:return pj(a,i,u);case 4:return Ih(i,i.stateNode.containerInfo),o=i.pendingProps,null===a?i.child=Hr(i,null,o,u):Yi(a,i,o,u),i.child;case 11:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),Zi(a,i,o,s,u);case 7:return Yi(a,i,i.pendingProps,u),i.child;case 8:return Yi(a,i,i.pendingProps.children,u),i.child;case 12:return Yi(a,i,i.pendingProps.children,u),i.child;case 10:e:{o=i.type._context;s=i.pendingProps;w=i.memoizedProps;x=s.value;G(Or,o._currentValue);o._currentValue=x;if(null!==w)if(Pt(w.value,x)){if(w.children===s.children&&!br.current){i=$i(a,i,u);break e}}else for(w=i.child,null!==w&&(w.return=i);null!==w;){var C=w.dependencies;if(null!==C){x=w.child;for(var z=C.firstContext;null!==z;){if(z.context===o){if(1===w.tag){z=ch(-1,u&-u);z.tag=2;var N=w.updateQueue;if(null!==N){N=N.shared;var _=N.pending;null===_?z.next=z:(z.next=_.next,_.next=z);N.pending=z}}w.lanes|=u;z=w.alternate;null!==z&&(z.lanes|=u);Sg(w.return,u,i);C.lanes|=u;break}z=z.next}}else if(10===w.tag)x=w.type===i.type?null:w.child;else if(18===w.tag){x=w.return;if(null===x)throw Error(p(341));x.lanes|=u;C=x.alternate;null!==C&&(C.lanes|=u);Sg(x,u,i);x=w.sibling}else x=w.child;if(null!==x)x.return=w;else for(x=w;null!==x;){if(x===i){x=null;break}w=x.sibling;if(null!==w){w.return=x.return;x=w;break}x=x.return}w=x}Yi(a,i,s.children,u);i=i.child}return i;case 9:return s=i.type,o=i.pendingProps.children,Tg(i,u),s=Vg(s),o=o(s),i.flags|=1,Yi(a,i,o,u),i.child;case 14:return o=i.type,s=Lg(o,i.pendingProps),s=Lg(o.type,s),aj(a,i,o,s,u);case 15:return cj(a,i,i.type,i.pendingProps,u);case 17:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),jj(a,i),i.tag=1,Zf(o)?(a=!0,cg(i)):a=!1,Tg(i,u),ph(i,o,s),rh(i,o,s,u),kj(null,i,o,!0,a,u);case 19:return yj(a,i,u);case 22:return ej(a,i,u)}throw Error(p(156,i.tag))};function Gk(a,i){return qe(a,i)}function al(a,i,u,o){this.tag=a;this.key=u;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=i;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=o;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,i,u,o){return new al(a,i,u,o)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}function $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===$)return 11;if(a===Z)return 14}return 2}function wh(a,i){var u=a.alternate;null===u?(u=Bg(a.tag,i,a.key,a.mode),u.elementType=a.elementType,u.type=a.type,u.stateNode=a.stateNode,u.alternate=a,a.alternate=u):(u.pendingProps=i,u.type=a.type,u.flags=0,u.subtreeFlags=0,u.deletions=null);u.flags=14680064&a.flags;u.childLanes=a.childLanes;u.lanes=a.lanes;u.child=a.child;u.memoizedProps=a.memoizedProps;u.memoizedState=a.memoizedState;u.updateQueue=a.updateQueue;i=a.dependencies;u.dependencies=null===i?null:{lanes:i.lanes,firstContext:i.firstContext};u.sibling=a.sibling;u.index=a.index;u.ref=a.ref;return u}function yh(a,i,u,o,s,w){var x=2;o=a;if(\"function\"===typeof a)bj(a)&&(x=1);else if(\"string\"===typeof a)x=5;else e:switch(a){case U:return Ah(u.children,s,w,i);case V:x=8;s|=8;break;case A:return a=Bg(12,u,i,2|s),a.elementType=A,a.lanes=w,a;case K:return a=Bg(13,u,i,s),a.elementType=K,a.lanes=w,a;case Y:return a=Bg(19,u,i,s),a.elementType=Y,a.lanes=w,a;case ee:return qj(u,s,w,i);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case B:x=10;break e;case H:x=9;break e;case $:x=11;break e;case Z:x=14;break e;case X:x=16;o=null;break e}throw Error(p(130,null==a?a:typeof a,\"\"))}i=Bg(x,u,i,s);i.elementType=a;i.type=o;i.lanes=w;return i}function Ah(a,i,u,o){a=Bg(7,a,o,i);a.lanes=u;return a}function qj(a,i,u,o){a=Bg(22,a,o,i);a.elementType=ee;a.lanes=u;a.stateNode={isHidden:!1};return a}function xh(a,i,u){a=Bg(6,a,null,i);a.lanes=u;return a}function zh(a,i,u){i=Bg(4,null!==a.children?a.children:[],a.key,i);i.lanes=u;i.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return i}function bl(a,i,u,o,s){this.tag=i;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=o;this.onRecoverableError=s;this.mutableSourceEagerHydrationData=null}function cl(a,i,u,o,s,w,x,C,z){a=new bl(a,i,u,C,z);1===i?(i=1,!0===w&&(i|=8)):i=0;w=Bg(3,null,null,i);a.current=w;w.stateNode=a;w.memoizedState={element:o,isDehydrated:u,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(w);return a}function dl(a,i,u){var o=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:I,key:null==o?null:\"\"+o,children:a,containerInfo:i,implementation:u}}function el(a){if(!a)return mr;a=a._reactInternals;e:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var i=a;do{switch(i.tag){case 3:i=i.stateNode.context;break e;case 1:if(Zf(i.type)){i=i.stateNode.__reactInternalMemoizedMergedChildContext;break e}}i=i.return}while(null!==i);throw Error(p(171))}if(1===a.tag){var u=a.type;if(Zf(u))return bg(a,u,i)}return i}function fl(a,i,u,o,s,w,x,C,z){a=cl(u,o,!0,a,s,w,x,C,z);a.context=el(null);u=a.current;o=L();s=lh(u);w=ch(o,s);w.callback=void 0!==i&&null!==i?i:null;dh(u,w,s);a.current.lanes=s;Ac(a,s,o);Ek(a,o);return a}function gl(a,i,u,o){var s=i.current,w=L(),x=lh(s);u=el(u);null===i.context?i.context=u:i.pendingContext=u;i=ch(w,x);i.payload={element:a};o=void 0===o?null:o;null!==o&&(i.callback=o);a=dh(s,i,x);null!==a&&(mh(a,s,x,w),eh(a,s,x));return x}function hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,i){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var u=a.retryLane;a.retryLane=0!==u&&u<i?u:i}}function jl(a,i){il(a,i);(a=a.alternate)&&il(a,i)}function kl(){return null}var ja=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}nl.prototype.render=ml.prototype.render=function(a){var i=this._internalRoot;if(null===i)throw Error(p(409));gl(a,i,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var i=a.containerInfo;Sk((function(){gl(null,a,null,null)}));i[cr]=null}};function nl(a){this._internalRoot=a}nl.prototype.unstable_scheduleHydration=function(a){if(a){var i=wn();a={blockedOn:null,target:a,priority:i};for(var u=0;u<jn.length&&0!==i&&i<jn[u].priority;u++);jn.splice(u,0,a);0===u&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}function rl(a,i,u,o,s){if(s){if(\"function\"===typeof o){var w=o;o=function(){var a=hl(x);w.call(a)}}var x=fl(i,o,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=x;a[cr]=x.current;sf(8===a.nodeType?a.parentNode:a);Sk();return x}for(;s=a.lastChild;)a.removeChild(s);if(\"function\"===typeof o){var C=o;o=function(){var a=hl(z);C.call(a)}}var z=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=z;a[cr]=z.current;sf(8===a.nodeType?a.parentNode:a);Sk((function(){gl(i,z,u,o)}));return z}function sl(a,i,u,o,s){var w=u._reactRootContainer;if(w){var x=w;if(\"function\"===typeof s){var C=s;s=function(){var a=hl(x);C.call(a)}}gl(i,x,a,s)}else x=rl(u,i,a,s,o);return hl(x)}bn=function(a){switch(a.tag){case 3:var i=a.stateNode;if(i.current.memoizedState.isDehydrated){var u=tc(i.pendingLanes);0!==u&&(Cc(i,1|u),Ek(i,tn()),0===(6&Zl)&&(ma=tn()+500,jg()))}break;case 13:Sk((function(){var i=Zg(a,1);if(null!==i){var u=L();mh(i,a,1,u)}})),jl(a,1)}};yn=function(a){if(13===a.tag){var i=Zg(a,134217728);if(null!==i){var u=L();mh(i,a,134217728,u)}jl(a,134217728)}};kn=function(a){if(13===a.tag){var i=lh(a),u=Zg(a,i);if(null!==u){var o=L();mh(u,a,i,o)}jl(a,i)}};wn=function(){return vn};Sn=function(a,i){var u=vn;try{return vn=a,i()}finally{vn=u}};xe=function(a,i,u){switch(i){case\"input\":bb(a,u);i=u.name;if(\"radio\"===u.type&&null!=i){for(u=a;u.parentNode;)u=u.parentNode;u=u.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+i)+'][type=\"radio\"]');for(i=0;i<u.length;i++){var o=u[i];if(o!==a&&o.form===a.form){var s=Db(o);if(!s)throw Error(p(90));Wa(o);bb(o,s)}}}break;case\"textarea\":ib(a,u);break;case\"select\":i=u.value,null!=i&&fb(a,!!u.multiple,i,!1)}};Gb=Rk;Hb=Sk;var Da={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},Fa={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};var Ia={bundleType:Fa.bundleType,version:Fa.version,rendererPackageName:Fa.rendererPackageName,rendererConfig:Fa.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:R.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:Fa.findFiberByHostInstance||kl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var Aa=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Aa.isDisabled&&Aa.supportsFiber)try{cn=Aa.inject(Ia),fn=Aa}catch(a){}}s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Da;s.createPortal=function(a,i){var u=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(i))throw Error(p(200));return dl(a,i,null,u)};s.createRoot=function(a,i){if(!ol(a))throw Error(p(299));var u=!1,o=\"\",s=ja;null!==i&&void 0!==i&&(!0===i.unstable_strictMode&&(u=!0),void 0!==i.identifierPrefix&&(o=i.identifierPrefix),void 0!==i.onRecoverableError&&(s=i.onRecoverableError));i=cl(a,1,!1,null,null,u,!1,o,s);a[cr]=i.current;sf(8===a.nodeType?a.parentNode:a);return new ml(i)};s.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var i=a._reactInternals;if(void 0===i){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a))}a=Zb(i);a=null===a?null:a.stateNode;return a};s.flushSync=function(a){return Sk(a)};s.hydrate=function(a,i,u){if(!pl(i))throw Error(p(200));return sl(null,a,i,!0,u)};s.hydrateRoot=function(a,i,u){if(!ol(a))throw Error(p(405));var o=null!=u&&u.hydratedSources||null,s=!1,w=\"\",x=ja;null!==u&&void 0!==u&&(!0===u.unstable_strictMode&&(s=!0),void 0!==u.identifierPrefix&&(w=u.identifierPrefix),void 0!==u.onRecoverableError&&(x=u.onRecoverableError));i=fl(i,null,a,1,null!=u?u:null,s,!1,w,x);a[cr]=i.current;sf(a);if(o)for(a=0;a<o.length;a++)u=o[a],s=u._getVersion,s=s(u._source),null==i.mutableSourceEagerHydrationData?i.mutableSourceEagerHydrationData=[u,s]:i.mutableSourceEagerHydrationData.push(u,s);return new nl(i)};s.render=function(a,i,u){if(!pl(i))throw Error(p(200));return sl(null,a,i,!1,u)};s.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return!!a._reactRootContainer&&(Sk((function(){sl(null,null,a,!1,(function(){a._reactRootContainer=null;a[cr]=null}))})),!0)};s.unstable_batchedUpdates=Rk;s.unstable_renderSubtreeIntoContainer=function(a,i,u,o){if(!pl(u))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,i,u,!1,o)};s.version=\"18.2.0-next-9e3b772b8-20220608\";function checkDCE(){if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&\"function\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE)}catch(a){console.error(a)}}checkDCE();var Ba=s;var Ha=Ba;const $a=Ba.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Ga=Ba.createPortal,Ja=Ba.createRoot,ai=Ba.findDOMNode,Si=Ba.flushSync,Ni=Ba.hydrate,_i=Ba.hydrateRoot,Pi=Ba.render,Qi=Ba.unmountComponentAtNode,Xi=Ba.unstable_batchedUpdates,eu=Ba.unstable_renderSubtreeIntoContainer,nu=Ba.version;export{$a as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Ga as createPortal,Ja as createRoot,Ha as default,ai as findDOMNode,Si as flushSync,Ni as hydrate,_i as hydrateRoot,Pi as render,Qi as unmountComponentAtNode,Xi as unstable_batchedUpdates,eu as unstable_renderSubtreeIntoContainer,nu as version};\n\n//# sourceMappingURL=index.js.map", "var e={};function f(e,n){var t=e.length;e.push(n);e:for(;0<t;){var a=t-1>>>1,l=e[a];if(!(0<g(l,n)))break e;e[a]=n,e[t]=l,t=a}}function h(e){return 0===e.length?null:e[0]}function k(e){if(0===e.length)return null;var n=e[0],t=e.pop();if(t!==n){e[0]=t;e:for(var a=0,l=e.length,r=l>>>1;a<r;){var i=2*(a+1)-1,u=e[i],o=i+1,s=e[o];if(0>g(u,t))o<l&&0>g(s,u)?(e[a]=s,e[o]=t,a=o):(e[a]=u,e[i]=t,a=i);else{if(!(o<l&&0>g(s,t)))break e;e[a]=s,e[o]=t,a=o}}}return n}function g(e,n){var t=e.sortIndex-n.sortIndex;return 0!==t?t:e.id-n.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var n=performance;e.unstable_now=function(){return n.now()}}else{var t=Date,a=t.now();e.unstable_now=function(){return t.now()-a}}var l=[],r=[],i=1,u=null,o=3,s=!1,c=!1,b=!1,d=\"function\"===typeof setTimeout?setTimeout:null,_=\"function\"===typeof clearTimeout?clearTimeout:null,v=\"undefined\"!==typeof setImmediate?setImmediate:null;\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(e){for(var n=h(r);null!==n;){if(null===n.callback)k(r);else{if(!(n.startTime<=e))break;k(r),n.sortIndex=n.expirationTime,f(l,n)}n=h(r)}}function H(e){b=!1;G(e);if(!c)if(null!==h(l))c=!0,I(J);else{var n=h(r);null!==n&&K(H,n.startTime-e)}}function J(n,t){c=!1;b&&(b=!1,_(m),m=-1);s=!0;var a=o;try{G(t);for(u=h(l);null!==u&&(!(u.expirationTime>t)||n&&!M());){var i=u.callback;if(\"function\"===typeof i){u.callback=null;o=u.priorityLevel;var d=i(u.expirationTime<=t);t=e.unstable_now();\"function\"===typeof d?u.callback=d:u===h(l)&&k(l);G(t)}else k(l);u=h(l)}if(null!==u)var v=!0;else{var p=h(r);null!==p&&K(H,p.startTime-t);v=!1}return v}finally{u=null,o=a,s=!1}}var p=!1,y=null,m=-1,w=5,P=-1;function M(){return!(e.unstable_now()-P<w)}function R(){if(null!==y){var n=e.unstable_now();P=n;var t=!0;try{t=y(!0,n)}finally{t?x():(p=!1,y=null)}}else p=!1}var x;if(\"function\"===typeof v)x=function(){v(R)};else if(\"undefined\"!==typeof MessageChannel){var C=new MessageChannel,T=C.port2;C.port1.onmessage=R;x=function(){T.postMessage(null)}}else x=function(){d(R,0)};function I(e){y=e;p||(p=!0,x())}function K(n,t){m=d((function(){n(e.unstable_now())}),t)}e.unstable_IdlePriority=5;e.unstable_ImmediatePriority=1;e.unstable_LowPriority=4;e.unstable_NormalPriority=3;e.unstable_Profiling=null;e.unstable_UserBlockingPriority=2;e.unstable_cancelCallback=function(e){e.callback=null};e.unstable_continueExecution=function(){c||s||(c=!0,I(J))};e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):w=0<e?Math.floor(1e3/e):5};e.unstable_getCurrentPriorityLevel=function(){return o};e.unstable_getFirstCallbackNode=function(){return h(l)};e.unstable_next=function(e){switch(o){case 1:case 2:case 3:var n=3;break;default:n=o}var t=o;o=n;try{return e()}finally{o=t}};e.unstable_pauseExecution=function(){};e.unstable_requestPaint=function(){};e.unstable_runWithPriority=function(e,n){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var t=o;o=e;try{return n()}finally{o=t}};e.unstable_scheduleCallback=function(n,t,a){var u=e.unstable_now();\"object\"===typeof a&&null!==a?(a=a.delay,a=\"number\"===typeof a&&0<a?u+a:u):a=u;switch(n){case 1:var o=-1;break;case 2:o=250;break;case 5:o=1073741823;break;case 4:o=1e4;break;default:o=5e3}o=a+o;n={id:i++,callback:t,priorityLevel:n,startTime:a,expirationTime:o,sortIndex:-1};a>u?(n.sortIndex=a,f(r,n),null===h(l)&&n===h(r)&&(b?(_(m),m=-1):b=!0,K(H,a-u))):(n.sortIndex=o,f(l,n),c||s||(c=!0,I(J)));return n};e.unstable_shouldYield=M;e.unstable_wrapCallback=function(e){var n=o;return function(){var t=o;o=n;try{return e.apply(this,arguments)}finally{o=t}}};const L=e.unstable_now,F=e.unstable_IdlePriority,E=e.unstable_ImmediatePriority,N=e.unstable_LowPriority,j=e.unstable_NormalPriority,q=e.unstable_Profiling,B=e.unstable_UserBlockingPriority,U=e.unstable_cancelCallback,W=e.unstable_continueExecution,Y=e.unstable_forceFrameRate,D=e.unstable_getCurrentPriorityLevel,z=e.unstable_getFirstCallbackNode,A=e.unstable_next,O=e.unstable_pauseExecution,Q=e.unstable_requestPaint,S=e.unstable_runWithPriority,V=e.unstable_scheduleCallback,X=e.unstable_shouldYield,Z=e.unstable_wrapCallback;export{e as default,F as unstable_IdlePriority,E as unstable_ImmediatePriority,N as unstable_LowPriority,j as unstable_NormalPriority,q as unstable_Profiling,B as unstable_UserBlockingPriority,U as unstable_cancelCallback,W as unstable_continueExecution,Y as unstable_forceFrameRate,D as unstable_getCurrentPriorityLevel,z as unstable_getFirstCallbackNode,A as unstable_next,L as unstable_now,O as unstable_pauseExecution,Q as unstable_requestPaint,S as unstable_runWithPriority,V as unstable_scheduleCallback,X as unstable_shouldYield,Z as unstable_wrapCallback};\n\n//# sourceMappingURL=index.js.map", "import {\n  AcceleratedAnimation,\n  AnimatePresence,\n  DeprecatedLayoutGroupContext,\n  DragControls,\n  FlatTree,\n  LayoutGroup,\n  LazyMotion,\n  MotionConfig,\n  MotionConfigContext,\n  MotionContext,\n  MotionGlobalConfig,\n  MotionValue,\n  PresenceContext,\n  SwitchLayoutGroupContext,\n  VisualElement,\n  addPointerEvent,\n  addPointerInfo,\n  addScaleCorrector,\n  animate,\n  animateMini,\n  animateValue,\n  animateVisualElement,\n  animationControls,\n  animations,\n  anticipate,\n  backIn,\n  backInOut,\n  backOut,\n  buildTransform,\n  calcLength,\n  cancelFrame,\n  cancelSync,\n  circIn,\n  circInOut,\n  circOut,\n  clamp,\n  color,\n  complex,\n  createBox,\n  createRendererMotionComponent,\n  createScopedAnimate,\n  cubicBezier,\n  delay,\n  disableInstantTransitions,\n  distance,\n  distance2D,\n  domAnimation,\n  domMax,\n  domMin,\n  easeIn,\n  easeInOut,\n  easeOut,\n  filterProps,\n  findSpring,\n  frame,\n  frameData,\n  frameSteps,\n  inView,\n  inertia,\n  interpolate,\n  invariant,\n  isBrowser,\n  isDragActive,\n  isMotionComponent,\n  isMotionValue,\n  isValidMotionProp,\n  keyframes,\n  m,\n  makeUseVisualState,\n  mirrorEasing,\n  mix,\n  motion,\n  motionValue,\n  namespace_exports,\n  optimizedAppearDataAttribute,\n  pipe,\n  progress,\n  px,\n  resolveMotionValue,\n  reverseEasing,\n  scroll,\n  scrollInfo,\n  spring,\n  stagger,\n  startOptimizedAppearAnimation,\n  steps,\n  sync,\n  transform,\n  unwrapMotionComponent,\n  useAnimate,\n  useAnimateMini,\n  useAnimatedState,\n  useAnimation,\n  useAnimationControls,\n  useAnimationFrame,\n  useCycle,\n  useDomEvent,\n  useDragControls,\n  useElementScroll,\n  useForceUpdate,\n  useInView,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  useInvertedScale,\n  useIsPresent,\n  useIsomorphicLayoutEffect,\n  useMotionTemplate,\n  useMotionValue,\n  useMotionValueEvent,\n  usePresence,\n  useReducedMotion,\n  useReducedMotionConfig,\n  useResetProjection,\n  useScroll,\n  useSpring,\n  useTime,\n  useTransform,\n  useUnmountEffect,\n  useVelocity,\n  useViewportScroll,\n  useWillChange,\n  visualElementStore,\n  warning,\n  wrap\n} from \"./chunk-4Z6NVKPU.mjs\";\nimport {\n  __commonJS,\n  __privateAdd,\n  __privateGet,\n  __privateMethod,\n  __privateSet,\n  __publicField,\n  __toESM\n} from \"./chunk-QLPHEVXG.mjs\";\n\n// ../../../node_modules/hsluv/dist/hsluv.cjs\nvar require_hsluv = __commonJS({\n  \"../../../node_modules/hsluv/dist/hsluv.cjs\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.Hsluv = void 0;\n    var Hsluv2 = class {\n      constructor() {\n        this.hex = \"#000000\";\n        this.rgb_r = 0;\n        this.rgb_g = 0;\n        this.rgb_b = 0;\n        this.xyz_x = 0;\n        this.xyz_y = 0;\n        this.xyz_z = 0;\n        this.luv_l = 0;\n        this.luv_u = 0;\n        this.luv_v = 0;\n        this.lch_l = 0;\n        this.lch_c = 0;\n        this.lch_h = 0;\n        this.hsluv_h = 0;\n        this.hsluv_s = 0;\n        this.hsluv_l = 0;\n        this.hpluv_h = 0;\n        this.hpluv_p = 0;\n        this.hpluv_l = 0;\n        this.r0s = 0;\n        this.r0i = 0;\n        this.r1s = 0;\n        this.r1i = 0;\n        this.g0s = 0;\n        this.g0i = 0;\n        this.g1s = 0;\n        this.g1i = 0;\n        this.b0s = 0;\n        this.b0i = 0;\n        this.b1s = 0;\n        this.b1i = 0;\n      }\n      static fromLinear(c) {\n        if (c <= 31308e-7) {\n          return 12.92 * c;\n        } else {\n          return 1.055 * Math.pow(c, 1 / 2.4) - 0.055;\n        }\n      }\n      static toLinear(c) {\n        if (c > 0.04045) {\n          return Math.pow((c + 0.055) / 1.055, 2.4);\n        } else {\n          return c / 12.92;\n        }\n      }\n      static yToL(Y) {\n        if (Y <= Hsluv2.epsilon) {\n          return Y / Hsluv2.refY * Hsluv2.kappa;\n        } else {\n          return 116 * Math.pow(Y / Hsluv2.refY, 1 / 3) - 16;\n        }\n      }\n      static lToY(L) {\n        if (L <= 8) {\n          return Hsluv2.refY * L / Hsluv2.kappa;\n        } else {\n          return Hsluv2.refY * Math.pow((L + 16) / 116, 3);\n        }\n      }\n      static rgbChannelToHex(chan) {\n        const c = Math.round(chan * 255);\n        const digit2 = c % 16;\n        const digit1 = (c - digit2) / 16 | 0;\n        return Hsluv2.hexChars.charAt(digit1) + Hsluv2.hexChars.charAt(digit2);\n      }\n      static hexToRgbChannel(hex, offset) {\n        const digit1 = Hsluv2.hexChars.indexOf(hex.charAt(offset));\n        const digit2 = Hsluv2.hexChars.indexOf(hex.charAt(offset + 1));\n        const n = digit1 * 16 + digit2;\n        return n / 255;\n      }\n      static distanceFromOriginAngle(slope, intercept, angle) {\n        const d = intercept / (Math.sin(angle) - slope * Math.cos(angle));\n        if (d < 0) {\n          return Infinity;\n        } else {\n          return d;\n        }\n      }\n      static distanceFromOrigin(slope, intercept) {\n        return Math.abs(intercept) / Math.sqrt(Math.pow(slope, 2) + 1);\n      }\n      static min6(f1, f2, f3, f4, f5, f6) {\n        return Math.min(f1, Math.min(f2, Math.min(f3, Math.min(f4, Math.min(f5, f6)))));\n      }\n      rgbToHex() {\n        this.hex = \"#\";\n        this.hex += Hsluv2.rgbChannelToHex(this.rgb_r);\n        this.hex += Hsluv2.rgbChannelToHex(this.rgb_g);\n        this.hex += Hsluv2.rgbChannelToHex(this.rgb_b);\n      }\n      hexToRgb() {\n        this.hex = this.hex.toLowerCase();\n        this.rgb_r = Hsluv2.hexToRgbChannel(this.hex, 1);\n        this.rgb_g = Hsluv2.hexToRgbChannel(this.hex, 3);\n        this.rgb_b = Hsluv2.hexToRgbChannel(this.hex, 5);\n      }\n      xyzToRgb() {\n        this.rgb_r = Hsluv2.fromLinear(Hsluv2.m_r0 * this.xyz_x + Hsluv2.m_r1 * this.xyz_y + Hsluv2.m_r2 * this.xyz_z);\n        this.rgb_g = Hsluv2.fromLinear(Hsluv2.m_g0 * this.xyz_x + Hsluv2.m_g1 * this.xyz_y + Hsluv2.m_g2 * this.xyz_z);\n        this.rgb_b = Hsluv2.fromLinear(Hsluv2.m_b0 * this.xyz_x + Hsluv2.m_b1 * this.xyz_y + Hsluv2.m_b2 * this.xyz_z);\n      }\n      rgbToXyz() {\n        const lr = Hsluv2.toLinear(this.rgb_r);\n        const lg = Hsluv2.toLinear(this.rgb_g);\n        const lb = Hsluv2.toLinear(this.rgb_b);\n        this.xyz_x = 0.41239079926595 * lr + 0.35758433938387 * lg + 0.18048078840183 * lb;\n        this.xyz_y = 0.21263900587151 * lr + 0.71516867876775 * lg + 0.072192315360733 * lb;\n        this.xyz_z = 0.019330818715591 * lr + 0.11919477979462 * lg + 0.95053215224966 * lb;\n      }\n      xyzToLuv() {\n        const divider = this.xyz_x + 15 * this.xyz_y + 3 * this.xyz_z;\n        let varU = 4 * this.xyz_x;\n        let varV = 9 * this.xyz_y;\n        if (divider !== 0) {\n          varU /= divider;\n          varV /= divider;\n        } else {\n          varU = NaN;\n          varV = NaN;\n        }\n        this.luv_l = Hsluv2.yToL(this.xyz_y);\n        if (this.luv_l === 0) {\n          this.luv_u = 0;\n          this.luv_v = 0;\n        } else {\n          this.luv_u = 13 * this.luv_l * (varU - Hsluv2.refU);\n          this.luv_v = 13 * this.luv_l * (varV - Hsluv2.refV);\n        }\n      }\n      luvToXyz() {\n        if (this.luv_l === 0) {\n          this.xyz_x = 0;\n          this.xyz_y = 0;\n          this.xyz_z = 0;\n          return;\n        }\n        const varU = this.luv_u / (13 * this.luv_l) + Hsluv2.refU;\n        const varV = this.luv_v / (13 * this.luv_l) + Hsluv2.refV;\n        this.xyz_y = Hsluv2.lToY(this.luv_l);\n        this.xyz_x = 0 - 9 * this.xyz_y * varU / ((varU - 4) * varV - varU * varV);\n        this.xyz_z = (9 * this.xyz_y - 15 * varV * this.xyz_y - varV * this.xyz_x) / (3 * varV);\n      }\n      luvToLch() {\n        this.lch_l = this.luv_l;\n        this.lch_c = Math.sqrt(this.luv_u * this.luv_u + this.luv_v * this.luv_v);\n        if (this.lch_c < 1e-8) {\n          this.lch_h = 0;\n        } else {\n          const hrad = Math.atan2(this.luv_v, this.luv_u);\n          this.lch_h = hrad * 180 / Math.PI;\n          if (this.lch_h < 0) {\n            this.lch_h = 360 + this.lch_h;\n          }\n        }\n      }\n      lchToLuv() {\n        const hrad = this.lch_h / 180 * Math.PI;\n        this.luv_l = this.lch_l;\n        this.luv_u = Math.cos(hrad) * this.lch_c;\n        this.luv_v = Math.sin(hrad) * this.lch_c;\n      }\n      calculateBoundingLines(l) {\n        const sub1 = Math.pow(l + 16, 3) / 1560896;\n        const sub2 = sub1 > Hsluv2.epsilon ? sub1 : l / Hsluv2.kappa;\n        const s1r = sub2 * (284517 * Hsluv2.m_r0 - 94839 * Hsluv2.m_r2);\n        const s2r = sub2 * (838422 * Hsluv2.m_r2 + 769860 * Hsluv2.m_r1 + 731718 * Hsluv2.m_r0);\n        const s3r = sub2 * (632260 * Hsluv2.m_r2 - 126452 * Hsluv2.m_r1);\n        const s1g = sub2 * (284517 * Hsluv2.m_g0 - 94839 * Hsluv2.m_g2);\n        const s2g = sub2 * (838422 * Hsluv2.m_g2 + 769860 * Hsluv2.m_g1 + 731718 * Hsluv2.m_g0);\n        const s3g = sub2 * (632260 * Hsluv2.m_g2 - 126452 * Hsluv2.m_g1);\n        const s1b = sub2 * (284517 * Hsluv2.m_b0 - 94839 * Hsluv2.m_b2);\n        const s2b = sub2 * (838422 * Hsluv2.m_b2 + 769860 * Hsluv2.m_b1 + 731718 * Hsluv2.m_b0);\n        const s3b = sub2 * (632260 * Hsluv2.m_b2 - 126452 * Hsluv2.m_b1);\n        this.r0s = s1r / s3r;\n        this.r0i = s2r * l / s3r;\n        this.r1s = s1r / (s3r + 126452);\n        this.r1i = (s2r - 769860) * l / (s3r + 126452);\n        this.g0s = s1g / s3g;\n        this.g0i = s2g * l / s3g;\n        this.g1s = s1g / (s3g + 126452);\n        this.g1i = (s2g - 769860) * l / (s3g + 126452);\n        this.b0s = s1b / s3b;\n        this.b0i = s2b * l / s3b;\n        this.b1s = s1b / (s3b + 126452);\n        this.b1i = (s2b - 769860) * l / (s3b + 126452);\n      }\n      calcMaxChromaHpluv() {\n        const r0 = Hsluv2.distanceFromOrigin(this.r0s, this.r0i);\n        const r1 = Hsluv2.distanceFromOrigin(this.r1s, this.r1i);\n        const g0 = Hsluv2.distanceFromOrigin(this.g0s, this.g0i);\n        const g1 = Hsluv2.distanceFromOrigin(this.g1s, this.g1i);\n        const b0 = Hsluv2.distanceFromOrigin(this.b0s, this.b0i);\n        const b1 = Hsluv2.distanceFromOrigin(this.b1s, this.b1i);\n        return Hsluv2.min6(r0, r1, g0, g1, b0, b1);\n      }\n      calcMaxChromaHsluv(h) {\n        const hueRad = h / 360 * Math.PI * 2;\n        const r0 = Hsluv2.distanceFromOriginAngle(this.r0s, this.r0i, hueRad);\n        const r1 = Hsluv2.distanceFromOriginAngle(this.r1s, this.r1i, hueRad);\n        const g0 = Hsluv2.distanceFromOriginAngle(this.g0s, this.g0i, hueRad);\n        const g1 = Hsluv2.distanceFromOriginAngle(this.g1s, this.g1i, hueRad);\n        const b0 = Hsluv2.distanceFromOriginAngle(this.b0s, this.b0i, hueRad);\n        const b1 = Hsluv2.distanceFromOriginAngle(this.b1s, this.b1i, hueRad);\n        return Hsluv2.min6(r0, r1, g0, g1, b0, b1);\n      }\n      hsluvToLch() {\n        if (this.hsluv_l > 99.9999999) {\n          this.lch_l = 100;\n          this.lch_c = 0;\n        } else if (this.hsluv_l < 1e-8) {\n          this.lch_l = 0;\n          this.lch_c = 0;\n        } else {\n          this.lch_l = this.hsluv_l;\n          this.calculateBoundingLines(this.hsluv_l);\n          const max = this.calcMaxChromaHsluv(this.hsluv_h);\n          this.lch_c = max / 100 * this.hsluv_s;\n        }\n        this.lch_h = this.hsluv_h;\n      }\n      lchToHsluv() {\n        if (this.lch_l > 99.9999999) {\n          this.hsluv_s = 0;\n          this.hsluv_l = 100;\n        } else if (this.lch_l < 1e-8) {\n          this.hsluv_s = 0;\n          this.hsluv_l = 0;\n        } else {\n          this.calculateBoundingLines(this.lch_l);\n          const max = this.calcMaxChromaHsluv(this.lch_h);\n          this.hsluv_s = this.lch_c / max * 100;\n          this.hsluv_l = this.lch_l;\n        }\n        this.hsluv_h = this.lch_h;\n      }\n      hpluvToLch() {\n        if (this.hpluv_l > 99.9999999) {\n          this.lch_l = 100;\n          this.lch_c = 0;\n        } else if (this.hpluv_l < 1e-8) {\n          this.lch_l = 0;\n          this.lch_c = 0;\n        } else {\n          this.lch_l = this.hpluv_l;\n          this.calculateBoundingLines(this.hpluv_l);\n          const max = this.calcMaxChromaHpluv();\n          this.lch_c = max / 100 * this.hpluv_p;\n        }\n        this.lch_h = this.hpluv_h;\n      }\n      lchToHpluv() {\n        if (this.lch_l > 99.9999999) {\n          this.hpluv_p = 0;\n          this.hpluv_l = 100;\n        } else if (this.lch_l < 1e-8) {\n          this.hpluv_p = 0;\n          this.hpluv_l = 0;\n        } else {\n          this.calculateBoundingLines(this.lch_l);\n          const max = this.calcMaxChromaHpluv();\n          this.hpluv_p = this.lch_c / max * 100;\n          this.hpluv_l = this.lch_l;\n        }\n        this.hpluv_h = this.lch_h;\n      }\n      hsluvToRgb() {\n        this.hsluvToLch();\n        this.lchToLuv();\n        this.luvToXyz();\n        this.xyzToRgb();\n      }\n      hpluvToRgb() {\n        this.hpluvToLch();\n        this.lchToLuv();\n        this.luvToXyz();\n        this.xyzToRgb();\n      }\n      hsluvToHex() {\n        this.hsluvToRgb();\n        this.rgbToHex();\n      }\n      hpluvToHex() {\n        this.hpluvToRgb();\n        this.rgbToHex();\n      }\n      rgbToHsluv() {\n        this.rgbToXyz();\n        this.xyzToLuv();\n        this.luvToLch();\n        this.lchToHpluv();\n        this.lchToHsluv();\n      }\n      rgbToHpluv() {\n        this.rgbToXyz();\n        this.xyzToLuv();\n        this.luvToLch();\n        this.lchToHpluv();\n        this.lchToHpluv();\n      }\n      hexToHsluv() {\n        this.hexToRgb();\n        this.rgbToHsluv();\n      }\n      hexToHpluv() {\n        this.hexToRgb();\n        this.rgbToHpluv();\n      }\n    };\n    exports.Hsluv = Hsluv2;\n    Hsluv2.hexChars = \"0123456789abcdef\";\n    Hsluv2.refY = 1;\n    Hsluv2.refU = 0.19783000664283;\n    Hsluv2.refV = 0.46831999493879;\n    Hsluv2.kappa = 903.2962962;\n    Hsluv2.epsilon = 0.0088564516;\n    Hsluv2.m_r0 = 3.240969941904521;\n    Hsluv2.m_r1 = -1.537383177570093;\n    Hsluv2.m_r2 = -0.498610760293;\n    Hsluv2.m_g0 = -0.96924363628087;\n    Hsluv2.m_g1 = 1.87596750150772;\n    Hsluv2.m_g2 = 0.041555057407175;\n    Hsluv2.m_b0 = 0.055630079696993;\n    Hsluv2.m_b1 = -0.20397695888897;\n    Hsluv2.m_b2 = 1.056971514242878;\n  }\n});\n\n// ../../../node_modules/eventemitter3/index.js\nvar require_eventemitter3 = __commonJS({\n  \"../../../node_modules/eventemitter3/index.js\"(exports, module) {\n    \"use strict\";\n    var has = Object.prototype.hasOwnProperty;\n    var prefix2 = \"~\";\n    function Events() {\n    }\n    if (Object.create) {\n      Events.prototype = /* @__PURE__ */ Object.create(null);\n      if (!new Events().__proto__)\n        prefix2 = false;\n    }\n    function EE(fn, context, once) {\n      this.fn = fn;\n      this.context = context;\n      this.once = once || false;\n    }\n    function addListener(emitter, event, fn, context, once) {\n      if (typeof fn !== \"function\") {\n        throw new TypeError(\"The listener must be a function\");\n      }\n      var listener = new EE(fn, context || emitter, once), evt = prefix2 ? prefix2 + event : event;\n      if (!emitter._events[evt])\n        emitter._events[evt] = listener, emitter._eventsCount++;\n      else if (!emitter._events[evt].fn)\n        emitter._events[evt].push(listener);\n      else\n        emitter._events[evt] = [emitter._events[evt], listener];\n      return emitter;\n    }\n    function clearEvent(emitter, evt) {\n      if (--emitter._eventsCount === 0)\n        emitter._events = new Events();\n      else\n        delete emitter._events[evt];\n    }\n    function EventEmitter2() {\n      this._events = new Events();\n      this._eventsCount = 0;\n    }\n    EventEmitter2.prototype.eventNames = function eventNames() {\n      var names = [], events, name;\n      if (this._eventsCount === 0)\n        return names;\n      for (name in events = this._events) {\n        if (has.call(events, name))\n          names.push(prefix2 ? name.slice(1) : name);\n      }\n      if (Object.getOwnPropertySymbols) {\n        return names.concat(Object.getOwnPropertySymbols(events));\n      }\n      return names;\n    };\n    EventEmitter2.prototype.listeners = function listeners(event) {\n      var evt = prefix2 ? prefix2 + event : event, handlers = this._events[evt];\n      if (!handlers)\n        return [];\n      if (handlers.fn)\n        return [handlers.fn];\n      for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n        ee[i] = handlers[i].fn;\n      }\n      return ee;\n    };\n    EventEmitter2.prototype.listenerCount = function listenerCount(event) {\n      var evt = prefix2 ? prefix2 + event : event, listeners = this._events[evt];\n      if (!listeners)\n        return 0;\n      if (listeners.fn)\n        return 1;\n      return listeners.length;\n    };\n    EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n      var evt = prefix2 ? prefix2 + event : event;\n      if (!this._events[evt])\n        return false;\n      var listeners = this._events[evt], len = arguments.length, args, i;\n      if (listeners.fn) {\n        if (listeners.once)\n          this.removeListener(event, listeners.fn, void 0, true);\n        switch (len) {\n          case 1:\n            return listeners.fn.call(listeners.context), true;\n          case 2:\n            return listeners.fn.call(listeners.context, a1), true;\n          case 3:\n            return listeners.fn.call(listeners.context, a1, a2), true;\n          case 4:\n            return listeners.fn.call(listeners.context, a1, a2, a3), true;\n          case 5:\n            return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n          case 6:\n            return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n        }\n        for (i = 1, args = new Array(len - 1); i < len; i++) {\n          args[i - 1] = arguments[i];\n        }\n        listeners.fn.apply(listeners.context, args);\n      } else {\n        var length = listeners.length, j;\n        for (i = 0; i < length; i++) {\n          if (listeners[i].once)\n            this.removeListener(event, listeners[i].fn, void 0, true);\n          switch (len) {\n            case 1:\n              listeners[i].fn.call(listeners[i].context);\n              break;\n            case 2:\n              listeners[i].fn.call(listeners[i].context, a1);\n              break;\n            case 3:\n              listeners[i].fn.call(listeners[i].context, a1, a2);\n              break;\n            case 4:\n              listeners[i].fn.call(listeners[i].context, a1, a2, a3);\n              break;\n            default:\n              if (!args)\n                for (j = 1, args = new Array(len - 1); j < len; j++) {\n                  args[j - 1] = arguments[j];\n                }\n              listeners[i].fn.apply(listeners[i].context, args);\n          }\n        }\n      }\n      return true;\n    };\n    EventEmitter2.prototype.on = function on(event, fn, context) {\n      return addListener(this, event, fn, context, false);\n    };\n    EventEmitter2.prototype.once = function once(event, fn, context) {\n      return addListener(this, event, fn, context, true);\n    };\n    EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {\n      var evt = prefix2 ? prefix2 + event : event;\n      if (!this._events[evt])\n        return this;\n      if (!fn) {\n        clearEvent(this, evt);\n        return this;\n      }\n      var listeners = this._events[evt];\n      if (listeners.fn) {\n        if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n          clearEvent(this, evt);\n        }\n      } else {\n        for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n          if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {\n            events.push(listeners[i]);\n          }\n        }\n        if (events.length)\n          this._events[evt] = events.length === 1 ? events[0] : events;\n        else\n          clearEvent(this, evt);\n      }\n      return this;\n    };\n    EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {\n      var evt;\n      if (event) {\n        evt = prefix2 ? prefix2 + event : event;\n        if (this._events[evt])\n          clearEvent(this, evt);\n      } else {\n        this._events = new Events();\n        this._eventsCount = 0;\n      }\n      return this;\n    };\n    EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;\n    EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;\n    EventEmitter2.prefixed = prefix2;\n    EventEmitter2.EventEmitter = EventEmitter2;\n    if (\"undefined\" !== typeof module) {\n      module.exports = EventEmitter2;\n    }\n  }\n});\n\n// ../../../node_modules/process/browser.js\nvar require_browser = __commonJS({\n  \"../../../node_modules/process/browser.js\"(exports, module) {\n    var process5 = module.exports = {};\n    var cachedSetTimeout;\n    var cachedClearTimeout;\n    function defaultSetTimout() {\n      throw new Error(\"setTimeout has not been defined\");\n    }\n    function defaultClearTimeout() {\n      throw new Error(\"clearTimeout has not been defined\");\n    }\n    (function() {\n      try {\n        if (typeof setTimeout === \"function\") {\n          cachedSetTimeout = setTimeout;\n        } else {\n          cachedSetTimeout = defaultSetTimout;\n        }\n      } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n      }\n      try {\n        if (typeof clearTimeout === \"function\") {\n          cachedClearTimeout = clearTimeout;\n        } else {\n          cachedClearTimeout = defaultClearTimeout;\n        }\n      } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n      }\n    })();\n    function runTimeout(fun) {\n      if (cachedSetTimeout === setTimeout) {\n        return setTimeout(fun, 0);\n      }\n      if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n      }\n      try {\n        return cachedSetTimeout(fun, 0);\n      } catch (e) {\n        try {\n          return cachedSetTimeout.call(null, fun, 0);\n        } catch (e2) {\n          return cachedSetTimeout.call(this, fun, 0);\n        }\n      }\n    }\n    function runClearTimeout(marker) {\n      if (cachedClearTimeout === clearTimeout) {\n        return clearTimeout(marker);\n      }\n      if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n      }\n      try {\n        return cachedClearTimeout(marker);\n      } catch (e) {\n        try {\n          return cachedClearTimeout.call(null, marker);\n        } catch (e2) {\n          return cachedClearTimeout.call(this, marker);\n        }\n      }\n    }\n    var queue = [];\n    var draining = false;\n    var currentQueue;\n    var queueIndex = -1;\n    function cleanUpNextTick() {\n      if (!draining || !currentQueue) {\n        return;\n      }\n      draining = false;\n      if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n      } else {\n        queueIndex = -1;\n      }\n      if (queue.length) {\n        drainQueue();\n      }\n    }\n    function drainQueue() {\n      if (draining) {\n        return;\n      }\n      var timeout = runTimeout(cleanUpNextTick);\n      draining = true;\n      var len = queue.length;\n      while (len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n          if (currentQueue) {\n            currentQueue[queueIndex].run();\n          }\n        }\n        queueIndex = -1;\n        len = queue.length;\n      }\n      currentQueue = null;\n      draining = false;\n      runClearTimeout(timeout);\n    }\n    process5.nextTick = function(fun) {\n      var args = new Array(arguments.length - 1);\n      if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n          args[i - 1] = arguments[i];\n        }\n      }\n      queue.push(new Item(fun, args));\n      if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n      }\n    };\n    function Item(fun, array) {\n      this.fun = fun;\n      this.array = array;\n    }\n    Item.prototype.run = function() {\n      this.fun.apply(null, this.array);\n    };\n    process5.title = \"browser\";\n    process5.browser = true;\n    process5.env = {};\n    process5.argv = [];\n    process5.version = \"\";\n    process5.versions = {};\n    function noop4() {\n    }\n    process5.on = noop4;\n    process5.addListener = noop4;\n    process5.once = noop4;\n    process5.off = noop4;\n    process5.removeListener = noop4;\n    process5.removeAllListeners = noop4;\n    process5.emit = noop4;\n    process5.prependListener = noop4;\n    process5.prependOnceListener = noop4;\n    process5.listeners = function(name) {\n      return [];\n    };\n    process5.binding = function(name) {\n      throw new Error(\"process.binding is not supported\");\n    };\n    process5.cwd = function() {\n      return \"/\";\n    };\n    process5.chdir = function(dir) {\n      throw new Error(\"process.chdir is not supported\");\n    };\n    process5.umask = function() {\n      return 0;\n    };\n  }\n});\n\n// ../../../node_modules/@juggle/resize-observer/lib/exports/resize-observer.umd.js\nvar require_resize_observer_umd = __commonJS({\n  \"../../../node_modules/@juggle/resize-observer/lib/exports/resize-observer.umd.js\"(exports, module) {\n    (function(global, factory) {\n      typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : (global = typeof globalThis !== \"undefined\" ? globalThis : global || self, factory(global.ResizeObserver = {}));\n    })(exports, function(exports2) {\n      \"use strict\";\n      var resizeObservers = [];\n      var hasActiveObservations = function() {\n        return resizeObservers.some(function(ro) {\n          return ro.activeTargets.length > 0;\n        });\n      };\n      var hasSkippedObservations = function() {\n        return resizeObservers.some(function(ro) {\n          return ro.skippedTargets.length > 0;\n        });\n      };\n      var msg = \"ResizeObserver loop completed with undelivered notifications.\";\n      var deliverResizeLoopError = function() {\n        var event;\n        if (typeof ErrorEvent === \"function\") {\n          event = new ErrorEvent(\"error\", {\n            message: msg\n          });\n        } else {\n          event = document.createEvent(\"Event\");\n          event.initEvent(\"error\", false, false);\n          event.message = msg;\n        }\n        window.dispatchEvent(event);\n      };\n      var ResizeObserverBoxOptions;\n      (function(ResizeObserverBoxOptions2) {\n        ResizeObserverBoxOptions2[\"BORDER_BOX\"] = \"border-box\";\n        ResizeObserverBoxOptions2[\"CONTENT_BOX\"] = \"content-box\";\n        ResizeObserverBoxOptions2[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n      })(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\n      var freeze = function(obj) {\n        return Object.freeze(obj);\n      };\n      var ResizeObserverSize = function() {\n        function ResizeObserverSize2(inlineSize, blockSize) {\n          this.inlineSize = inlineSize;\n          this.blockSize = blockSize;\n          freeze(this);\n        }\n        return ResizeObserverSize2;\n      }();\n      var DOMRectReadOnly = function() {\n        function DOMRectReadOnly2(x, y, width, height) {\n          this.x = x;\n          this.y = y;\n          this.width = width;\n          this.height = height;\n          this.top = this.y;\n          this.left = this.x;\n          this.bottom = this.top + this.height;\n          this.right = this.left + this.width;\n          return freeze(this);\n        }\n        DOMRectReadOnly2.prototype.toJSON = function() {\n          var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n          return { x, y, top, right, bottom, left, width, height };\n        };\n        DOMRectReadOnly2.fromRect = function(rectangle) {\n          return new DOMRectReadOnly2(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n        };\n        return DOMRectReadOnly2;\n      }();\n      var isSVG = function(target) {\n        return target instanceof SVGElement && \"getBBox\" in target;\n      };\n      var isHidden = function(target) {\n        if (isSVG(target)) {\n          var _a = target.getBBox(), width = _a.width, height = _a.height;\n          return !width && !height;\n        }\n        var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n        return !(offsetWidth || offsetHeight || target.getClientRects().length);\n      };\n      var isElement = function(obj) {\n        var _a, _b;\n        if (obj instanceof Element) {\n          return true;\n        }\n        var scope = (_b = (_a = obj) === null || _a === void 0 ? void 0 : _a.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView;\n        return !!(scope && obj instanceof scope.Element);\n      };\n      var isReplacedElement = function(target) {\n        switch (target.tagName) {\n          case \"INPUT\":\n            if (target.type !== \"image\") {\n              break;\n            }\n          case \"VIDEO\":\n          case \"AUDIO\":\n          case \"EMBED\":\n          case \"OBJECT\":\n          case \"CANVAS\":\n          case \"IFRAME\":\n          case \"IMG\":\n            return true;\n        }\n        return false;\n      };\n      var global = typeof window !== \"undefined\" ? window : {};\n      var cache2 = /* @__PURE__ */ new WeakMap();\n      var scrollRegexp = /auto|scroll/;\n      var verticalRegexp = /^tb|vertical/;\n      var IE = /msie|trident/i.test(global.navigator && global.navigator.userAgent);\n      var parseDimension = function(pixel) {\n        return parseFloat(pixel || \"0\");\n      };\n      var size = function(inlineSize, blockSize, switchSizes) {\n        if (inlineSize === void 0) {\n          inlineSize = 0;\n        }\n        if (blockSize === void 0) {\n          blockSize = 0;\n        }\n        if (switchSizes === void 0) {\n          switchSizes = false;\n        }\n        return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n      };\n      var zeroBoxes = freeze({\n        devicePixelContentBoxSize: size(),\n        borderBoxSize: size(),\n        contentBoxSize: size(),\n        contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n      });\n      var calculateBoxSizes = function(target, forceRecalculation) {\n        if (forceRecalculation === void 0) {\n          forceRecalculation = false;\n        }\n        if (cache2.has(target) && !forceRecalculation) {\n          return cache2.get(target);\n        }\n        if (isHidden(target)) {\n          cache2.set(target, zeroBoxes);\n          return zeroBoxes;\n        }\n        var cs = getComputedStyle(target);\n        var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n        var removePadding = !IE && cs.boxSizing === \"border-box\";\n        var switchSizes = verticalRegexp.test(cs.writingMode || \"\");\n        var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || \"\");\n        var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || \"\");\n        var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n        var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n        var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n        var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n        var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n        var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n        var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n        var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n        var horizontalPadding = paddingLeft + paddingRight;\n        var verticalPadding = paddingTop + paddingBottom;\n        var horizontalBorderArea = borderLeft + borderRight;\n        var verticalBorderArea = borderTop + borderBottom;\n        var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n        var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n        var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n        var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n        var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n        var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n        var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n        var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n        var boxes = freeze({\n          devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n          borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n          contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n          contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n        });\n        cache2.set(target, boxes);\n        return boxes;\n      };\n      var calculateBoxSize = function(target, observedBox, forceRecalculation) {\n        var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n        switch (observedBox) {\n          case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n            return devicePixelContentBoxSize;\n          case ResizeObserverBoxOptions.BORDER_BOX:\n            return borderBoxSize;\n          default:\n            return contentBoxSize;\n        }\n      };\n      var ResizeObserverEntry = function() {\n        function ResizeObserverEntry2(target) {\n          var boxes = calculateBoxSizes(target);\n          this.target = target;\n          this.contentRect = boxes.contentRect;\n          this.borderBoxSize = freeze([boxes.borderBoxSize]);\n          this.contentBoxSize = freeze([boxes.contentBoxSize]);\n          this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n        }\n        return ResizeObserverEntry2;\n      }();\n      var calculateDepthForNode = function(node) {\n        if (isHidden(node)) {\n          return Infinity;\n        }\n        var depth = 0;\n        var parent = node.parentNode;\n        while (parent) {\n          depth += 1;\n          parent = parent.parentNode;\n        }\n        return depth;\n      };\n      var broadcastActiveObservations = function() {\n        var shallowestDepth = Infinity;\n        var callbacks2 = [];\n        resizeObservers.forEach(function processObserver(ro) {\n          if (ro.activeTargets.length === 0) {\n            return;\n          }\n          var entries = [];\n          ro.activeTargets.forEach(function processTarget(ot) {\n            var entry = new ResizeObserverEntry(ot.target);\n            var targetDepth = calculateDepthForNode(ot.target);\n            entries.push(entry);\n            ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n            if (targetDepth < shallowestDepth) {\n              shallowestDepth = targetDepth;\n            }\n          });\n          callbacks2.push(function resizeObserverCallback() {\n            ro.callback.call(ro.observer, entries, ro.observer);\n          });\n          ro.activeTargets.splice(0, ro.activeTargets.length);\n        });\n        for (var _i = 0, callbacks_1 = callbacks2; _i < callbacks_1.length; _i++) {\n          var callback = callbacks_1[_i];\n          callback();\n        }\n        return shallowestDepth;\n      };\n      var gatherActiveObservationsAtDepth = function(depth) {\n        resizeObservers.forEach(function processObserver(ro) {\n          ro.activeTargets.splice(0, ro.activeTargets.length);\n          ro.skippedTargets.splice(0, ro.skippedTargets.length);\n          ro.observationTargets.forEach(function processTarget(ot) {\n            if (ot.isActive()) {\n              if (calculateDepthForNode(ot.target) > depth) {\n                ro.activeTargets.push(ot);\n              } else {\n                ro.skippedTargets.push(ot);\n              }\n            }\n          });\n        });\n      };\n      var process5 = function() {\n        var depth = 0;\n        gatherActiveObservationsAtDepth(depth);\n        while (hasActiveObservations()) {\n          depth = broadcastActiveObservations();\n          gatherActiveObservationsAtDepth(depth);\n        }\n        if (hasSkippedObservations()) {\n          deliverResizeLoopError();\n        }\n        return depth > 0;\n      };\n      var trigger;\n      var callbacks = [];\n      var notify = function() {\n        return callbacks.splice(0).forEach(function(cb) {\n          return cb();\n        });\n      };\n      var queueMicroTask = function(callback) {\n        if (!trigger) {\n          var toggle_1 = 0;\n          var el_1 = document.createTextNode(\"\");\n          var config = { characterData: true };\n          new MutationObserver(function() {\n            return notify();\n          }).observe(el_1, config);\n          trigger = function() {\n            el_1.textContent = \"\" + (toggle_1 ? toggle_1-- : toggle_1++);\n          };\n        }\n        callbacks.push(callback);\n        trigger();\n      };\n      var queueResizeObserver = function(cb) {\n        queueMicroTask(function ResizeObserver2() {\n          requestAnimationFrame(cb);\n        });\n      };\n      var watching = 0;\n      var isWatching = function() {\n        return !!watching;\n      };\n      var CATCH_PERIOD = 250;\n      var observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\n      var events = [\n        \"resize\",\n        \"load\",\n        \"transitionend\",\n        \"animationend\",\n        \"animationstart\",\n        \"animationiteration\",\n        \"keyup\",\n        \"keydown\",\n        \"mouseup\",\n        \"mousedown\",\n        \"mouseover\",\n        \"mouseout\",\n        \"blur\",\n        \"focus\"\n      ];\n      var time = function(timeout) {\n        if (timeout === void 0) {\n          timeout = 0;\n        }\n        return Date.now() + timeout;\n      };\n      var scheduled = false;\n      var Scheduler = function() {\n        function Scheduler2() {\n          var _this = this;\n          this.stopped = true;\n          this.listener = function() {\n            return _this.schedule();\n          };\n        }\n        Scheduler2.prototype.run = function(timeout) {\n          var _this = this;\n          if (timeout === void 0) {\n            timeout = CATCH_PERIOD;\n          }\n          if (scheduled) {\n            return;\n          }\n          scheduled = true;\n          var until = time(timeout);\n          queueResizeObserver(function() {\n            var elementsHaveResized = false;\n            try {\n              elementsHaveResized = process5();\n            } finally {\n              scheduled = false;\n              timeout = until - time();\n              if (!isWatching()) {\n                return;\n              }\n              if (elementsHaveResized) {\n                _this.run(1e3);\n              } else if (timeout > 0) {\n                _this.run(timeout);\n              } else {\n                _this.start();\n              }\n            }\n          });\n        };\n        Scheduler2.prototype.schedule = function() {\n          this.stop();\n          this.run();\n        };\n        Scheduler2.prototype.observe = function() {\n          var _this = this;\n          var cb = function() {\n            return _this.observer && _this.observer.observe(document.body, observerConfig);\n          };\n          document.body ? cb() : global.addEventListener(\"DOMContentLoaded\", cb);\n        };\n        Scheduler2.prototype.start = function() {\n          var _this = this;\n          if (this.stopped) {\n            this.stopped = false;\n            this.observer = new MutationObserver(this.listener);\n            this.observe();\n            events.forEach(function(name) {\n              return global.addEventListener(name, _this.listener, true);\n            });\n          }\n        };\n        Scheduler2.prototype.stop = function() {\n          var _this = this;\n          if (!this.stopped) {\n            this.observer && this.observer.disconnect();\n            events.forEach(function(name) {\n              return global.removeEventListener(name, _this.listener, true);\n            });\n            this.stopped = true;\n          }\n        };\n        return Scheduler2;\n      }();\n      var scheduler2 = new Scheduler();\n      var updateCount = function(n) {\n        !watching && n > 0 && scheduler2.start();\n        watching += n;\n        !watching && scheduler2.stop();\n      };\n      var skipNotifyOnElement = function(target) {\n        return !isSVG(target) && !isReplacedElement(target) && getComputedStyle(target).display === \"inline\";\n      };\n      var ResizeObservation = function() {\n        function ResizeObservation2(target, observedBox) {\n          this.target = target;\n          this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n          this.lastReportedSize = {\n            inlineSize: 0,\n            blockSize: 0\n          };\n        }\n        ResizeObservation2.prototype.isActive = function() {\n          var size2 = calculateBoxSize(this.target, this.observedBox, true);\n          if (skipNotifyOnElement(this.target)) {\n            this.lastReportedSize = size2;\n          }\n          if (this.lastReportedSize.inlineSize !== size2.inlineSize || this.lastReportedSize.blockSize !== size2.blockSize) {\n            return true;\n          }\n          return false;\n        };\n        return ResizeObservation2;\n      }();\n      var ResizeObserverDetail = function() {\n        function ResizeObserverDetail2(resizeObserver, callback) {\n          this.activeTargets = [];\n          this.skippedTargets = [];\n          this.observationTargets = [];\n          this.observer = resizeObserver;\n          this.callback = callback;\n        }\n        return ResizeObserverDetail2;\n      }();\n      var observerMap = /* @__PURE__ */ new WeakMap();\n      var getObservationIndex = function(observationTargets, target) {\n        for (var i = 0; i < observationTargets.length; i += 1) {\n          if (observationTargets[i].target === target) {\n            return i;\n          }\n        }\n        return -1;\n      };\n      var ResizeObserverController = function() {\n        function ResizeObserverController2() {\n        }\n        ResizeObserverController2.connect = function(resizeObserver, callback) {\n          var detail = new ResizeObserverDetail(resizeObserver, callback);\n          observerMap.set(resizeObserver, detail);\n        };\n        ResizeObserverController2.observe = function(resizeObserver, target, options) {\n          var detail = observerMap.get(resizeObserver);\n          var firstObservation = detail.observationTargets.length === 0;\n          if (getObservationIndex(detail.observationTargets, target) < 0) {\n            firstObservation && resizeObservers.push(detail);\n            detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n            updateCount(1);\n            scheduler2.schedule();\n          }\n        };\n        ResizeObserverController2.unobserve = function(resizeObserver, target) {\n          var detail = observerMap.get(resizeObserver);\n          var index = getObservationIndex(detail.observationTargets, target);\n          var lastObservation = detail.observationTargets.length === 1;\n          if (index >= 0) {\n            lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n            detail.observationTargets.splice(index, 1);\n            updateCount(-1);\n          }\n        };\n        ResizeObserverController2.disconnect = function(resizeObserver) {\n          var _this = this;\n          var detail = observerMap.get(resizeObserver);\n          detail.observationTargets.slice().forEach(function(ot) {\n            return _this.unobserve(resizeObserver, ot.target);\n          });\n          detail.activeTargets.splice(0, detail.activeTargets.length);\n        };\n        return ResizeObserverController2;\n      }();\n      var ResizeObserver = function() {\n        function ResizeObserver2(callback) {\n          if (arguments.length === 0) {\n            throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n          }\n          if (typeof callback !== \"function\") {\n            throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n          }\n          ResizeObserverController.connect(this, callback);\n        }\n        ResizeObserver2.prototype.observe = function(target, options) {\n          if (arguments.length === 0) {\n            throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n          }\n          if (!isElement(target)) {\n            throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n          }\n          ResizeObserverController.observe(this, target, options);\n        };\n        ResizeObserver2.prototype.unobserve = function(target) {\n          if (arguments.length === 0) {\n            throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n          }\n          if (!isElement(target)) {\n            throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n          }\n          ResizeObserverController.unobserve(this, target);\n        };\n        ResizeObserver2.prototype.disconnect = function() {\n          ResizeObserverController.disconnect(this);\n        };\n        ResizeObserver2.toString = function() {\n          return \"function ResizeObserver () { [polyfill code] }\";\n        };\n        return ResizeObserver2;\n      }();\n      exports2.ResizeObserver = ResizeObserver;\n      exports2.ResizeObserverEntry = ResizeObserverEntry;\n      exports2.ResizeObserverSize = ResizeObserverSize;\n      Object.defineProperty(exports2, \"__esModule\", { value: true });\n    });\n  }\n});\n\n// ../../../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js\nvar require_react_is_production_min = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js\"(exports) {\n    \"use strict\";\n    var b = \"function\" === typeof Symbol && Symbol.for;\n    var c = b ? Symbol.for(\"react.element\") : 60103;\n    var d = b ? Symbol.for(\"react.portal\") : 60106;\n    var e = b ? Symbol.for(\"react.fragment\") : 60107;\n    var f = b ? Symbol.for(\"react.strict_mode\") : 60108;\n    var g = b ? Symbol.for(\"react.profiler\") : 60114;\n    var h = b ? Symbol.for(\"react.provider\") : 60109;\n    var k = b ? Symbol.for(\"react.context\") : 60110;\n    var l = b ? Symbol.for(\"react.async_mode\") : 60111;\n    var m2 = b ? Symbol.for(\"react.concurrent_mode\") : 60111;\n    var n = b ? Symbol.for(\"react.forward_ref\") : 60112;\n    var p = b ? Symbol.for(\"react.suspense\") : 60113;\n    var q = b ? Symbol.for(\"react.suspense_list\") : 60120;\n    var r = b ? Symbol.for(\"react.memo\") : 60115;\n    var t = b ? Symbol.for(\"react.lazy\") : 60116;\n    var v = b ? Symbol.for(\"react.block\") : 60121;\n    var w = b ? Symbol.for(\"react.fundamental\") : 60117;\n    var x = b ? Symbol.for(\"react.responder\") : 60118;\n    var y = b ? Symbol.for(\"react.scope\") : 60119;\n    function z(a) {\n      if (\"object\" === typeof a && null !== a) {\n        var u = a.$$typeof;\n        switch (u) {\n          case c:\n            switch (a = a.type, a) {\n              case l:\n              case m2:\n              case e:\n              case g:\n              case f:\n              case p:\n                return a;\n              default:\n                switch (a = a && a.$$typeof, a) {\n                  case k:\n                  case n:\n                  case t:\n                  case r:\n                  case h:\n                    return a;\n                  default:\n                    return u;\n                }\n            }\n          case d:\n            return u;\n        }\n      }\n    }\n    function A(a) {\n      return z(a) === m2;\n    }\n    exports.AsyncMode = l;\n    exports.ConcurrentMode = m2;\n    exports.ContextConsumer = k;\n    exports.ContextProvider = h;\n    exports.Element = c;\n    exports.ForwardRef = n;\n    exports.Fragment = e;\n    exports.Lazy = t;\n    exports.Memo = r;\n    exports.Portal = d;\n    exports.Profiler = g;\n    exports.StrictMode = f;\n    exports.Suspense = p;\n    exports.isAsyncMode = function(a) {\n      return A(a) || z(a) === l;\n    };\n    exports.isConcurrentMode = A;\n    exports.isContextConsumer = function(a) {\n      return z(a) === k;\n    };\n    exports.isContextProvider = function(a) {\n      return z(a) === h;\n    };\n    exports.isElement = function(a) {\n      return \"object\" === typeof a && null !== a && a.$$typeof === c;\n    };\n    exports.isForwardRef = function(a) {\n      return z(a) === n;\n    };\n    exports.isFragment = function(a) {\n      return z(a) === e;\n    };\n    exports.isLazy = function(a) {\n      return z(a) === t;\n    };\n    exports.isMemo = function(a) {\n      return z(a) === r;\n    };\n    exports.isPortal = function(a) {\n      return z(a) === d;\n    };\n    exports.isProfiler = function(a) {\n      return z(a) === g;\n    };\n    exports.isStrictMode = function(a) {\n      return z(a) === f;\n    };\n    exports.isSuspense = function(a) {\n      return z(a) === p;\n    };\n    exports.isValidElementType = function(a) {\n      return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m2 || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n    };\n    exports.typeOf = z;\n  }\n});\n\n// ../../../node_modules/hoist-non-react-statics/node_modules/react-is/index.js\nvar require_react_is = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/node_modules/react-is/index.js\"(exports, module) {\n    \"use strict\";\n    if (true) {\n      module.exports = require_react_is_production_min();\n    } else {\n      module.exports = null;\n    }\n  }\n});\n\n// ../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\nvar require_hoist_non_react_statics_cjs = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\"(exports, module) {\n    \"use strict\";\n    var reactIs = require_react_is();\n    var REACT_STATICS = {\n      childContextTypes: true,\n      contextType: true,\n      contextTypes: true,\n      defaultProps: true,\n      displayName: true,\n      getDefaultProps: true,\n      getDerivedStateFromError: true,\n      getDerivedStateFromProps: true,\n      mixins: true,\n      propTypes: true,\n      type: true\n    };\n    var KNOWN_STATICS = {\n      name: true,\n      length: true,\n      prototype: true,\n      caller: true,\n      callee: true,\n      arguments: true,\n      arity: true\n    };\n    var FORWARD_REF_STATICS = {\n      \"$$typeof\": true,\n      render: true,\n      defaultProps: true,\n      displayName: true,\n      propTypes: true\n    };\n    var MEMO_STATICS = {\n      \"$$typeof\": true,\n      compare: true,\n      defaultProps: true,\n      displayName: true,\n      propTypes: true,\n      type: true\n    };\n    var TYPE_STATICS = {};\n    TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n    TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n    function getStatics(component) {\n      if (reactIs.isMemo(component)) {\n        return MEMO_STATICS;\n      }\n      return TYPE_STATICS[component[\"$$typeof\"]] || REACT_STATICS;\n    }\n    var defineProperty = Object.defineProperty;\n    var getOwnPropertyNames = Object.getOwnPropertyNames;\n    var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n    var getPrototypeOf = Object.getPrototypeOf;\n    var objectPrototype = Object.prototype;\n    function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n      if (typeof sourceComponent !== \"string\") {\n        if (objectPrototype) {\n          var inheritedComponent = getPrototypeOf(sourceComponent);\n          if (inheritedComponent && inheritedComponent !== objectPrototype) {\n            hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n          }\n        }\n        var keys3 = getOwnPropertyNames(sourceComponent);\n        if (getOwnPropertySymbols) {\n          keys3 = keys3.concat(getOwnPropertySymbols(sourceComponent));\n        }\n        var targetStatics = getStatics(targetComponent);\n        var sourceStatics = getStatics(sourceComponent);\n        for (var i = 0; i < keys3.length; ++i) {\n          var key7 = keys3[i];\n          if (!KNOWN_STATICS[key7] && !(blacklist && blacklist[key7]) && !(sourceStatics && sourceStatics[key7]) && !(targetStatics && targetStatics[key7])) {\n            var descriptor = getOwnPropertyDescriptor(sourceComponent, key7);\n            try {\n              defineProperty(targetComponent, key7, descriptor);\n            } catch (e) {\n            }\n          }\n        }\n      }\n      return targetComponent;\n    }\n    module.exports = hoistNonReactStatics;\n  }\n});\n\n// ../../../node_modules/fontfaceobserver/fontfaceobserver.standalone.js\nvar require_fontfaceobserver_standalone = __commonJS({\n  \"../../../node_modules/fontfaceobserver/fontfaceobserver.standalone.js\"(exports, module) {\n    (function() {\n      function l(a, b) {\n        document.addEventListener ? a.addEventListener(\"scroll\", b, false) : a.attachEvent(\"scroll\", b);\n      }\n      function m2(a) {\n        document.body ? a() : document.addEventListener ? document.addEventListener(\"DOMContentLoaded\", function c() {\n          document.removeEventListener(\"DOMContentLoaded\", c);\n          a();\n        }) : document.attachEvent(\"onreadystatechange\", function k() {\n          if (\"interactive\" == document.readyState || \"complete\" == document.readyState)\n            document.detachEvent(\"onreadystatechange\", k), a();\n        });\n      }\n      ;\n      function t(a) {\n        this.a = document.createElement(\"div\");\n        this.a.setAttribute(\"aria-hidden\", \"true\");\n        this.a.appendChild(document.createTextNode(a));\n        this.b = document.createElement(\"span\");\n        this.c = document.createElement(\"span\");\n        this.h = document.createElement(\"span\");\n        this.f = document.createElement(\"span\");\n        this.g = -1;\n        this.b.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.c.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.f.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.h.style.cssText = \"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";\n        this.b.appendChild(this.h);\n        this.c.appendChild(this.f);\n        this.a.appendChild(this.b);\n        this.a.appendChild(this.c);\n      }\n      function u(a, b) {\n        a.a.style.cssText = \"max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:\" + b + \";\";\n      }\n      function z(a) {\n        var b = a.a.offsetWidth, c = b + 100;\n        a.f.style.width = c + \"px\";\n        a.c.scrollLeft = c;\n        a.b.scrollLeft = a.b.scrollWidth + 100;\n        return a.g !== b ? (a.g = b, true) : false;\n      }\n      function A(a, b) {\n        function c() {\n          var a2 = k;\n          z(a2) && a2.a.parentNode && b(a2.g);\n        }\n        var k = a;\n        l(a.b, c);\n        l(a.c, c);\n        z(a);\n      }\n      ;\n      function B(a, b) {\n        var c = b || {};\n        this.family = a;\n        this.style = c.style || \"normal\";\n        this.weight = c.weight || \"normal\";\n        this.stretch = c.stretch || \"normal\";\n      }\n      var C = null, D = null, E = null, F = null;\n      function G() {\n        if (null === D)\n          if (J() && /Apple/.test(window.navigator.vendor)) {\n            var a = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent);\n            D = !!a && 603 > parseInt(a[1], 10);\n          } else\n            D = false;\n        return D;\n      }\n      function J() {\n        null === F && (F = !!document.fonts);\n        return F;\n      }\n      function K() {\n        if (null === E) {\n          var a = document.createElement(\"div\");\n          try {\n            a.style.font = \"condensed 100px sans-serif\";\n          } catch (b) {\n          }\n          E = \"\" !== a.style.font;\n        }\n        return E;\n      }\n      function L(a, b) {\n        return [a.style, a.weight, K() ? a.stretch : \"\", \"100px\", b].join(\" \");\n      }\n      B.prototype.load = function(a, b) {\n        var c = this, k = a || \"BESbswy\", r = 0, n = b || 3e3, H = (/* @__PURE__ */ new Date()).getTime();\n        return new Promise(function(a2, b2) {\n          if (J() && !G()) {\n            var M = new Promise(function(a3, b3) {\n              function e() {\n                (/* @__PURE__ */ new Date()).getTime() - H >= n ? b3(Error(\"\" + n + \"ms timeout exceeded\")) : document.fonts.load(L(c, '\"' + c.family + '\"'), k).then(function(c2) {\n                  1 <= c2.length ? a3() : setTimeout(e, 25);\n                }, b3);\n              }\n              e();\n            }), N = new Promise(function(a3, c2) {\n              r = setTimeout(function() {\n                c2(Error(\"\" + n + \"ms timeout exceeded\"));\n              }, n);\n            });\n            Promise.race([N, M]).then(\n              function() {\n                clearTimeout(r);\n                a2(c);\n              },\n              b2\n            );\n          } else\n            m2(function() {\n              function v() {\n                var b3;\n                if (b3 = -1 != f && -1 != g || -1 != f && -1 != h || -1 != g && -1 != h)\n                  (b3 = f != g && f != h && g != h) || (null === C && (b3 = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent), C = !!b3 && (536 > parseInt(b3[1], 10) || 536 === parseInt(b3[1], 10) && 11 >= parseInt(b3[2], 10))), b3 = C && (f == w && g == w && h == w || f == x && g == x && h == x || f == y && g == y && h == y)), b3 = !b3;\n                b3 && (d.parentNode && d.parentNode.removeChild(d), clearTimeout(r), a2(c));\n              }\n              function I() {\n                if ((/* @__PURE__ */ new Date()).getTime() - H >= n)\n                  d.parentNode && d.parentNode.removeChild(d), b2(Error(\"\" + n + \"ms timeout exceeded\"));\n                else {\n                  var a3 = document.hidden;\n                  if (true === a3 || void 0 === a3)\n                    f = e.a.offsetWidth, g = p.a.offsetWidth, h = q.a.offsetWidth, v();\n                  r = setTimeout(I, 50);\n                }\n              }\n              var e = new t(k), p = new t(k), q = new t(k), f = -1, g = -1, h = -1, w = -1, x = -1, y = -1, d = document.createElement(\"div\");\n              d.dir = \"ltr\";\n              u(e, L(c, \"sans-serif\"));\n              u(p, L(c, \"serif\"));\n              u(q, L(c, \"monospace\"));\n              d.appendChild(e.a);\n              d.appendChild(p.a);\n              d.appendChild(q.a);\n              document.body.appendChild(d);\n              w = e.a.offsetWidth;\n              x = p.a.offsetWidth;\n              y = q.a.offsetWidth;\n              I();\n              A(e, function(a3) {\n                f = a3;\n                v();\n              });\n              u(\n                e,\n                L(c, '\"' + c.family + '\",sans-serif')\n              );\n              A(p, function(a3) {\n                g = a3;\n                v();\n              });\n              u(p, L(c, '\"' + c.family + '\",serif'));\n              A(q, function(a3) {\n                h = a3;\n                v();\n              });\n              u(q, L(c, '\"' + c.family + '\",monospace'));\n            });\n        });\n      };\n      \"object\" === typeof module ? module.exports = B : (window.FontFaceObserver = B, window.FontFaceObserver.prototype.load = B.prototype.load);\n    })();\n  }\n});\n\n// ../../library/src/router/utils.ts\nimport React, { useLayoutEffect } from \"react\";\nvar preloadKey = \"preload\";\nfunction isLazyComponentType(componentType) {\n  return typeof componentType === \"object\" && componentType !== null && !React.isValidElement(componentType) && preloadKey in componentType;\n}\nfunction lazy(factory) {\n  const LazyComponent = React.lazy(factory);\n  let factoryPromise;\n  let LoadedComponent;\n  const Component18 = React.forwardRef(function LazyWithPreload(props, ref) {\n    return React.createElement(LoadedComponent ?? LazyComponent, ref ? { ref, ...props } : props);\n  });\n  Component18.preload = () => {\n    if (!factoryPromise) {\n      factoryPromise = factory().then((module) => {\n        LoadedComponent = module.default;\n        return LoadedComponent;\n      });\n    }\n    return factoryPromise;\n  };\n  return Component18;\n}\nfunction getRouteElementId(route, hash2) {\n  if (hash2 && route) {\n    if (route.elements && hash2 in route.elements) {\n      return route.elements[hash2];\n    } else {\n      return hash2;\n    }\n  }\n  return void 0;\n}\nfunction yieldToMain(options) {\n  if (\"scheduler\" in window) {\n    if (\"yield\" in scheduler)\n      return scheduler.yield(options);\n    if (\"postTask\" in scheduler)\n      return scheduler.postTask(() => {\n      }, options);\n  }\n  if ((options == null ? void 0 : options.priority) === \"user-blocking\") {\n    return Promise.resolve();\n  }\n  return new Promise((resolve) => {\n    setTimeout(resolve);\n  });\n}\nasync function yieldBefore(fn, options) {\n  await yieldToMain(options);\n  return fn();\n}\nfunction interactionResponse(options) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, 100);\n    requestAnimationFrame(() => {\n      void yieldBefore(resolve, options);\n    });\n  });\n}\nfunction useAfterPaintEffect(effectFn, deps, opts, useEffectFn = useLayoutEffect) {\n  useEffectFn(() => {\n    const runAfterPaint = async (fn) => {\n      await interactionResponse(opts);\n      return fn();\n    };\n    const runPromise = runAfterPaint(effectFn);\n    return () => {\n      void (async () => {\n        const cleanup = await runPromise;\n        if (!cleanup)\n          return;\n        void runAfterPaint(cleanup);\n      })();\n    };\n  }, deps);\n}\nvar EMPTY_ARRAY = [];\nvar requestIdleCallback = /* @__PURE__ */ (() => {\n  return typeof window !== \"undefined\" ? window.requestIdleCallback || window.setTimeout : setTimeout;\n})();\n\n// ../../library/src/router/useRouteElementId.ts\nimport React5 from \"react\";\n\n// ../../library/src/router/useCurrentRoute.tsx\nimport React4, { useContext } from \"react\";\n\n// ../../library/src/utils/objectKeys.ts\nvar objectKeys = Object.keys;\n\n// ../../library/src/render/utils/isEqual.ts\nfunction hasProp(o, prop) {\n  return Object.prototype.hasOwnProperty.call(o, prop);\n}\nvar equalsKey = \"equals\";\nfunction withEquals(o) {\n  if (o === null)\n    return false;\n  if (!(equalsKey in o))\n    return false;\n  return typeof o.equals === \"function\";\n}\nfunction valueEqual(a, b) {\n  if (a === b)\n    return true;\n  return a !== a && b !== b;\n}\nfunction arrayShallowEqual(a, b) {\n  const length = a.length;\n  if (length !== b.length)\n    return false;\n  for (let i = length; i-- !== 0; ) {\n    if (!valueEqual(a[i], b[i]))\n      return false;\n  }\n  return true;\n}\nfunction arrayDeepEqual(a, b) {\n  const length = a.length;\n  if (length !== b.length)\n    return false;\n  for (let i = length; i-- !== 0; ) {\n    if (!equal(a[i], b[i], true))\n      return false;\n  }\n  return true;\n}\nfunction mapShallowEqual(a, b) {\n  if (a.size !== b.size)\n    return false;\n  for (const [key7, aValue] of a.entries()) {\n    if (!valueEqual(aValue, b.get(key7)))\n      return false;\n  }\n  return true;\n}\nfunction mapDeepEqual(a, b) {\n  if (a.size !== b.size)\n    return false;\n  for (const [key7, aValue] of a.entries()) {\n    if (!equal(aValue, b.get(key7), true))\n      return false;\n  }\n  return true;\n}\nfunction setEqual(a, b) {\n  if (a.size !== b.size)\n    return false;\n  for (const aValue of a.keys()) {\n    if (!b.has(aValue))\n      return false;\n  }\n  return true;\n}\nfunction objectShallowEqual(a, b) {\n  const keys3 = objectKeys(a);\n  if (keys3.length !== objectKeys(b).length)\n    return false;\n  for (const key7 of keys3) {\n    if (!hasProp(b, key7))\n      return false;\n    if (key7 === \"_owner\" && hasProp(a, \"$$typeof\") && a.$$typeof) {\n      continue;\n    }\n    if (!valueEqual(a[key7], b[key7]))\n      return false;\n  }\n  return true;\n}\nfunction objectDeepEqual(a, b) {\n  const keys3 = objectKeys(a);\n  if (keys3.length !== objectKeys(b).length)\n    return false;\n  for (const key7 of keys3) {\n    if (!hasProp(b, key7))\n      return false;\n    if (key7 === \"_owner\" && hasProp(a, \"$$typeof\") && a.$$typeof) {\n      continue;\n    }\n    if (!equal(a[key7], b[key7], true))\n      return false;\n  }\n  return true;\n}\nfunction equal(a, b, deep) {\n  if (a === b)\n    return true;\n  if (!a || !b)\n    return a !== a && b !== b;\n  const typeA = typeof a;\n  const typeB = typeof b;\n  if (typeA !== typeB)\n    return false;\n  if (typeA !== \"object\")\n    return false;\n  const aIsArray = Array.isArray(a);\n  const bIsArray = Array.isArray(b);\n  if (aIsArray && bIsArray) {\n    if (deep) {\n      return arrayDeepEqual(a, b);\n    } else {\n      return arrayShallowEqual(a, b);\n    }\n  } else if (aIsArray !== bIsArray) {\n    return false;\n  }\n  const aIsMap = a instanceof Map;\n  const bIsMap = b instanceof Map;\n  if (aIsMap && bIsMap) {\n    if (deep) {\n      return mapDeepEqual(a, b);\n    } else {\n      return mapShallowEqual(a, b);\n    }\n  } else if (aIsMap !== bIsMap) {\n    return false;\n  }\n  const aIsSet = a instanceof Set;\n  const bIsSet = b instanceof Set;\n  if (aIsSet && bIsSet) {\n    return setEqual(a, b);\n  } else if (aIsSet !== bIsSet) {\n    return false;\n  }\n  const dateA = a instanceof Date;\n  const dateB = b instanceof Date;\n  if (dateA && dateB) {\n    return a.getTime() === b.getTime();\n  } else if (dateA !== dateB) {\n    return false;\n  }\n  const regexpA = a instanceof RegExp;\n  const regexpB = b instanceof RegExp;\n  if (regexpA && regexpB) {\n    return a.toString() === b.toString();\n  } else if (regexpA !== regexpB) {\n    return false;\n  }\n  if (withEquals(a) && withEquals(b)) {\n    return a.equals(b);\n  }\n  if (deep) {\n    return objectDeepEqual(a, b);\n  } else {\n    return objectShallowEqual(a, b);\n  }\n}\nfunction isEqual(a, b, deep = true) {\n  try {\n    return equal(a, b, deep);\n  } catch (error) {\n    if (error instanceof Error && /stack|recursion/iu.exec(error.message)) {\n      console.warn(\"Warning: isEqual does not handle circular references.\", error.name, error.message);\n      return false;\n    }\n    throw error;\n  }\n}\n\n// ../../library/src/router/RouterContext.tsx\nimport React3 from \"react\";\n\n// ../../library/src/router/useGetRouteCallback.ts\nimport React2 from \"react\";\nfunction useGetRouteCallback(routes) {\n  return React2.useCallback((routeId) => routes[routeId], [routes]);\n}\n\n// ../../library/src/router/RouterContext.tsx\nimport { jsx } from \"react/jsx-runtime\";\nvar RouterContext = /* @__PURE__ */ (() => React3.createContext({}))();\nfunction RouterAPIProvider({ api, children }) {\n  return /* @__PURE__ */ jsx(RouterContext.Provider, { value: api, children });\n}\nfunction useRouter() {\n  return React3.useContext(RouterContext);\n}\nfunction RoutesProvider({ routes, children }) {\n  const getRoute = useGetRouteCallback(routes);\n  return /* @__PURE__ */ jsx(RouterContext.Provider, { value: { getRoute }, children });\n}\n\n// ../../library/src/router/useCurrentRoute.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar CurrentRouteContext = /* @__PURE__ */ (() => React4.createContext(void 0))();\nfunction useCurrentRoute() {\n  var _a;\n  const router = useRouter();\n  const override = useContext(CurrentRouteContext);\n  const id = override ?? router.currentRouteId;\n  if (!id)\n    return void 0;\n  const route = (_a = router.getRoute) == null ? void 0 : _a.call(router, id);\n  if (!route)\n    return void 0;\n  return {\n    ...route,\n    id,\n    pathVariables: override ? void 0 : router.currentPathVariables\n  };\n}\nfunction useCurrentRouteKey() {\n  const currentRoute = useCurrentRoute();\n  if (!currentRoute)\n    return void 0;\n  return `${currentRoute.id}-${JSON.stringify(currentRoute.pathVariables)}`;\n}\nfunction useCurrentRouteId() {\n  var _a;\n  return (_a = useCurrentRoute()) == null ? void 0 : _a.id;\n}\nfunction useOnRouteChange(cb) {\n  const currentRoute = useCurrentRoute();\n  const [lastRoute, setLastRoute] = React4.useState(currentRoute);\n  if (isEqual(lastRoute, currentRoute) || !currentRoute)\n    return;\n  setLastRoute(currentRoute);\n  cb(currentRoute);\n}\n\n// ../../library/src/router/useRoute.ts\nfunction useRoute(routeId) {\n  var _a;\n  const routerAPI = useRouter();\n  if (!routeId)\n    return void 0;\n  return (_a = routerAPI.getRoute) == null ? void 0 : _a.call(routerAPI, routeId);\n}\n\n// ../../library/src/router/useRouteElementId.ts\nfunction useRouteElementId(id, targetRouteId) {\n  const currentRoute = useCurrentRoute();\n  const route = useRoute(targetRouteId) ?? currentRoute;\n  return React5.useMemo(() => {\n    if (!route)\n      return id;\n    return getRouteElementId(route, id);\n  }, [id, route]);\n}\n\n// ../../library/src/router/useCurrentPathVariables.tsx\nfunction useCurrentPathVariables() {\n  var _a;\n  return (_a = useCurrentRoute()) == null ? void 0 : _a.pathVariables;\n}\n\n// ../../library/src/router/useRouteHandler.ts\nimport React6 from \"react\";\n\n// ../../library/src/router/useRoutePreloader.ts\nimport { useEffect } from \"react\";\n\n// ../../library/src/utils/utils.ts\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\nfunction isBoolean(value) {\n  return typeof value === \"boolean\";\n}\nfunction isString(value) {\n  return typeof value === \"string\";\n}\nfunction isNumber(value) {\n  return Number.isFinite(value);\n}\nfunction isArray(value) {\n  return Array.isArray(value);\n}\nfunction isObject(value) {\n  return value !== null && typeof value === \"object\" && !isArray(value);\n}\nfunction isUndefined(value) {\n  return typeof value === \"undefined\";\n}\nfunction isNull(value) {\n  return value === null;\n}\nfunction isNullish(value) {\n  return value == null;\n}\nfunction isValidDate(value) {\n  return value instanceof Date && !Number.isNaN(value.getTime());\n}\nfunction isGenerator(value) {\n  return isObject(value) && isFunction(value.return);\n}\nvar noop = () => {\n};\nvar isBot = /* @__PURE__ */ (() => {\n  return typeof window !== \"undefined\" && /bot|-google|google-|yandex|ia_archiver/iu.test(navigator.userAgent);\n})();\n\n// ../../library/src/router/useRoutePreloader.ts\nvar shouldPreloadBasedOnUA = !isBot;\nfunction useRoutePreloader(routeIds, enabled = true) {\n  const { getRoute } = useRouter();\n  useEffect(() => {\n    if (!getRoute || !enabled || !shouldPreloadBasedOnUA)\n      return;\n    for (const routeId of routeIds) {\n      void preloadRoute(getRoute(routeId));\n    }\n  }, [routeIds, getRoute, enabled]);\n}\nasync function preloadRoute(route) {\n  if (!shouldPreloadBasedOnUA || !route)\n    return;\n  const component = route.page;\n  if (!component || !isLazyComponentType(component))\n    return;\n  await yieldToMain();\n  try {\n    await component.preload();\n  } catch (e) {\n    if (false)\n      console.warn(\"Preload failed\", route, e);\n  }\n}\n\n// ../../library/src/router/useRouteHandler.ts\nfunction useRouteHandler(routeId, preload = false, elementId) {\n  const { navigate } = useRouter();\n  useRoutePreloader([routeId], preload);\n  const handler = React6.useCallback(() => navigate == null ? void 0 : navigate(routeId, elementId), [navigate, elementId, routeId]);\n  return handler;\n}\n\n// ../../library/src/router/history.ts\nimport { useCallback as useCallback3, useEffect as useEffect3, useLayoutEffect as useLayoutEffect2, useRef as useRef3 } from \"react\";\n\n// ../../library/src/utils/safeWindow.ts\nvar mockWindow = {\n  addEventListener: () => {\n  },\n  removeEventListener: () => {\n  },\n  dispatchEvent: () => false,\n  ResizeObserver: void 0,\n  onpointerdown: false,\n  onpointermove: false,\n  onpointerup: false,\n  ontouchstart: false,\n  ontouchmove: false,\n  ontouchend: false,\n  onmousedown: false,\n  onmousemove: false,\n  onmouseup: false,\n  devicePixelRatio: 1,\n  scrollX: 0,\n  scrollY: 0,\n  location: {\n    hash: \"\",\n    hostname: \"\",\n    href: \"\",\n    origin: \"\",\n    pathname: \"\",\n    search: \"\"\n  },\n  document: {\n    baseURI: \"\",\n    cookie: \"\",\n    referrer: null\n  },\n  setTimeout: () => 0,\n  clearTimeout: () => {\n  },\n  setInterval: () => 0,\n  clearInterval: () => {\n  },\n  requestAnimationFrame: () => 0,\n  cancelAnimationFrame: () => {\n  },\n  requestIdleCallback: () => 0,\n  getSelection: () => null,\n  matchMedia: (query) => {\n    return {\n      matches: false,\n      media: query,\n      onchange: () => {\n      },\n      addEventListener: () => {\n      },\n      removeEventListener: () => {\n      },\n      addListener: () => {\n      },\n      removeListener: () => {\n      },\n      dispatchEvent: () => false\n    };\n  },\n  innerHeight: 0,\n  innerWidth: 0,\n  SVGSVGElement: {},\n  open: function(_url, _target, _features) {\n  },\n  __framer_events: []\n};\nvar safeWindow = typeof window === \"undefined\" ? mockWindow : window;\n\n// ../../library/src/utils/sendTrackingEvent.ts\nvar timezone;\nvar visitorLocale;\nfunction setTimezoneAndLocaleForTracking() {\n  const resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions();\n  timezone = resolvedDateTimeOptions.timeZone;\n  visitorLocale = resolvedDateTimeOptions.locale;\n}\nrequestIdleCallback(setTimezoneAndLocaleForTracking);\nfunction sendTrackingEvent(eventType, eventData) {\n  if (!safeWindow.__framer_events)\n    return;\n  if (!timezone || !visitorLocale)\n    setTimezoneAndLocaleForTracking();\n  safeWindow.__framer_events.push([\n    eventType,\n    {\n      // Base properties common to all events\n      referrer: null,\n      // The first pageview event will always be sent before hydration, in a script in `exportToHTML.ts`.\n      url: safeWindow.location.href,\n      hostname: safeWindow.location.hostname || null,\n      pathname: safeWindow.location.pathname || null,\n      hash: safeWindow.location.hash || null,\n      search: safeWindow.location.search || null,\n      timezone,\n      locale: visitorLocale,\n      // Additional properties specific to custom events\n      ...eventData\n    }\n  ]);\n}\n\n// ../../library/src/router/computeRelativePath.ts\nfunction computeRelativePath(from, to) {\n  if (!from.startsWith(\"/\") || !to.startsWith(\"/\")) {\n    throw new Error(\"from/to paths are expected to be absolute\");\n  }\n  const [fromDir] = getDirAndFile(from);\n  const [toDir, toFile] = getDirAndFile(to);\n  let relativePath = relative(fromDir, toDir);\n  if (relativePath === \"\")\n    relativePath = \".\";\n  if (!relativePath.startsWith(\".\") && !relativePath.startsWith(\"/\")) {\n    relativePath = \"./\" + relativePath;\n  }\n  return relativePath + \"/\" + toFile;\n}\nfunction getDirAndFile(path) {\n  const index = path.lastIndexOf(\"/\");\n  return [path.substring(0, index + 1), path.substring(index + 1)];\n}\nvar CHAR_DOT = 46;\nvar CHAR_FORWARD_SLASH = 47;\nvar StringPrototypeCharCodeAt = (str, index) => str.charCodeAt(index);\nvar StringPrototypeLastIndexOf = (str, searchString) => str.lastIndexOf(searchString);\nvar StringPrototypeSlice = (str, start, end) => str.slice(start, end);\nfunction relative(from, to) {\n  if (from === to)\n    return \"\";\n  from = \"/\" + normalizeString(from);\n  to = \"/\" + normalizeString(to);\n  if (from === to)\n    return \"\";\n  const fromStart = 1;\n  const fromEnd = from.length;\n  const fromLen = fromEnd - fromStart;\n  const toStart = 1;\n  const toLen = to.length - toStart;\n  const length = fromLen < toLen ? fromLen : toLen;\n  let lastCommonSep = -1;\n  let i = 0;\n  for (; i < length; i++) {\n    const fromCode = StringPrototypeCharCodeAt(from, fromStart + i);\n    if (fromCode !== StringPrototypeCharCodeAt(to, toStart + i))\n      break;\n    else if (fromCode === CHAR_FORWARD_SLASH)\n      lastCommonSep = i;\n  }\n  if (i === length) {\n    if (toLen > length) {\n      if (StringPrototypeCharCodeAt(to, toStart + i) === CHAR_FORWARD_SLASH) {\n        return StringPrototypeSlice(to, toStart + i + 1);\n      }\n      if (i === 0) {\n        return StringPrototypeSlice(to, toStart + i);\n      }\n    } else if (fromLen > length) {\n      if (StringPrototypeCharCodeAt(from, fromStart + i) === CHAR_FORWARD_SLASH) {\n        lastCommonSep = i;\n      } else if (i === 0) {\n        lastCommonSep = 0;\n      }\n    }\n  }\n  let out = \"\";\n  for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n    if (i === fromEnd || StringPrototypeCharCodeAt(from, i) === CHAR_FORWARD_SLASH) {\n      out += out.length === 0 ? \"..\" : \"/..\";\n    }\n  }\n  return `${out}${StringPrototypeSlice(to, toStart + lastCommonSep)}`;\n}\nvar allowAboveRoot = false;\nvar separator = \"/\";\nvar isPathSeparator = (code) => code === CHAR_FORWARD_SLASH;\nfunction normalizeString(path) {\n  let res = \"\";\n  let lastSegmentLength = 0;\n  let lastSlash = -1;\n  let dots = 0;\n  let code = 0;\n  for (let i = 0; i <= path.length; ++i) {\n    if (i < path.length)\n      code = StringPrototypeCharCodeAt(path, i);\n    else if (isPathSeparator(code))\n      break;\n    else\n      code = CHAR_FORWARD_SLASH;\n    if (isPathSeparator(code)) {\n      if (lastSlash === i - 1 || dots === 1) {\n      } else if (dots === 2) {\n        if (res.length < 2 || lastSegmentLength !== 2 || StringPrototypeCharCodeAt(res, res.length - 1) !== CHAR_DOT || StringPrototypeCharCodeAt(res, res.length - 2) !== CHAR_DOT) {\n          if (res.length > 2) {\n            const lastSlashIndex = StringPrototypeLastIndexOf(res, separator);\n            if (lastSlashIndex === -1) {\n              res = \"\";\n              lastSegmentLength = 0;\n            } else {\n              res = StringPrototypeSlice(res, 0, lastSlashIndex);\n              lastSegmentLength = res.length - 1 - StringPrototypeLastIndexOf(res, separator);\n            }\n            lastSlash = i;\n            dots = 0;\n            continue;\n          } else if (res.length !== 0) {\n            res = \"\";\n            lastSegmentLength = 0;\n            lastSlash = i;\n            dots = 0;\n            continue;\n          }\n        }\n        if (allowAboveRoot) {\n          res += res.length > 0 ? `${separator}..` : \"..\";\n          lastSegmentLength = 2;\n        }\n      } else {\n        if (res.length > 0)\n          res += `${separator}${StringPrototypeSlice(path, lastSlash + 1, i)}`;\n        else\n          res = StringPrototypeSlice(path, lastSlash + 1, i);\n        lastSegmentLength = i - lastSlash - 1;\n      }\n      lastSlash = i;\n      dots = 0;\n    } else if (code === CHAR_DOT && dots !== -1) {\n      ++dots;\n    } else {\n      dots = -1;\n    }\n  }\n  return res;\n}\n\n// ../../library/src/router/customNotFoundPagePaths.ts\nvar customNotFoundPagePaths = /* @__PURE__ */ new Set([\"/404.html\", \"/404\", \"/404/\"]);\n\n// ../../library/src/router/pathVariables.ts\nvar pathVariablesRegExpRaw = \":([a-z]\\\\w*)\";\nvar pathVariablesRegExp = /* @__PURE__ */ new RegExp(pathVariablesRegExpRaw, \"gi\");\n\n// ../../library/src/router/fillPathVariables.ts\nfunction fillPathVariables(path, variables) {\n  return path.replace(pathVariablesRegExp, (match, name) => {\n    const value = variables[name];\n    if (typeof value !== \"string\" || value.length === 0)\n      return match;\n    return encodeURIComponent(value);\n  });\n}\n\n// ../../library/src/router/forwardQueryParams.ts\nfunction forwardCurrentQueryParams(href) {\n  const queryParamsString = typeof window !== \"undefined\" ? window.location.search : \"\";\n  if (!queryParamsString) {\n    return href;\n  }\n  return forwardQueryParams(queryParamsString, href);\n}\nfunction forwardQueryParams(queryParamsString, href) {\n  const startOfHash = href.indexOf(\"#\");\n  const hrefWithoutHash = startOfHash === -1 ? href : href.substring(0, startOfHash);\n  const hash2 = startOfHash === -1 ? \"\" : href.substring(startOfHash);\n  const startOfSearch = hrefWithoutHash.indexOf(\"?\");\n  if (startOfSearch === -1) {\n    return hrefWithoutHash + queryParamsString + hash2;\n  }\n  const currentSearchParams = new URLSearchParams(queryParamsString);\n  const newSearchString = hrefWithoutHash.substring(startOfSearch + 1);\n  const newSearchParams = new URLSearchParams(newSearchString);\n  for (const [key7, value] of currentSearchParams) {\n    if (!newSearchParams.has(key7)) {\n      newSearchParams.append(key7, value);\n    }\n  }\n  return hrefWithoutHash.substring(0, startOfSearch + 1) + newSearchParams.toString() + hash2;\n}\n\n// ../../library/src/router/getLocalizedNavigationPath.ts\nasync function replacePathVariables(path, currentLocale, nextLocale, defaultLocale, collectionId, pathVariables, collectionUtils) {\n  var _a;\n  let resultPath = path;\n  let isMissingInLocale = false;\n  const resultPathVariables = { ...pathVariables };\n  const matches = Array.from(resultPath.matchAll(pathVariablesRegExp));\n  const replacements = await Promise.all(\n    matches.map(async (match) => {\n      var _a2;\n      const pathVariableWithDelimiter = match == null ? void 0 : match[0];\n      const pathVariableValue = match == null ? void 0 : match[1];\n      if (!pathVariableWithDelimiter || !pathVariableValue) {\n        throw new Error(\"Failed to replace path variables: unexpected regex match group\");\n      }\n      const currentSlug = pathVariables[pathVariableValue];\n      if (!currentSlug || !isString(currentSlug)) {\n        throw new Error(`No slug found for path variable ${pathVariableValue}`);\n      }\n      const utils = await ((_a2 = collectionUtils == null ? void 0 : collectionUtils[collectionId]) == null ? void 0 : _a2.call(collectionUtils));\n      if (!utils || !currentLocale) {\n        return currentSlug;\n      }\n      const recordId = await utils.getRecordIdBySlug(currentSlug, currentLocale);\n      if (!recordId)\n        return currentSlug;\n      const nextSlug = await utils.getSlugByRecordId(recordId, nextLocale);\n      if (!nextSlug) {\n        isMissingInLocale = true;\n        const defaultLocaleSlug = await utils.getSlugByRecordId(recordId, defaultLocale);\n        if (defaultLocaleSlug) {\n          resultPathVariables[pathVariableValue] = defaultLocaleSlug;\n        }\n        return defaultLocaleSlug ?? currentSlug;\n      }\n      resultPathVariables[pathVariableValue] = nextSlug;\n      return nextSlug;\n    })\n  );\n  let lastIndex = 0;\n  let replacedPath = \"\";\n  let hasMatch = false;\n  for (let i = 0; i < matches.length; i++) {\n    const match = matches[i];\n    const replacement = replacements[i];\n    if (!match || !replacement)\n      continue;\n    replacedPath += resultPath.substring(lastIndex, match.index);\n    lastIndex = (match.index ?? 0) + (((_a = match[0]) == null ? void 0 : _a.length) ?? 0);\n    replacedPath += replacements[i];\n    hasMatch = true;\n  }\n  if (hasMatch) {\n    resultPath = replacedPath;\n  }\n  return {\n    path: resultPath,\n    pathVariables: resultPathVariables,\n    isMissingInLocale\n  };\n}\nasync function getLocalizedNavigationPath({\n  currentLocale,\n  nextLocale,\n  defaultLocale,\n  route,\n  pathVariables,\n  collectionUtils,\n  preserveQueryParams\n}) {\n  const { path } = route;\n  let result = {\n    path,\n    pathVariables,\n    isMissingInLocale: false\n  };\n  if (!path)\n    return result;\n  if (pathVariables && route.collectionId) {\n    try {\n      const pathReplacement = await replacePathVariables(\n        path,\n        currentLocale,\n        nextLocale,\n        defaultLocale,\n        route.collectionId,\n        pathVariables,\n        collectionUtils\n      );\n      result = pathReplacement;\n    } catch {\n    }\n  }\n  if (nextLocale.slug) {\n    result.path = \"/\" + nextLocale.slug + result.path;\n  }\n  if (preserveQueryParams && result.path) {\n    result.path = forwardCurrentQueryParams(result.path);\n  }\n  return result;\n}\n\n// ../../library/src/router/getSitePrefix.ts\nfunction getSitePrefix(siteCanonicalURL) {\n  if (!siteCanonicalURL)\n    return \"\";\n  let url;\n  try {\n    url = new URL(siteCanonicalURL);\n  } catch {\n    return \"\";\n  }\n  if (url.pathname === \"/\" || window.location.origin !== url.origin)\n    return \"\";\n  return url.pathname.endsWith(\"/\") ? url.pathname.slice(0, -1) : url.pathname;\n}\n\n// ../../library/src/router/pageEffects/useViewTransition.ts\nimport { useCallback, useEffect as useEffect2, useRef } from \"react\";\n\n// ../../library/src/router/pageEffects/PageEffectsContext.tsx\nimport React7 from \"react\";\nimport { jsx as jsx3 } from \"react/jsx-runtime\";\nvar defaultSitePageEffects = { global: void 0, routes: {} };\nvar PageEffectsContext = /* @__PURE__ */ React7.createContext(defaultSitePageEffects);\nfunction PageEffectsProvider({ children, value }) {\n  return /* @__PURE__ */ jsx3(PageEffectsContext.Provider, { value, children });\n}\nfunction usePageEffects() {\n  return React7.useContext(PageEffectsContext);\n}\n\n// ../../library/src/router/pageEffects/getPageEffect.ts\nfunction getPageEffectForRoute(currentRouteId, nextRouteId, { global, routes }) {\n  var _a;\n  return ((_a = routes[currentRouteId]) == null ? void 0 : _a[nextRouteId]) || global;\n}\n\n// ../../library/src/router/pageEffects/cssGeneration/linearEasing.ts\nvar step = 10;\nvar maxDuration = 1e4;\nfunction createLinearEasing(generator) {\n  let time = step;\n  let state = generator.next(0);\n  const keyframes2 = [state.value];\n  while (!state.done && time < maxDuration) {\n    state = generator.next(time);\n    keyframes2.push(state.value);\n    time += step;\n  }\n  if (keyframes2.length === 1)\n    keyframes2.push(state.value);\n  return {\n    easing: `linear(${keyframes2.join(\",\")})`,\n    duration: time - step\n  };\n}\n\n// ../../library/src/router/pageEffects/cssGeneration/masks.ts\nvar cssVariable = (name) => `--view-transition-${name}`;\nfunction parseUnit(value) {\n  return [parseFloat(value), value.endsWith(\"px\") ? \"px\" : \"%\"];\n}\nfunction calcMaskPosition(mask) {\n  const { innerWidth, innerHeight } = window;\n  const [x, xUnit] = parseUnit(mask.x);\n  const [y, yUnit] = parseUnit(mask.y);\n  return {\n    x: xUnit === \"px\" ? x : innerWidth * (x / 100),\n    y: yUnit === \"px\" ? y : innerHeight * (y / 100)\n  };\n}\nvar conic = {\n  makeKeyframe: (mask, progress2, page) => {\n    let percentage = 0;\n    if (page === \"exit\" && mask.angularDirection === \"clockwise\" && progress2 === \"start\" || page === \"exit\" && mask.angularDirection === \"counter-clockwise\" && progress2 === \"end\" || page === \"enter\" && mask.angularDirection === \"counter-clockwise\" && progress2 === \"start\" || page === \"enter\" && mask.angularDirection === \"clockwise\" && progress2 === \"end\") {\n      percentage = mask.sweepAngle / 360 * 100;\n    }\n    return `${cssVariable(\"conic-offset\")}: ${percentage}%;`;\n  },\n  makeStyles: (mask, page) => {\n    const offsetToken = `var(${cssVariable(\"conic-offset\")})`;\n    const isTransparentToBlack = page === \"exit\" && mask.angularDirection === \"clockwise\" || page === \"enter\" && mask.angularDirection === \"counter-clockwise\";\n    const firstColor = isTransparentToBlack ? \"transparent\" : \"black\";\n    const secondColor = isTransparentToBlack ? \"black\" : \"transparent\";\n    let gradient = `conic-gradient(from `;\n    gradient += `${mask.angle}deg at ${mask.x} ${mask.y}, `;\n    gradient += `${firstColor} 0%, ${firstColor} ${offsetToken}, `;\n    gradient += `${secondColor} ${offsetToken}, ${secondColor} 100%)`;\n    return `mask-image: ${gradient}; -webkit-mask-image: ${gradient};`;\n  },\n  makePropertyRules: () => `\n        @property ${cssVariable(\"conic-offset\")} {\n            syntax: '<percentage>';\n            initial-value: 0%;\n            inherits: false;\n        }\n    `\n};\nvar circle = {\n  makeKeyframe: (mask, progress2) => {\n    const { x, y } = calcMaskPosition(mask);\n    if (progress2 === \"start\") {\n      return `clip-path: circle(0 at ${x}px ${y}px);`;\n    } else {\n      const endRadius = Math.hypot(Math.max(x, window.innerWidth - x), Math.max(y, window.innerHeight - y));\n      return `clip-path: circle(${endRadius}px at ${x}px ${y}px);`;\n    }\n  }\n};\nvar inset = {\n  makeKeyframe: (mask, progress2) => {\n    const { x, y } = calcMaskPosition(mask);\n    const bottom = window.innerHeight - y;\n    const right = window.innerWidth - x;\n    return progress2 === \"start\" ? `clip-path: inset(${y}px ${right}px ${bottom}px ${x}px round ${mask.round}px);` : `clip-path: inset(0 round 0);`;\n  }\n};\nvar blinds = {\n  makeKeyframe: (mask, progress2, page) => {\n    const [, unit] = parseUnit(mask.width);\n    let width = `0${unit}`;\n    if (progress2 === \"start\" && page === \"exit\" || progress2 === \"end\" && page === \"enter\") {\n      width = mask.width;\n    }\n    return `${cssVariable(\"blinds-width\")}: ${width};`;\n  },\n  makeStyles: (mask, page) => {\n    const widthToken = `var(${cssVariable(\"blinds-width\")})`;\n    const firstColor = page === \"exit\" ? \"transparent\" : \"black\";\n    const secondColor = page === \"exit\" ? \"black\" : \"transparent\";\n    let gradient = `repeating-linear-gradient(`;\n    gradient += mask.angle + 90 + \"deg, \";\n    gradient += `${firstColor} 0px, ${firstColor} ${widthToken}, `;\n    gradient += `${secondColor} ${widthToken}, ${secondColor} ${mask.width})`;\n    return `mask-image: ${gradient}; -webkit-mask-image: ${gradient};`;\n  },\n  makePropertyRules: () => {\n    return `\n            @property ${cssVariable(\"blinds-width\")} {\n                syntax: '<length-percentage>';\n                initial-value: 0px;\n                inherits: false;\n            }\n        `;\n  }\n};\nvar wipe = {\n  makeKeyframe: (_mask, progress2, page) => {\n    const offset = progress2 === \"start\" && page === \"exit\" || progress2 === \"end\" && page === \"enter\" ? 1 : 0;\n    return `${cssVariable(\"wipe-offset\")}: ${offset};`;\n  },\n  makeStyles: (mask, page) => {\n    const offsetToken = `var(${cssVariable(\"wipe-offset\")})`;\n    const firstColor = page === \"exit\" ? \"transparent\" : \"black\";\n    const secondColor = page === \"exit\" ? \"black\" : \"transparent\";\n    let gradient = `linear-gradient(`;\n    gradient += mask.angle + 90 + \"deg, \";\n    gradient += `${firstColor} calc(calc(0% - ${mask.width}) + calc(calc(100% + ${mask.width}) * ${offsetToken})), `;\n    gradient += `${secondColor} calc(calc(100% + ${mask.width}) * ${offsetToken}))`;\n    return `mask-image: ${gradient}; -webkit-mask-image: ${gradient};`;\n  },\n  makePropertyRules: () => {\n    return `\n            @property ${cssVariable(\"wipe-offset\")} {\n                syntax: '<number>';\n                initial-value: 0;\n                inherits: false;\n            }\n        `;\n  }\n};\nvar maskGenerators = { circle, conic, inset, blinds, wipe };\n\n// ../../library/src/router/pageEffects/cssGeneration/page.ts\nvar restState = {\n  opacity: 1,\n  x: \"0px\",\n  y: \"0px\",\n  scale: 1,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  mask: void 0\n};\nfunction valuesToCSSKeyframes(values, progress2, page, maskGenerator) {\n  var _a;\n  let keyframes2 = `\n      opacity: ${values.opacity};\n      transform: translate(${values.x}, ${values.y}) scale(${values.scale}) rotateX(${values.rotateX}deg) rotateY(${values.rotateY}deg) rotateZ(${values.rotate}deg);\n    `;\n  if (values.mask) {\n    keyframes2 += ((_a = maskGenerator == null ? void 0 : maskGenerator.makeKeyframe) == null ? void 0 : _a.call(maskGenerator, values.mask, progress2, page)) || \"\";\n  }\n  return keyframes2;\n}\nfunction getMaskGenerator(type) {\n  return type ? maskGenerators[type] : void 0;\n}\nfunction createPageTransitionRules(page, { transition, ...values }) {\n  var _a;\n  const name = \"view-transition-\" + page;\n  const settings = { duration: \"0s\", easing: \"linear\" };\n  if (transition.type === \"tween\") {\n    settings.duration = transition.duration + \"s\";\n    settings.easing = `cubic-bezier(${transition.ease.join(\",\")})`;\n  } else if (isSpringTransition(transition)) {\n    const { easing, duration } = createLinearEasing(\n      spring({\n        keyframes: [0, 1],\n        ...getSpringOptions(transition),\n        restDelta: 1e-3,\n        restSpeed: 1e-4\n      })\n    );\n    settings.duration = duration + \"ms\";\n    settings.easing = easing;\n  }\n  const maskGenerator = getMaskGenerator((_a = values == null ? void 0 : values.mask) == null ? void 0 : _a.type);\n  let startKeyframes = valuesToCSSKeyframes(values, \"start\", page, maskGenerator);\n  let endKeyframes = valuesToCSSKeyframes({ ...restState, mask: values.mask }, \"end\", page, maskGenerator);\n  if (page === \"exit\") {\n    ;\n    [startKeyframes, endKeyframes] = [endKeyframes, startKeyframes];\n  }\n  return `\n        ${values.mask && (maskGenerator == null ? void 0 : maskGenerator.makePropertyRules) ? maskGenerator.makePropertyRules(values.mask) : \"\"}\n\n        @keyframes ${name} {\n            0% {\n                ${startKeyframes}\n            }\n\n            100% {\n                ${endKeyframes}\n            }\n        }\n\n        ::view-transition-${page === \"enter\" ? \"new\" : \"old\"}(root) {\n            animation-name: ${name};\n            animation-duration: ${settings.duration};\n            animation-delay: ${transition.delay}s;\n            animation-timing-function: ${settings.easing};\n            animation-fill-mode: both;\n            ${values.mask && (maskGenerator == null ? void 0 : maskGenerator.makeStyles) ? maskGenerator.makeStyles(values.mask, page) : \"\"}\n        }\n    `;\n}\nfunction isSpringTransition(transition) {\n  return transition.type === \"spring\";\n}\nfunction getSpringOptions(transition) {\n  if (transition.durationBasedSpring) {\n    return {\n      duration: transition.duration,\n      bounce: transition.bounce\n    };\n  }\n  return {\n    stiffness: transition.stiffness,\n    damping: transition.damping,\n    mass: transition.mass\n  };\n}\n\n// ../../library/src/router/pageEffects/cssGeneration/index.ts\nvar VIEW_TRANSITION_STYLES_ID = \"view-transition-styles\";\nvar defaultPageTransition = {\n  x: \"0px\",\n  y: \"0px\",\n  scale: 1,\n  opacity: 1,\n  rotate3d: false,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  mask: void 0,\n  transition: {\n    type: \"tween\",\n    delay: 0,\n    duration: 0.2,\n    ease: [0.27, 0, 0.51, 1],\n    stiffness: 400,\n    damping: 30,\n    mass: 1\n  }\n};\nfunction createViewTransitionStylesheet({ exit = defaultPageTransition, enter }) {\n  const styleElement = document.createElement(\"style\");\n  styleElement.id = VIEW_TRANSITION_STYLES_ID;\n  let styleContent = `\n        @media (prefers-reduced-motion) {\n            ::view-transition-group(*),\n            ::view-transition-old(*),\n            ::view-transition-new(*) {\n                animation: none !important;\n            }\n        }\n    `;\n  const disableMixPlusLighter = exit.mask || enter.mask || exit.opacity || enter.opacity || exit.transition.delay || enter.transition.delay;\n  if (disableMixPlusLighter) {\n    styleContent += `\n            ::view-transition-old(*),\n            ::view-transition-new(*) {\n                mix-blend-mode: normal;\n            }\n        `;\n  }\n  styleContent += `\n        ::view-transition-old(*),\n        ::view-transition-new(*) {\n            backface-visibility: hidden;\n        }\n    `;\n  styleContent += createPageTransitionRules(\"exit\", exit);\n  styleContent += createPageTransitionRules(\"enter\", enter);\n  styleElement.textContent = styleContent;\n  document.head.appendChild(styleElement);\n}\nfunction removeViewTransitionStylesheet() {\n  requestIdleCallback(() => {\n    frame.render(() => {\n      performance.mark(\"framer-vt-remove\");\n      const element = document.getElementById(VIEW_TRANSITION_STYLES_ID);\n      if (element) {\n        document.head.removeChild(element);\n      }\n    });\n  });\n}\n\n// ../../library/src/router/pageEffects/viewTransition.ts\nvar noop2 = () => {\n};\nfunction supportsViewTransitions() {\n  return Boolean(document.startViewTransition);\n}\nfunction addVTStylesheetAfterInRender(effect) {\n  return new Promise((resolve) => {\n    frame.render(() => {\n      performance.mark(\"framer-vt-style\");\n      createViewTransitionStylesheet(effect);\n      resolve();\n    });\n  });\n}\nasync function startViewTransition(updateView, effect, signal) {\n  if (!supportsViewTransitions()) {\n    void updateView();\n    return;\n  }\n  await addVTStylesheetAfterInRender(effect);\n  if (signal == null ? void 0 : signal.aborted)\n    return;\n  performance.mark(\"framer-vt\");\n  const transition = document.startViewTransition(async () => {\n    performance.mark(\"framer-vt-freeze\");\n    if (signal == null ? void 0 : signal.aborted)\n      return;\n    else\n      signal == null ? void 0 : signal.addEventListener(\"abort\", () => transition.skipTransition());\n    await updateView();\n  });\n  transition.updateCallbackDone.then(() => {\n    performance.mark(\"framer-vt-unfreeze\");\n  }).catch(noop2);\n  Promise.all([transition.ready, transition.finished]).then(() => {\n    performance.mark(\"framer-vt-finished\");\n    removeViewTransitionStylesheet();\n  }).catch(noop2);\n  return transition;\n}\n\n// ../../library/src/router/pageEffects/useViewTransition.ts\nfunction useViewTransition() {\n  const sitePageEffects = usePageEffects();\n  const resolveHasPainted = useRef(void 0);\n  useEffect2(() => {\n    if (resolveHasPainted.current) {\n      resolveHasPainted.current();\n      resolveHasPainted.current = void 0;\n    }\n  });\n  return useCallback(\n    (currentRouteId, nextRouteId, update, yieldBeforeFreezePeriod, signal) => {\n      const pageEffect = getPageEffectForRoute(currentRouteId, nextRouteId, sitePageEffects);\n      if (pageEffect) {\n        const hasPainted = new Promise((resolve) => {\n          resolveHasPainted.current = resolve;\n        });\n        const asyncUpdate = async () => {\n          update();\n          await hasPainted;\n        };\n        const yieldBeforeViewTransition = async () => {\n          await interactionResponse({ priority: \"user-blocking\", signal }).catch(noop);\n          return startViewTransition(asyncUpdate, pageEffect, signal);\n        };\n        if (yieldBeforeFreezePeriod)\n          return yieldBeforeViewTransition();\n        return startViewTransition(asyncUpdate, pageEffect);\n      }\n      update();\n    },\n    [sitePageEffects]\n  );\n}\n\n// ../../library/src/router/useMonitorNextPaintAfterRender.ts\nimport { useCallback as useCallback2, useRef as useRef2 } from \"react\";\nfunction useMonitorNextPaintAfterRender(label) {\n  const startLabel = `${label}-start`;\n  const endLabel = `${label}-end`;\n  const resolveHasPainted = useRef2(void 0);\n  useAfterPaintEffect(\n    () => {\n      if (resolveHasPainted.current) {\n        resolveHasPainted.current();\n        resolveHasPainted.current = void 0;\n      }\n    },\n    void 0,\n    // user-blocking ensures we get the correct timings here. Other priorites might delay this effect a little bit.\n    { priority: \"user-blocking\" }\n  );\n  return useCallback2(() => {\n    const hasPainted = new Promise((resolve) => {\n      resolveHasPainted.current = resolve;\n    });\n    performance.mark(startLabel);\n    return hasPainted.finally(() => {\n      performance.mark(endLabel);\n      performance.measure(label, startLabel, endLabel);\n    }).catch((e) => {\n      console.error(e);\n    });\n  }, [label, startLabel, endLabel]);\n}\n\n// ../../library/src/router/history.ts\nasync function pushRouteState(routeId, route, {\n  currentRoutePath,\n  currentPathVariables,\n  hash: hash2,\n  pathVariables,\n  localeId,\n  preserveQueryParams,\n  siteCanonicalURL\n}, enableAsyncURLUpdate = false, isNavigationTransition = false) {\n  const { path } = route;\n  if (!path)\n    return;\n  const newPath = getPathForRoute(route, {\n    currentRoutePath,\n    currentPathVariables,\n    hash: hash2,\n    pathVariables,\n    preserveQueryParams,\n    siteCanonicalURL\n  });\n  try {\n    const urlUpdatePromise = pushHistoryState(\n      { routeId, hash: hash2, pathVariables, localeId },\n      newPath,\n      enableAsyncURLUpdate,\n      isNavigationTransition\n    );\n    return await urlUpdatePromise;\n  } catch {\n  }\n}\nfunction updateCanonicalURL(url, prevUrl) {\n  requestIdleCallback(() => {\n    const canonical = document.querySelector(\"link[rel='canonical']\");\n    if (!canonical)\n      return;\n    const newURL = new URL(url, prevUrl);\n    newURL.search = \"\";\n    canonical.setAttribute(\"href\", newURL.toString());\n  });\n}\nfunction isHistoryState(data2) {\n  const routeIdKey = \"routeId\";\n  return isObject(data2) && isString(data2[routeIdKey]);\n}\nfunction replaceHistoryState(data2, url, ignoreReplaceStateWrapper = false) {\n  performance.mark(\"framer-history-replace\");\n  const replaceState = ignoreReplaceStateWrapper ? window.history.__proto__.replaceState : window.history.replaceState;\n  replaceState.call(window.history, data2, \"\", url);\n}\nvar maybeHasPopstateBug = true;\nvar isImpactedPopstateBugChromiumVersion = /* @__PURE__ */ (() => {\n  if (typeof navigator === \"undefined\")\n    return false;\n  const userAgent = navigator.userAgent;\n  const chromePos = userAgent.indexOf(\"Chrome/\");\n  const chromiumVersion = +userAgent.slice(chromePos + 7, userAgent.indexOf(\".\", chromePos));\n  return chromiumVersion > 101 && chromiumVersion < 128;\n})();\nasync function pushHistoryState(data2, url, awaitPaintBeforeUpdate = false, isNavigationTransition = false) {\n  if (awaitPaintBeforeUpdate)\n    await interactionResponse({ priority: \"user-blocking\" });\n  performance.mark(\"framer-history-push\");\n  updateCanonicalURL(url, window.location.href);\n  if (!isNavigationTransition) {\n    window.history.pushState(data2, \"\", url);\n    return;\n  }\n  let popstateCalled = false, popstateListener;\n  if (maybeHasPopstateBug) {\n    popstateListener = () => {\n      popstateCalled = true;\n      if (isImpactedPopstateBugChromiumVersion)\n        return;\n      const msg = \"Popstate called after intercept(). Please report this to the Framer team.\";\n      console.error(msg);\n      sendTrackingEvent(\"published_site_load_recoverable_error\", {\n        message: msg\n      });\n    };\n    window.addEventListener(\"popstate\", popstateListener, { once: true });\n  }\n  if (isImpactedPopstateBugChromiumVersion && maybeHasPopstateBug) {\n    window.history.__proto__.pushState.call(window.history, data2, \"\", url);\n  } else {\n    window.history.pushState(data2, \"\", url);\n  }\n  if (maybeHasPopstateBug) {\n    queueMicrotask(() => {\n      if (popstateCalled)\n        return;\n      maybeHasPopstateBug = false;\n      window.removeEventListener(\"popstate\", popstateListener);\n      return;\n    });\n  }\n}\nfunction useReplaceInitialState({\n  disabled,\n  routeId,\n  initialPathVariables,\n  initialLocaleId\n}) {\n  useLayoutEffect2(() => {\n    if (disabled)\n      return;\n    performance.mark(\"framer-history-set-initial-state\");\n    replaceHistoryState(\n      { routeId, pathVariables: initialPathVariables, localeId: initialLocaleId },\n      void 0,\n      true\n    );\n  }, []);\n}\nfunction usePopStateHandler(currentRouteId, setCurrentRouteId) {\n  const startViewTransition2 = useViewTransition();\n  const monitorNextPaintAfterRender = useMonitorNextPaintAfterRender(\"framer-route-change-popstate\");\n  const viewTransitionReady = useRef3(void 0);\n  const popStateHandler = useCallback3(\n    async ({ state }) => {\n      var _a, _b, _c, _d, _e, _f;\n      if (((_a = window.navigation) == null ? void 0 : _a.transition) && ((_c = (_b = window.navigation) == null ? void 0 : _b.transition) == null ? void 0 : _c.navigationType) !== \"traverse\")\n        return;\n      if (!isObject(state))\n        return;\n      const { routeId, hash: hash2, pathVariables, localeId } = state;\n      if (!isString(routeId))\n        return;\n      void monitorNextPaintAfterRender();\n      const changeRoute = () => {\n        setCurrentRouteId(\n          routeId,\n          isString(localeId) ? localeId : void 0,\n          isString(hash2) ? hash2 : void 0,\n          isObject(pathVariables) ? pathVariables : void 0,\n          true,\n          false\n        );\n      };\n      updateCanonicalURL(window.location.href);\n      const transition = await startViewTransition2(currentRouteId.current, routeId, changeRoute, false);\n      if (transition) {\n        void transition.updateCallbackDone.then((_d = viewTransitionReady.current) == null ? void 0 : _d.resolve).catch((_e = viewTransitionReady.current) == null ? void 0 : _e.reject);\n      } else {\n        (_f = viewTransitionReady.current) == null ? void 0 : _f.resolve();\n      }\n    },\n    [currentRouteId, monitorNextPaintAfterRender, setCurrentRouteId, startViewTransition2]\n  );\n  const traversalHandler = useCallback3((event) => {\n    if (event.navigationType !== \"traverse\")\n      return;\n    event.intercept({\n      async handler() {\n        await new Promise((resolve, reject) => {\n          viewTransitionReady.current = { resolve, reject };\n        });\n        viewTransitionReady.current = void 0;\n      },\n      scroll: \"after-transition\"\n    });\n  }, []);\n  useEffect3(() => {\n    var _a;\n    window.addEventListener(\"popstate\", popStateHandler);\n    (_a = window.navigation) == null ? void 0 : _a.addEventListener(\"navigate\", traversalHandler);\n    return () => {\n      var _a2;\n      window.removeEventListener(\"popstate\", popStateHandler);\n      (_a2 = window.navigation) == null ? void 0 : _a2.removeEventListener(\"navigate\", traversalHandler);\n    };\n  }, [popStateHandler, traversalHandler]);\n}\nfunction getHashForRoute(hash2, route, hashVariables) {\n  const resolvedHash = getRouteElementId(route, hash2);\n  if (!resolvedHash)\n    return void 0;\n  const variables = Object.assign({}, route == null ? void 0 : route.elements, hashVariables);\n  return resolvedHash.replace(pathVariablesRegExp, (m2, p1) => String(variables[p1] ?? m2));\n}\nfunction getPathForRoute(route, {\n  currentRoutePath,\n  currentPathVariables,\n  hash: hash2,\n  pathVariables,\n  hashVariables,\n  relative: relative2 = true,\n  preserveQueryParams,\n  onlyHash = false,\n  siteCanonicalURL\n}) {\n  const resolvedHash = getHashForRoute(hash2, route, hashVariables);\n  if (onlyHash)\n    return resolvedHash ?? \"\";\n  let currentPath = currentRoutePath ?? \"/\";\n  if (currentPathVariables) {\n    currentPath = currentPath.replace(pathVariablesRegExp, (m2, p1) => String(currentPathVariables[p1] || m2));\n  }\n  const targetPath = (route == null ? void 0 : route.path) ?? \"/\";\n  let path = targetPath;\n  if (pathVariables) {\n    path = path.replace(pathVariablesRegExp, (m2, p1) => String(pathVariables[p1] || m2));\n  }\n  const isSamePageHashNavigation = currentPath === path && resolvedHash;\n  if (relative2) {\n    if (customNotFoundPagePaths.has(currentPath) && typeof window !== \"undefined\") {\n      const sitePrefix = getSitePrefix(siteCanonicalURL);\n      path = computeRelativePath(window.location.pathname, sitePrefix + path);\n    } else {\n      path = computeRelativePath(currentPath, path);\n    }\n  }\n  if (preserveQueryParams || isSamePageHashNavigation) {\n    path = forwardCurrentQueryParams(path);\n  }\n  if (resolvedHash) {\n    path = `${path}#${resolvedHash}`;\n  }\n  return path;\n}\nasync function handleRedirectForMissingSlugs(route, pathVariables, nextLocale) {\n  if (!route.path)\n    return false;\n  if (!pathVariables)\n    return false;\n  const prefix2 = nextLocale.slug ? `/${nextLocale.slug}` : \"\";\n  const nextLocaleWithDefaultSlugPath = `${prefix2}${fillPathVariables(route.path, pathVariables)}`;\n  const response = await fetch(nextLocaleWithDefaultSlugPath, {\n    method: \"HEAD\",\n    redirect: \"manual\"\n  });\n  const isRedirect = response.type === \"opaqueredirect\";\n  if (isRedirect) {\n    window.location.href = window.location.origin + nextLocaleWithDefaultSlugPath;\n    return true;\n  }\n  return false;\n}\nasync function switchLocale(options) {\n  const result = await getLocalizedNavigationPath(options);\n  if (!result)\n    return;\n  try {\n    localStorage.setItem(\"preferredLocale\", options.nextLocale.code);\n  } catch {\n  }\n  try {\n    if (!isString(result.path)) {\n      throw new Error(\"Expected result.path to be a string\");\n    }\n    if (result.isMissingInLocale) {\n      const hasRedirect = await handleRedirectForMissingSlugs(\n        options.route,\n        result.pathVariables,\n        options.nextLocale\n      );\n      if (hasRedirect)\n        return;\n    }\n  } catch {\n  }\n  return result;\n}\nfunction pushLoadMoreHistory(hash2, paginationInfo) {\n  try {\n    const currentHistoryState = window.history.state;\n    if (!isHistoryState(currentHistoryState))\n      return;\n    const isInitialLoad = (currentHistoryState == null ? void 0 : currentHistoryState.paginationInfo) === void 0 || currentHistoryState.paginationInfo[hash2] === void 0;\n    const newPaginationInfo = { ...currentHistoryState.paginationInfo, [hash2]: paginationInfo };\n    replaceHistoryState({ ...currentHistoryState, paginationInfo: newPaginationInfo }, void 0, isInitialLoad);\n  } catch {\n  }\n}\nfunction useNativeLoadingSpinner() {\n  const navigationPromise = useRef3(Promise.resolve());\n  const navigationController = useRef3();\n  const navigateListener = useCallback3((navigateEvent) => {\n    if (navigateEvent.navigationType === \"traverse\")\n      return;\n    const controller = navigationController.current;\n    controller == null ? void 0 : controller.signal.addEventListener(\"abort\", () => {\n      controller.abort(\"user aborted\");\n    });\n    navigateEvent.intercept({\n      handler: () => navigationPromise.current\n    });\n  }, []);\n  return useCallback3(\n    (promise, updateURL, controller) => {\n      if (!window.navigation) {\n        void updateURL();\n        return;\n      }\n      navigationPromise.current = promise;\n      navigationController.current = controller;\n      window.navigation.addEventListener(\"navigate\", navigateListener);\n      void updateURL(true);\n      promise.catch(noop).finally(() => {\n        window.navigation.removeEventListener(\"navigate\", navigateListener);\n      });\n    },\n    [navigateListener]\n  );\n}\n\n// ../../library/src/router/useRouteAnchor.ts\nimport React8 from \"react\";\nfunction useRouteAnchor(routeId, { elementId, hash: linkHash } = {}) {\n  const { navigate, currentPathVariables, preserveQueryParams, siteCanonicalURL } = useRouter();\n  const route = useRoute(routeId);\n  const currentRouteId = useCurrentRouteId();\n  const currentRoute = useRoute(currentRouteId ?? \"\");\n  useRoutePreloader([routeId], true);\n  const hash2 = linkHash ?? elementId;\n  const href = React8.useMemo(\n    () => getPathForRoute(route, {\n      currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n      currentPathVariables,\n      hash: hash2,\n      preserveQueryParams,\n      siteCanonicalURL\n    }),\n    [currentRoute, currentPathVariables, hash2, preserveQueryParams, route, siteCanonicalURL]\n  );\n  const navigateToRoute = React8.useCallback(() => navigate == null ? void 0 : navigate(routeId, hash2), [hash2, navigate, routeId]);\n  const onClick = React8.useCallback(\n    (event) => {\n      event.preventDefault();\n      navigateToRoute();\n    },\n    [navigateToRoute]\n  );\n  return { onClick, href };\n}\n\n// ../../library/src/router/useLocale.ts\nimport React9 from \"react\";\n\n// ../../library/src/router/getLocalesForCurrentRoute.ts\nasync function getLocalesForCurrentRoute(activeLocale, locales, currentRoute, pathVariables, collectionUtils) {\n  if (!currentRoute)\n    return locales;\n  const slugByLocaleIfCollectionPage = await getSlugByLocaleIfCollectionPage(\n    activeLocale,\n    locales,\n    currentRoute,\n    pathVariables,\n    collectionUtils\n  );\n  const includedLocalesForCurrentRoute = currentRoute.includedLocales;\n  const localesForCurrentRoute = [];\n  for (const locale of locales) {\n    if (includedLocalesForCurrentRoute) {\n      if (!includedLocalesForCurrentRoute.includes(locale.id))\n        continue;\n    }\n    if (slugByLocaleIfCollectionPage) {\n      const hasSlug = slugByLocaleIfCollectionPage.has(locale.id);\n      if (!hasSlug)\n        continue;\n    }\n    localesForCurrentRoute.push(locale);\n  }\n  return localesForCurrentRoute;\n}\nasync function getSlugByLocaleIfCollectionPage(activeLocale, locales, currentRoute, pathVariables, collectionUtils) {\n  var _a;\n  const { collectionId } = currentRoute;\n  if (!collectionId)\n    return null;\n  if (!activeLocale)\n    return null;\n  if (!pathVariables)\n    return null;\n  const { path } = currentRoute;\n  if (!path)\n    return null;\n  const matches = Array.from(path.matchAll(pathVariablesRegExp));\n  const lastMatch = matches.pop();\n  if (!lastMatch)\n    return null;\n  const pathVariableWithDelimiter = lastMatch == null ? void 0 : lastMatch[0];\n  const pathVariableValue = lastMatch == null ? void 0 : lastMatch[1];\n  if (!pathVariableWithDelimiter || !pathVariableValue) {\n    throw new Error(\"Failed to replace path variables: unexpected regex match group\");\n  }\n  const currentSlug = pathVariables[pathVariableValue];\n  if (!currentSlug || !isString(currentSlug)) {\n    throw new Error(`No slug found for path variable ${pathVariableValue}`);\n  }\n  const utils = await ((_a = collectionUtils == null ? void 0 : collectionUtils[collectionId]) == null ? void 0 : _a.call(collectionUtils));\n  if (!utils)\n    return null;\n  const recordId = await utils.getRecordIdBySlug(currentSlug, activeLocale);\n  if (!recordId)\n    return null;\n  const slugById = /* @__PURE__ */ new Map();\n  await Promise.all(\n    locales.map(async (locale) => {\n      const slug = await utils.getSlugByRecordId(recordId, locale);\n      if (!slug)\n        return;\n      slugById.set(locale.id, slug);\n    })\n  );\n  return slugById;\n}\n\n// ../../library/src/router/useLocale.ts\nvar noopAsync = async () => {\n};\nvar defaultLocaleInfo = {\n  activeLocale: null,\n  locales: [],\n  setLocale: noopAsync\n};\nvar LocaleInfoContext = /* @__PURE__ */ React9.createContext(defaultLocaleInfo);\nfunction useLocaleInfo() {\n  return React9.useContext(LocaleInfoContext);\n}\nfunction useLocalesForCurrentRoute() {\n  const { currentRouteId, routes, collectionUtils, currentPathVariables } = useRouter();\n  const { activeLocale, locales } = useLocaleInfo();\n  const [localesForCurrentRoute, setLocalesForCurrentRoute] = React9.useState(\n    () => activeLocale ? [activeLocale] : []\n  );\n  const currentRoute = currentRouteId ? routes == null ? void 0 : routes[currentRouteId] : void 0;\n  React9.useEffect(() => {\n    let active = true;\n    getLocalesForCurrentRoute(activeLocale, locales, currentRoute, currentPathVariables, collectionUtils).then((localesSubset) => {\n      if (!active)\n        return;\n      React9.startTransition(() => {\n        if (localesSubset) {\n          setLocalesForCurrentRoute(localesSubset);\n        } else {\n          setLocalesForCurrentRoute(activeLocale ? [activeLocale] : []);\n        }\n      });\n    }).catch(() => {\n    });\n    return () => {\n      active = false;\n    };\n  }, [activeLocale, locales, collectionUtils, currentRoute, currentPathVariables]);\n  return localesForCurrentRoute;\n}\nfunction useLocalizationInfo() {\n  const { activeLocale, locales, setLocale } = useLocaleInfo();\n  return {\n    activeLocalization: activeLocale,\n    localizations: locales,\n    setLocalization: setLocale\n  };\n}\nfunction useLocaleCode() {\n  var _a;\n  return ((_a = useLocaleInfo().activeLocale) == null ? void 0 : _a.code) ?? \"en-US\";\n}\nfunction useLocale() {\n  return useLocaleCode();\n}\n\n// ../../library/src/router/hydration/reactHydrationINPOptimizer.ts\nimport { useEffect as useEffect4 } from \"react\";\nvar eventsToStop = [\n  \"mousedown\",\n  \"mouseup\",\n  \"touchcancel\",\n  \"touchend\",\n  \"touchstart\",\n  \"auxclick\",\n  \"dblclick\",\n  \"pointercancel\",\n  \"pointerdown\",\n  \"pointerup\",\n  \"dragend\",\n  \"dragstart\",\n  \"drop\",\n  \"compositionend\",\n  \"compositionstart\",\n  \"keydown\",\n  \"keypress\",\n  \"keyup\",\n  \"input\",\n  \"textInput\",\n  // Intentionally camelCase\n  \"copy\",\n  \"cut\",\n  \"paste\",\n  \"click\",\n  \"change\",\n  \"contextmenu\",\n  \"reset\"\n];\nvar stopFn = (event) => {\n  var _a, _b;\n  if (!((_b = (_a = event.target) == null ? void 0 : _a.closest) == null ? void 0 : _b.call(_a, \"#main\")))\n    return;\n  event.stopPropagation();\n  performance.mark(\"framer-react-event-handling-prevented\");\n};\nvar shouldTurnOnEventHandling = false;\nfunction turnOffReactEventHandling() {\n  if (!eventsToStop)\n    return;\n  shouldTurnOnEventHandling = true;\n  performance.mark(\"framer-react-event-handling-start\");\n  const options = { capture: true };\n  eventsToStop.forEach((event) => document.body.addEventListener(event, stopFn, options));\n}\nfunction TurnOnReactEventHandling() {\n  useEffect4(() => {\n    if (!shouldTurnOnEventHandling || !eventsToStop)\n      return;\n    const options = { capture: true };\n    eventsToStop.forEach((event) => document.body.removeEventListener(event, stopFn, options));\n    eventsToStop = void 0;\n    performance.mark(\"framer-react-event-handling-end\");\n  }, []);\n  return null;\n}\n\n// ../../library/src/router/hydration/SetGlobalHydrationState.tsx\nimport { useEffect as useEffect5, useRef as useRef4 } from \"react\";\nvar hydrationRunning = false;\nfunction setInitialHydrationState() {\n  hydrationRunning = true;\n}\nfunction setHydrationDone() {\n  hydrationRunning = false;\n}\nfunction useIsHydrationOrSSR() {\n  const isHydrationOrSSR = useRef4(typeof window === \"undefined\" || hydrationRunning);\n  useEffect5(() => {\n    isHydrationOrSSR.current = false;\n  }, []);\n  return isHydrationOrSSR;\n}\n\n// ../../library/src/router/hydration/hydrationTimings.ts\nimport { useEffect as useEffect6, useInsertionEffect, useLayoutEffect as useLayoutEffect3 } from \"react\";\nfunction measureSafe(name, start, end) {\n  try {\n    performance.measure(name, start, end);\n  } catch (e) {\n    console.warn(`Could not measure ${name}`, e);\n  }\n}\nvar shouldMark = false;\nfunction markHydrationStart() {\n  shouldMark = true;\n  performance.mark(\"framer-hydration-start\");\n}\nvar routerHydrationInsertionEffectStartHasRun = false;\nvar routerHydrationLayoutEffectStartHasRun = false;\nvar routerHydrationEffectStartHasRun = false;\nfunction useMarkRouterEffects() {\n  const hydrationMarkPrefix = \"framer-hydration-router\";\n  useInsertionEffect(() => {\n    if (routerHydrationInsertionEffectStartHasRun || !shouldMark)\n      return;\n    routerHydrationInsertionEffectStartHasRun = true;\n    performance.mark(`${hydrationMarkPrefix}-insertion-effect`);\n  }, []);\n  useLayoutEffect3(() => {\n    if (routerHydrationLayoutEffectStartHasRun || !shouldMark)\n      return;\n    routerHydrationLayoutEffectStartHasRun = true;\n    performance.mark(`${hydrationMarkPrefix}-layout-effect`);\n  }, []);\n  useEffect6(() => {\n    if (routerHydrationEffectStartHasRun || !shouldMark)\n      return;\n    routerHydrationEffectStartHasRun = true;\n    performance.mark(`${hydrationMarkPrefix}-effect`);\n  }, []);\n}\nvar hydrationInsertionEffectStartHasRun = false;\nvar hydrationLayoutEffectStartHasRun = false;\nvar hydrationEffectStartHasRun = false;\nvar wasInBackground = false;\nfunction useMarkSuspenseEffectsStart() {\n  const hydrationMarkPrefix = \"framer-hydration-\";\n  const hydrationLayoutEffectsEnd = `${hydrationMarkPrefix}layout-effects-end`;\n  const hydrationEffectsEnd = `${hydrationMarkPrefix}effects-end`;\n  const hydrationBrowserRenderStart = `${hydrationMarkPrefix}browser-render-start`;\n  const hydrationRenderEnd = `${hydrationMarkPrefix}render-end`;\n  useInsertionEffect(() => {\n    if (hydrationInsertionEffectStartHasRun || !shouldMark)\n      return;\n    hydrationInsertionEffectStartHasRun = true;\n    performance.mark(hydrationRenderEnd);\n    measureSafe(`${hydrationMarkPrefix}render`, `${hydrationMarkPrefix}start`, hydrationRenderEnd);\n    performance.mark(`${hydrationMarkPrefix}insertion-effects-start`);\n  }, []);\n  useLayoutEffect3(() => {\n    if (hydrationLayoutEffectStartHasRun || !shouldMark)\n      return;\n    hydrationLayoutEffectStartHasRun = true;\n    performance.mark(`${hydrationMarkPrefix}layout-effects-start`);\n    if (document.visibilityState !== \"visible\") {\n      wasInBackground = true;\n      return;\n    }\n    requestAnimationFrame(() => {\n      var _a, _b;\n      performance.mark(hydrationBrowserRenderStart);\n      measureSafe(\n        `${hydrationMarkPrefix}uho`,\n        ((_a = performance.getEntriesByName(hydrationEffectsEnd)[0]) == null ? void 0 : _a.name) ?? ((_b = performance.getEntriesByName(hydrationLayoutEffectsEnd)[0]) == null ? void 0 : _b.name),\n        hydrationBrowserRenderStart\n      );\n    });\n  }, []);\n  useEffect6(() => {\n    var _a;\n    if (hydrationEffectStartHasRun || !shouldMark)\n      return;\n    hydrationEffectStartHasRun = true;\n    const hydrationEffectsStart = `${hydrationMarkPrefix}effects-start`;\n    performance.mark(hydrationEffectsStart);\n    const hasPaintStarted = (_a = performance.getEntriesByName(hydrationBrowserRenderStart)[0]) == null ? void 0 : _a.name;\n    if (!hasPaintStarted) {\n      measureSafe(`${hydrationMarkPrefix}commit`, hydrationLayoutEffectsEnd, hydrationEffectsStart);\n      performance.mark(`${hydrationMarkPrefix}effects-sync`);\n    }\n  }, []);\n  return null;\n}\nvar hydrationInsertionEffectHasRun = false;\nvar hydrationLayoutEffectHasRun = false;\nvar hydrationEffectHasRun = false;\nfunction useMarkSuspenseEffectEnd() {\n  const hydrationMarkPrefix = \"framer-hydration-\";\n  const hydrationLayoutEffectsEnd = `${hydrationMarkPrefix}layout-effects-end`;\n  const hydrationEffectsEnd = `${hydrationMarkPrefix}effects-end`;\n  const hydrationBrowserRenderStart = `${hydrationMarkPrefix}browser-render-start`;\n  const hydrationStart = `${hydrationMarkPrefix}start`;\n  const hydrationInsertionEffectsEnd = `${hydrationMarkPrefix}insertion-effects-end`;\n  const hydrationFP = `${hydrationMarkPrefix}first-paint`;\n  const hydrationAnimationFrameEnd = `${hydrationMarkPrefix}browser-raf-end`;\n  useInsertionEffect(() => {\n    if (hydrationInsertionEffectHasRun || !shouldMark)\n      return;\n    hydrationInsertionEffectHasRun = true;\n    performance.mark(hydrationInsertionEffectsEnd);\n    measureSafe(\n      `${hydrationMarkPrefix}insertion-effects`,\n      `${hydrationMarkPrefix}insertion-effects-start`,\n      hydrationInsertionEffectsEnd\n    );\n  }, []);\n  useLayoutEffect3(() => {\n    if (hydrationLayoutEffectHasRun || !shouldMark)\n      return;\n    hydrationLayoutEffectHasRun = true;\n    performance.mark(hydrationLayoutEffectsEnd);\n    measureSafe(\n      `${hydrationMarkPrefix}layout-effects`,\n      `${hydrationMarkPrefix}layout-effects-start`,\n      hydrationLayoutEffectsEnd\n    );\n    if (wasInBackground || document.visibilityState !== \"visible\")\n      return;\n    requestAnimationFrame(() => {\n      performance.mark(hydrationAnimationFrameEnd);\n      measureSafe(`${hydrationMarkPrefix}raf`, hydrationBrowserRenderStart, hydrationAnimationFrameEnd);\n      void yieldBefore(() => {\n        performance.mark(hydrationFP);\n        measureSafe(`${hydrationMarkPrefix}time-to-first-paint`, hydrationStart, hydrationFP);\n        measureSafe(`${hydrationMarkPrefix}browser-render`, hydrationAnimationFrameEnd, hydrationFP);\n      });\n    });\n  }, []);\n  useEffect6(() => {\n    var _a, _b;\n    if (hydrationEffectHasRun || !shouldMark)\n      return;\n    hydrationEffectHasRun = true;\n    performance.mark(hydrationEffectsEnd);\n    measureSafe(\n      `${hydrationMarkPrefix}effects`,\n      ((_a = performance.getEntriesByName(hydrationFP)[0]) == null ? void 0 : _a.name) ?? ((_b = performance.getEntriesByName(`${hydrationMarkPrefix}effects-start`)[0]) == null ? void 0 : _b.name),\n      hydrationEffectsEnd\n    );\n  }, []);\n  return null;\n}\nfunction MarkSuspenseEffectsStart() {\n  useMarkSuspenseEffectsStart();\n  return null;\n}\nfunction MarkSuspenseEffectsEnd() {\n  useMarkSuspenseEffectEnd();\n  return null;\n}\nvar MarkSuspenseEffects = { Start: MarkSuspenseEffectsStart, End: MarkSuspenseEffectsEnd };\n\n// ../../library/src/router/error-boundary/NotFoundErrorBoundary.tsx\nimport { Component } from \"react\";\n\n// ../../library/src/router/renderPage.tsx\nimport React10 from \"react\";\nfunction renderPage(Page4, defaultPageStyle) {\n  const props = { style: defaultPageStyle, \"data-framer-root\": \"\" };\n  return React10.isValidElement(Page4) ? React10.cloneElement(Page4, props) : React10.createElement(Page4, props);\n}\n\n// ../../library/src/router/error-boundary/NotFoundErrorBoundary.tsx\nvar NotFoundError = class extends Error {\n};\nvar NotFoundErrorBoundaryCaughtError = class extends Error {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"cause\");\n  }\n};\nvar NotFoundErrorBoundary = class extends Component {\n  constructor(props) {\n    super(props);\n    this.state = { error: void 0, forceUpdateKey: props.forceUpdateKey };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  /** Resets the error when forceUpdateKey gets bumped. */\n  static getDerivedStateFromProps(nextProps, prevState) {\n    if (nextProps.forceUpdateKey !== prevState.forceUpdateKey) {\n      const newState = {\n        forceUpdateKey: nextProps.forceUpdateKey\n      };\n      if (prevState.error) {\n        newState.error = void 0;\n      }\n      return newState;\n    }\n    return null;\n  }\n  render() {\n    if (this.state.error === void 0) {\n      return this.props.children;\n    }\n    if (!(this.state.error instanceof NotFoundError)) {\n      const error = new NotFoundErrorBoundaryCaughtError();\n      error.cause = this.state.error;\n      throw error;\n    }\n    const { notFoundPage, defaultPageStyle } = this.props;\n    if (!notFoundPage) {\n      throw this.state.error;\n    }\n    return renderPage(notFoundPage, defaultPageStyle);\n  }\n};\n\n// ../../library/src/router/inferInitialRouteFromPath.ts\nvar memoPathRoutes;\nvar memoPaths;\nvar lastRoutes;\nfunction getRouteInfoMemo(routes) {\n  if (lastRoutes !== routes) {\n    memoPathRoutes = {};\n    for (const [routeId, { path }] of Object.entries(routes)) {\n      if (path)\n        memoPathRoutes[path] = { path, depth: pathDepth(path), routeId };\n    }\n    memoPaths = Object.values(memoPathRoutes);\n    memoPaths.sort(({ depth: depth1 }, { depth: depth2 }) => depth2 - depth1);\n    lastRoutes = routes;\n  }\n  return [memoPathRoutes, memoPaths];\n}\nfunction inferInitialRouteFromPath(routes, decodedLocationPath, fallback = true, locales = []) {\n  const [pathRoutes, paths] = getRouteInfoMemo(routes);\n  let activeLocale;\n  let localeId;\n  let locationPath = decodedLocationPath;\n  if (locales.length > 0) {\n    const firstPathSegment = locationPath.split(\"/\").find(Boolean);\n    if (firstPathSegment) {\n      activeLocale = locales.find(({ slug }) => slug === firstPathSegment);\n      if (activeLocale) {\n        localeId = activeLocale.id;\n        locationPath = locationPath.substring(activeLocale.slug.length + 1);\n      }\n    }\n    if (!localeId) {\n      const defaultLocale = locales.find(({ slug }) => slug === \"\");\n      if (defaultLocale) {\n        localeId = defaultLocale.id;\n      }\n    }\n  }\n  const exactMatch = pathRoutes[locationPath];\n  if (exactMatch) {\n    const match = matchPath(locationPath, exactMatch.path);\n    if (match.isMatch)\n      return { routeId: exactMatch.routeId, localeId, pathVariables: match.pathVariables };\n  }\n  for (const { path, routeId } of paths) {\n    const match = matchPath(locationPath, path);\n    if (match.isMatch)\n      return { routeId, localeId, pathVariables: match.pathVariables };\n  }\n  if (!fallback)\n    throw new Error(\"No exact match found for path\");\n  const rootPath = pathRoutes[\"/\"];\n  if (rootPath)\n    return { routeId: rootPath.routeId, localeId };\n  const firstRoute = Object.keys(routes)[0];\n  if (!firstRoute)\n    throw new Error(\"Router should not have undefined routes\");\n  return { routeId: firstRoute, localeId };\n}\nfunction pathDepth(path) {\n  const pathWithTrimmedSlashes = path.replace(/^\\/|\\/$/gu, \"\");\n  if (pathWithTrimmedSlashes === \"\")\n    return 0;\n  return pathWithTrimmedSlashes.split(\"/\").length;\n}\nfunction matchPath(path, routePath) {\n  const pathVariablesKeys = [];\n  const safeRoutePath = escapeStringRegExp(routePath);\n  const routePathRegExpString = safeRoutePath.replace(pathVariablesRegExp, (_, name) => {\n    pathVariablesKeys.push(name);\n    return \"([^/]+)\";\n  });\n  const routePathRegExp = new RegExp(routePathRegExpString + \"$\");\n  const matches = path.match(routePathRegExp);\n  if (!matches)\n    return { isMatch: false };\n  if (matches.length === 1)\n    return { isMatch: true };\n  const pathVariables = {};\n  const pathVariablesValues = matches.slice(1);\n  for (let i = 0; i < pathVariablesKeys.length; ++i) {\n    const key7 = pathVariablesKeys[i];\n    if (key7 === void 0)\n      continue;\n    const value = pathVariablesValues[i];\n    const existingValue = pathVariables[key7];\n    if (existingValue) {\n      if (existingValue !== value) {\n        return { isMatch: false };\n      } else {\n        continue;\n      }\n    }\n    if (value === void 0) {\n      throw new Error(\"Path variable values cannot be undefined\");\n    }\n    pathVariables[key7] = value;\n  }\n  return { isMatch: true, pathVariables };\n}\nfunction escapeStringRegExp(string) {\n  return string.replace(/[|\\\\{}()[\\]^$+*?.]/gu, \"\\\\$&\").replace(/-/gu, \"\\\\x2d\");\n}\n\n// ../../library/src/utils/warnOnce.ts\nvar warningMessages = /* @__PURE__ */ new Set();\nfunction warnOnce(keyMessage, ...rest) {\n  if (warningMessages.has(keyMessage))\n    return;\n  warningMessages.add(keyMessage);\n  console.warn(keyMessage, ...rest);\n}\n\n// ../../library/src/utils/deprecation.ts\nfunction deprecationWarning(removedItem, removalVersion, replacement) {\n  const replacementText = replacement ? `, use ${replacement} instead` : \"\";\n  const warningText = `Deprecation warning: ${removedItem} will be removed in version ${removalVersion}${replacementText}.`;\n  warnOnce(warningText);\n}\n\n// ../../library/src/animation/Animatable/Observers.ts\nvar Observers = class {\n  constructor() {\n    __publicField(this, \"observers\", /* @__PURE__ */ new Set());\n    __publicField(this, \"transactions\", {});\n  }\n  add(observer) {\n    this.observers.add(observer);\n    let isCalled = false;\n    return () => {\n      if (isCalled) {\n        return;\n      }\n      isCalled = true;\n      this.remove(observer);\n    };\n  }\n  remove(observer) {\n    this.observers.delete(observer);\n  }\n  notify(change, transaction) {\n    if (transaction) {\n      const accumulatedChange = this.transactions[transaction] || change;\n      accumulatedChange.value = change.value;\n      this.transactions[transaction] = accumulatedChange;\n    } else {\n      this.callObservers(change);\n    }\n  }\n  finishTransaction(transaction) {\n    const accumulatedChange = this.transactions[transaction];\n    delete this.transactions[transaction];\n    return this.callObservers(accumulatedChange, transaction);\n  }\n  callObservers(change, transaction) {\n    const finishObservers = [];\n    new Set(this.observers).forEach((observer) => {\n      if (typeof observer === \"function\") {\n        observer(change, transaction);\n      } else {\n        observer.update(change, transaction);\n        finishObservers.push(observer.finish);\n      }\n    });\n    return finishObservers;\n  }\n};\n\n// ../../library/src/animation/Animatable/Animatable.ts\nvar Animatable = /* @__PURE__ */ (() => {\n  function Animatable2(value) {\n    deprecationWarning(\"Animatable()\", \"2.0.0\", \"the new animation API (https://www.framer.com/api/animation/)\");\n    return isAnimatable(value) ? value : new AnimatableValue(value);\n  }\n  Animatable2.transaction = (update) => {\n    const transactionId = Math.random();\n    const updatedValues = /* @__PURE__ */ new Set();\n    const updater = (animatable, value) => {\n      animatable.set(value, transactionId);\n      updatedValues.add(animatable);\n    };\n    update(updater, transactionId);\n    const finishObservers = [];\n    updatedValues.forEach((value) => {\n      finishObservers.push(...value.finishTransaction(transactionId));\n    });\n    finishObservers.forEach((finish) => {\n      finish(transactionId);\n    });\n  };\n  Animatable2.getNumber = (value, defaultValue = 0) => {\n    return Animatable2.get(value, defaultValue);\n  };\n  Animatable2.get = (value, defaultValue) => {\n    if (value === void 0 || value === null) {\n      return defaultValue;\n    }\n    if (isAnimatable(value)) {\n      return value.get();\n    }\n    return value;\n  };\n  Animatable2.objectToValues = (object) => {\n    if (!object) {\n      return object;\n    }\n    const result = {};\n    for (const key7 in object) {\n      const value = object[key7];\n      if (isAnimatable(value)) {\n        result[key7] = value.get();\n      } else {\n        result[key7] = value;\n      }\n    }\n    return result;\n  };\n  return Animatable2;\n})();\nvar onUpdateKey = \"onUpdate\";\nvar finishTransactionKey = \"finishTransaction\";\nfunction isAnimatable(value) {\n  return value !== null && typeof value === \"object\" && onUpdateKey in value && value[onUpdateKey] instanceof Function && finishTransactionKey in value && value[finishTransactionKey] instanceof Function;\n}\nfunction animatableInterpolation(value, currentInterpolation) {\n  return {\n    interpolate(from, to) {\n      const fromValue = from.get();\n      const toValue = to.get();\n      const result = Animatable(fromValue);\n      return (progress2) => {\n        const v = currentInterpolation.interpolate(fromValue, toValue)(progress2);\n        result.set(v);\n        return result;\n      };\n    },\n    difference(from, to) {\n      const v = from.get();\n      return currentInterpolation.difference(v, to.get());\n    }\n  };\n}\nvar AnimatableValue = class {\n  constructor(value) {\n    this.value = value;\n    __publicField(this, \"observers\", new Observers());\n  }\n  static interpolationFor(value, currentInterpolation) {\n    if (isAnimatable(value)) {\n      return animatableInterpolation(value, currentInterpolation);\n    }\n  }\n  get() {\n    return this.value;\n  }\n  set(value, transaction) {\n    const oldValue = this.value;\n    if (isAnimatable(value)) {\n      value = value.get();\n    }\n    this.value = value;\n    const change = {\n      value,\n      oldValue\n    };\n    this.observers.notify(change, transaction);\n  }\n  finishTransaction(transaction) {\n    return this.observers.finishTransaction(transaction);\n  }\n  onUpdate(handler) {\n    return this.observers.add(handler);\n  }\n};\n\n// ../../library/src/render/utils/roundedNumber.ts\nfunction roundedNumber(value, decimals) {\n  const d = Math.round(Math.abs(decimals));\n  const multiplier = 10 ** d;\n  return Math.round(value * multiplier) / multiplier;\n}\nfunction roundedNumberString(value, decimals) {\n  const result = value.toFixed(decimals);\n  return decimals === 0 ? result : `${+result}`;\n}\nfunction roundWithOffset(value, offset) {\n  if (offset === 0) {\n    return Math.round(value);\n  }\n  offset -= offset | 0;\n  if (offset < 0) {\n    offset = 1 - offset;\n  }\n  return Math.round(value - offset) + offset;\n}\n\n// ../../library/src/render/types/Point.ts\nfunction Point(x, y) {\n  return { x, y };\n}\n((Point2) => {\n  Point2.isQuadrilateralPoints = (points) => {\n    return (points == null ? void 0 : points.length) === 4;\n  };\n  Point2.add = (...args) => {\n    return args.reduce(\n      (previousValue, currentValue) => {\n        return { x: previousValue.x + currentValue.x, y: previousValue.y + currentValue.y };\n      },\n      { x: 0, y: 0 }\n    );\n  };\n  Point2.subtract = (a, b) => {\n    return { x: a.x - b.x, y: a.y - b.y };\n  };\n  Point2.multiply = (a, b) => {\n    return { x: a.x * b, y: a.y * b };\n  };\n  Point2.divide = (a, b) => {\n    return { x: a.x / b, y: a.y / b };\n  };\n  Point2.absolute = (point) => {\n    return {\n      x: Math.abs(point.x),\n      y: Math.abs(point.y)\n    };\n  };\n  Point2.reverse = (point) => {\n    return {\n      x: point.x * -1,\n      y: point.y * -1\n    };\n  };\n  Point2.pixelAligned = (point, offset = { x: 0, y: 0 }) => {\n    return {\n      x: roundWithOffset(point.x, offset.x),\n      y: roundWithOffset(point.y, offset.y)\n    };\n  };\n  Point2.distance = (a, b) => {\n    const deltaX = Math.abs(a.x - b.x);\n    const deltaY = Math.abs(a.y - b.y);\n    return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n  };\n  Point2.angle = (a, b) => {\n    return Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI - 90;\n  };\n  Point2.angleFromX = (a, b) => {\n    return Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI;\n  };\n  Point2.isEqual = (a, b) => {\n    return a.x === b.x && a.y === b.y;\n  };\n  Point2.rotationNormalizer = () => {\n    let lastValue;\n    return (value) => {\n      if (typeof lastValue !== \"number\") {\n        lastValue = value;\n      }\n      const diff = lastValue - value;\n      const maxDiff = Math.abs(diff) + 180;\n      const nTimes = Math.floor(maxDiff / 360);\n      if (diff < 180) {\n        value -= nTimes * 360;\n      }\n      if (diff > 180) {\n        value += nTimes * 360;\n      }\n      lastValue = value;\n      return value;\n    };\n  };\n  function center(a, b) {\n    return {\n      x: (a.x + b.x) / 2,\n      y: (a.y + b.y) / 2\n    };\n  }\n  Point2.center = center;\n  function centroid(points) {\n    let sumX = 0;\n    let sumY = 0;\n    points.forEach((point) => {\n      sumX += point.x;\n      sumY += point.y;\n    });\n    const centroidX = sumX / points.length;\n    const centroidY = sumY / points.length;\n    return { x: centroidX, y: centroidY };\n  }\n  Point2.centroid = centroid;\n  function sortClockwise(points) {\n    const centerPoint = Point2.centroid(points);\n    const angles = /* @__PURE__ */ new Map();\n    for (let i = 0; i < points.length; i++) {\n      const point = points[i];\n      if (!point)\n        continue;\n      angles.set(point, Math.atan2(point.y - centerPoint.y, point.x - centerPoint.x));\n    }\n    return points.sort((a, b) => (angles.get(a) ?? 0) - (angles.get(b) ?? 0));\n  }\n  Point2.sortClockwise = sortClockwise;\n})(Point || (Point = {}));\n\n// ../../library/src/animation/Animators/BezierAnimator.ts\nvar BezierDefaults = {\n  curve: \"ease\" /* Ease */,\n  duration: 1\n};\nfunction controlPointsForCurve(curve) {\n  switch (curve) {\n    case \"linear\" /* Linear */:\n      return [0, 0, 1, 1];\n    case \"ease\" /* Ease */:\n      return [0.25, 0.1, 0.25, 1];\n    case \"ease-in\" /* EaseIn */:\n      return [0.42, 0, 1, 1];\n    case \"ease-out\" /* EaseOut */:\n      return [0, 0, 0.58, 1];\n    case \"ease-in-out\" /* EaseInOut */:\n      return [0.42, 0, 0.58, 1];\n  }\n}\nvar BezierAnimator = class {\n  constructor(options, interpolation) {\n    this.interpolation = interpolation;\n    __publicField(this, \"unitBezier\");\n    __publicField(this, \"options\");\n    __publicField(this, \"current\");\n    __publicField(this, \"destination\");\n    __publicField(this, \"interpolator\");\n    __publicField(this, \"progress\", 0);\n    __publicField(this, \"next\", (delta) => {\n      const { duration } = this.options;\n      this.progress += delta / duration;\n      const value = this.unitBezier.solve(this.progress, this.solveEpsilon(duration));\n      this.current = this.interpolator(value);\n      return this.current;\n    });\n    this.options = { ...BezierDefaults, ...options };\n    let controlPoints;\n    if (typeof this.options.curve === \"string\") {\n      controlPoints = controlPointsForCurve(this.options.curve);\n    } else {\n      controlPoints = this.options.curve;\n    }\n    const [p1x, p1y, p2x, p2y] = controlPoints;\n    this.unitBezier = new UnitBezier(Point(p1x, p1y), Point(p2x, p2y));\n  }\n  setFrom(value) {\n    this.current = value;\n    this.updateInterpolator();\n  }\n  setTo(value) {\n    this.destination = value;\n    this.updateInterpolator();\n  }\n  isReady() {\n    return this.interpolator !== void 0;\n  }\n  updateInterpolator() {\n    if (this.current === void 0 || this.destination === void 0) {\n      return;\n    }\n    this.interpolator = this.interpolation.interpolate(this.current, this.destination);\n  }\n  isFinished() {\n    return this.progress >= 1;\n  }\n  solveEpsilon(duration) {\n    return 1 / (200 * duration);\n  }\n};\nvar UnitBezier = class {\n  constructor(point1, point2) {\n    __publicField(this, \"a\");\n    __publicField(this, \"b\");\n    __publicField(this, \"c\");\n    this.c = Point.multiply(point1, 3);\n    this.b = Point.subtract(Point.multiply(Point.subtract(point2, point1), 3), this.c);\n    this.a = Point.subtract(Point.subtract(Point(1, 1), this.c), this.b);\n  }\n  solve(x, epsilon2) {\n    return this.sampleY(this.solveForT(x, epsilon2));\n  }\n  sampleX(t) {\n    return ((this.a.x * t + this.b.x) * t + this.c.x) * t;\n  }\n  sampleY(t) {\n    return ((this.a.y * t + this.b.y) * t + this.c.y) * t;\n  }\n  sampleDerivativeX(t) {\n    return (3 * this.a.x * t + 2 * this.b.x) * t + this.c.x;\n  }\n  solveForT(x, epsilon2) {\n    let t0, t1, t2, x2, d2, i;\n    t2 = x;\n    for (i = 0; i < 8; ++i) {\n      x2 = this.sampleX(t2) - x;\n      if (Math.abs(x2) < epsilon2)\n        return t2;\n      d2 = this.sampleDerivativeX(t2);\n      if (Math.abs(d2) < epsilon2)\n        break;\n      t2 = t2 - x2 / d2;\n    }\n    t0 = 0;\n    t1 = 1;\n    t2 = x;\n    if (t2 < t0)\n      return t0;\n    if (t2 > t1)\n      return t1;\n    while (t0 < t1) {\n      x2 = this.sampleX(t2);\n      if (Math.abs(x2 - x) < epsilon2)\n        return t2;\n      if (x > x2)\n        t0 = t2;\n      else\n        t1 = t2;\n      t2 = (t1 - t0) * 0.5 + t0;\n    }\n    return t2;\n  }\n};\n\n// ../../library/src/animation/Animators/Integrator.ts\nvar Integrator = class {\n  constructor(accelerationFunction) {\n    __publicField(this, \"accelerationForState\");\n    this.accelerationForState = accelerationFunction;\n  }\n  integrateState(state, dt) {\n    const a = this.evaluateState(state);\n    const b = this.evaluateStateWithDerivative(state, dt * 0.5, a);\n    const c = this.evaluateStateWithDerivative(state, dt * 0.5, b);\n    const d = this.evaluateStateWithDerivative(state, dt, c);\n    const dxdt = 1 / 6 * (a.dx + 2 * (b.dx + c.dx) + d.dx);\n    const dvdt = 1 / 6 * (a.dv + 2 * (b.dv + c.dv) + d.dv);\n    state.x = state.x + dxdt * dt;\n    state.v = state.v + dvdt * dt;\n    return state;\n  }\n  evaluateState(initialState2) {\n    const dv = this.accelerationForState(initialState2);\n    return { dx: initialState2.v, dv };\n  }\n  evaluateStateWithDerivative(initialState2, dt, derivative) {\n    const state = {\n      x: initialState2.x + derivative.dx * dt,\n      v: initialState2.v + derivative.dv * dt\n    };\n    const output = {\n      dx: state.v,\n      dv: this.accelerationForState(state)\n    };\n    return output;\n  }\n};\n\n// ../../library/src/animation/Animators/FrictionAnimator.ts\nvar FrictionAnimator = class {\n  constructor(options) {\n    __publicField(this, \"options\");\n    __publicField(this, \"state\");\n    __publicField(this, \"integrator\");\n    this.options = {\n      velocity: 0,\n      friction: 2,\n      tolerance: 1 / 10\n    };\n    Object.assign(this.options, options);\n    this.state = {\n      x: 0,\n      v: this.options.velocity\n    };\n    this.integrator = new Integrator((state) => -(this.options.friction * state.v));\n  }\n  setFrom(value) {\n    this.state.x = value;\n  }\n  setTo(value) {\n  }\n  setVelocity(velocity) {\n    this.state.v = velocity;\n  }\n  getState() {\n    return this.state;\n  }\n  isReady() {\n    return true;\n  }\n  next(delta) {\n    this.state = this.integrator.integrateState(this.state, delta);\n    return this.state.x;\n  }\n  isFinished() {\n    return Math.abs(this.state.v) < this.options.tolerance;\n  }\n};\n\n// ../../library/src/interpolation/Interpolation.ts\nfunction isInterpolatable(value) {\n  return typeof value === \"function\" && value.interpolationFor && typeof value.interpolationFor === \"function\";\n}\nvar Interpolation = {\n  /**\n   * @param from -\n   * @param to -\n   * @internal\n   */\n  handleUndefined: (from, to) => {\n    if (from === void 0) {\n      from = to;\n    }\n    if (to === void 0) {\n      to = from;\n    }\n    return [from, to];\n  }\n};\n\n// ../../library/src/interpolation/NumberInterpolation.ts\nvar NumberInterpolation = {\n  interpolate(from, to) {\n    ;\n    [from, to] = Interpolation.handleUndefined(from, to);\n    const a1 = +from;\n    const b1 = to - a1;\n    return (progress2) => {\n      const value = a1 + b1 * progress2;\n      return value;\n    };\n  },\n  difference(from, to) {\n    return to - from;\n  }\n};\n\n// ../../library/src/animation/Animators/SpringCurveValueConverter.ts\nvar epsilon = 1e-3;\nvar minDuration = 0.01;\nvar maxDuration2 = 10;\nvar minDamping = /* @__PURE__ */ (() => Number.MIN_VALUE)();\nvar maxDamping = 1;\nfunction approximateRoot(func, derivative, initialGuess, times = 12) {\n  let result = initialGuess;\n  for (let i = 1, end = times, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n    result = result - func(result) / derivative(result);\n  }\n  return result;\n}\nfunction angularFrequency(undampedFrequency, dampingRatio) {\n  return undampedFrequency * Math.sqrt(1 - Math.pow(dampingRatio, 2));\n}\nvar SpringCurveValueConverter = {\n  computeDampingRatio: (tension, friction, mass = 1) => {\n    return friction / (2 * Math.sqrt(mass * tension));\n  },\n  // Tries to compute the duration of a spring,\n  // but can't for certain velocities and if dampingRatio >= 1\n  // In those cases it will return null\n  computeDuration: (tension, friction, velocity = 0, mass = 1) => {\n    let duration;\n    const dampingRatio = SpringCurveValueConverter.computeDampingRatio(tension, friction);\n    const undampedFrequency = Math.sqrt(tension / mass);\n    if (dampingRatio < 1) {\n      const a = Math.sqrt(1 - Math.pow(dampingRatio, 2));\n      const b = velocity / (a * undampedFrequency);\n      const c = dampingRatio / a;\n      const d = -((b - c) / epsilon);\n      if (d <= 0) {\n        return null;\n      }\n      duration = Math.log(d) / (dampingRatio * undampedFrequency);\n    } else {\n      return null;\n    }\n    return duration;\n  },\n  computeDerivedCurveOptions: (dampingRatio, duration, velocity = 0, mass = 1) => {\n    let derivative, envelope;\n    dampingRatio = Math.max(Math.min(dampingRatio, maxDamping), minDamping);\n    duration = Math.max(Math.min(duration, maxDuration2), minDuration);\n    if (dampingRatio < 1) {\n      envelope = function(envelopeUndampedFrequency) {\n        const exponentialDecay = envelopeUndampedFrequency * dampingRatio;\n        const currentDisplacement = exponentialDecay * duration;\n        const a = exponentialDecay - velocity;\n        const b = angularFrequency(envelopeUndampedFrequency, dampingRatio);\n        const c = Math.exp(-currentDisplacement);\n        return epsilon - a / b * c;\n      };\n      derivative = function(derivativeUndampedFrequency) {\n        const exponentialDecay = derivativeUndampedFrequency * dampingRatio;\n        const currentDisplacement = exponentialDecay * duration;\n        const d = currentDisplacement * velocity + velocity;\n        const e = Math.pow(dampingRatio, 2) * Math.pow(derivativeUndampedFrequency, 2) * duration;\n        const f = Math.exp(-currentDisplacement);\n        const g = angularFrequency(Math.pow(derivativeUndampedFrequency, 2), dampingRatio);\n        const factor = -envelope(derivativeUndampedFrequency) + epsilon > 0 ? -1 : 1;\n        return factor * ((d - e) * f) / g;\n      };\n    } else {\n      envelope = function(envelopeUndampedFrequency) {\n        const a = Math.exp(-envelopeUndampedFrequency * duration);\n        const b = (envelopeUndampedFrequency - velocity) * duration + 1;\n        return -epsilon + a * b;\n      };\n      derivative = function(derivativeUndampedFrequency) {\n        const a = Math.exp(-derivativeUndampedFrequency * duration);\n        const b = (velocity - derivativeUndampedFrequency) * Math.pow(duration, 2);\n        return a * b;\n      };\n    }\n    const result = {\n      tension: 100,\n      friction: 10,\n      velocity\n    };\n    const initialGuess = 5 / duration;\n    const undampedFrequency = approximateRoot(envelope, derivative, initialGuess);\n    if (!Number.isNaN(undampedFrequency)) {\n      result.tension = Math.pow(undampedFrequency, 2) * mass;\n      result.friction = dampingRatio * 2 * Math.sqrt(mass * result.tension);\n    }\n    return result;\n  }\n};\n\n// ../../library/src/animation/Animators/SpringAnimator.ts\nvar SpringTensionFrictionDefaults = /* @__PURE__ */ (() => ({\n  tension: 500,\n  friction: 10,\n  tolerance: 1 / 1e4,\n  velocity: 0\n}))();\nvar SpringDampingDurationDefaults = {\n  dampingRatio: 1,\n  duration: 1,\n  velocity: 0,\n  mass: 1\n};\nfunction isDampingDurationSpringOptions(options) {\n  if (!options) {\n    return false;\n  }\n  return typeof options.dampingRatio === \"number\" || typeof options.duration === \"number\" || typeof options.mass === \"number\";\n}\nvar SpringAnimator = class {\n  constructor(options, interpolation) {\n    this.interpolation = interpolation;\n    __publicField(this, \"options\");\n    __publicField(this, \"current\");\n    __publicField(this, \"destination\");\n    __publicField(this, \"difference\");\n    __publicField(this, \"state\");\n    __publicField(this, \"integrator\");\n    __publicField(this, \"interpolator\");\n    let _opt;\n    if (isDampingDurationSpringOptions(options)) {\n      const toPass = { ...SpringDampingDurationDefaults, ...options };\n      _opt = SpringCurveValueConverter.computeDerivedCurveOptions(\n        toPass.dampingRatio,\n        toPass.duration,\n        toPass.velocity,\n        toPass.mass\n      );\n    } else {\n      _opt = options;\n    }\n    this.options = { ...SpringTensionFrictionDefaults, ..._opt };\n    this.state = {\n      x: 0,\n      v: this.options.velocity\n    };\n    this.integrator = new Integrator((state) => -this.options.tension * state.x - this.options.friction * state.v);\n  }\n  isReady() {\n    return this.interpolator !== void 0 && this.difference !== void 0;\n  }\n  next(delta) {\n    this.state = this.integrator.integrateState(this.state, delta);\n    const value = this.interpolator(this.progress());\n    return value;\n  }\n  isFinished() {\n    const positionNearZero = Math.abs(this.state.x) < this.options.tolerance;\n    const velocityNearZero = Math.abs(this.state.v) < this.options.tolerance;\n    return positionNearZero && velocityNearZero;\n  }\n  setFrom(value) {\n    this.current = value;\n    this.updateInterpolator();\n  }\n  setVelocity(velocity) {\n    this.state.v = velocity;\n  }\n  progress() {\n    return 1 - this.state.x / this.difference;\n  }\n  // The spring always settles to 0, so we create an interpolation to the destination\n  // And calculate the progress based on the current state and the span of the interpolation\n  // This lets us integrate over state.x, even though Value is generic\n  setTo(value) {\n    this.destination = value;\n    this.difference = this.interpolation.difference(this.destination, this.current);\n    this.state.x = this.difference;\n    this.updateInterpolator();\n  }\n  /** @internal */\n  getState() {\n    return this.state;\n  }\n  updateInterpolator() {\n    if (this.current === void 0 || this.destination === void 0) {\n      return;\n    }\n    this.interpolator = this.interpolation.interpolate(this.current, this.destination);\n  }\n};\n\n// ../../library/src/animation/Animators/InertialScrollAnimator.ts\nvar Defaults = {\n  velocity: 0,\n  min: 0,\n  max: 0,\n  momentum: {\n    friction: 2,\n    tolerance: 10\n  },\n  bounce: {\n    tension: 500,\n    friction: 10,\n    tolerance: 1\n  }\n};\nvar InertialScrollAnimator = class {\n  constructor(options) {\n    __publicField(this, \"options\");\n    __publicField(this, \"current\");\n    __publicField(this, \"frictionAnimator\");\n    __publicField(this, \"springAnimator\");\n    __publicField(this, \"useSpring\");\n    this.options = Object.assign({ ...Defaults }, options);\n    this.frictionAnimator = new FrictionAnimator({\n      friction: this.options.momentum.friction,\n      tolerance: this.options.momentum.tolerance,\n      velocity: this.options.velocity\n    });\n    this.springAnimator = new SpringAnimator(\n      {\n        tension: this.options.bounce.tension,\n        friction: this.options.bounce.friction,\n        tolerance: this.options.bounce.tolerance,\n        velocity: this.options.velocity\n      },\n      NumberInterpolation\n    );\n    this.useSpring = false;\n  }\n  isReady() {\n    return true;\n  }\n  next(delta) {\n    this.current = this.currentAnimator.next(delta);\n    if (!this.useSpring) {\n      this.tryTransitionToSpring();\n    }\n    return this.current;\n  }\n  get currentAnimator() {\n    if (this.useSpring) {\n      return this.springAnimator;\n    }\n    return this.frictionAnimator;\n  }\n  isFinished() {\n    return this.currentAnimator.isFinished();\n  }\n  get state() {\n    return this.currentAnimator.getState();\n  }\n  setFrom(value) {\n    this.setState({ x: value, v: this.state.v });\n  }\n  setState(state) {\n    this.frictionAnimator.setFrom(state.x);\n    this.frictionAnimator.setVelocity(state.v);\n    if (this.isValidState()) {\n      return this.tryTransitionToSpring();\n    } else {\n      let bound = 0;\n      if (this.state.x <= this.options.min) {\n        bound = this.options.min;\n      }\n      if (this.state.x >= this.options.max) {\n        bound = this.options.max;\n      }\n      return this.transitionToSpring(bound);\n    }\n  }\n  setTo(destination) {\n    this.frictionAnimator.setTo(destination);\n    this.springAnimator.setTo(destination);\n  }\n  setLimits(min, max) {\n    this.options.min = min;\n    this.options.max = max;\n  }\n  // If the position is outside the min and max bounds, and traveling\n  // further away, then transition from friction to spring animation\n  tryTransitionToSpring() {\n    const belowMinWithVelocity = this.state.x < this.options.min && this.state.v <= 0;\n    const aboveMaxWithVelocity = this.state.x > this.options.max && this.state.v >= 0;\n    if (belowMinWithVelocity || aboveMaxWithVelocity) {\n      let bound;\n      if (belowMinWithVelocity) {\n        bound = this.options.min;\n      } else {\n        bound = this.options.max;\n      }\n      this.transitionToSpring(bound);\n    } else {\n      this.useSpring = false;\n    }\n  }\n  transitionToSpring(bound) {\n    this.springAnimator.setFrom(this.state.x);\n    this.springAnimator.setVelocity(this.state.v);\n    this.springAnimator.setTo(bound);\n    this.useSpring = true;\n  }\n  // If the position is outside the min and max bounds, but traveling\n  // back towards the bounds, check if the velocity is sufficient to\n  // carry the position back within bounds. If it is, let friction do the\n  // work. If not, the state is invalid, so use the spring.\n  isValidState() {\n    const belowMinTravelingBack = this.state.x < this.options.min && this.state.v > 0;\n    const aboveMaxTravelingBack = this.state.x > this.options.max && this.state.v < 0;\n    if (belowMinTravelingBack || aboveMaxTravelingBack) {\n      let bound;\n      if (belowMinTravelingBack) {\n        bound = this.options.min;\n      } else {\n        bound = this.options.max;\n      }\n      const friction = this.frictionAnimator.options.friction;\n      const solution = 1 - friction * (bound - this.state.x) / this.state.v;\n      return solution > 0;\n    }\n    return true;\n  }\n  // The math behind _isValidState:\n  //\n  // 1. Integrate the friction animator's acceleration to find velocity\n  //\n  //         a = - k * v\n  //     dv/dt = - k * v\n  // Int(dv/v) = - k * Int(dt)\n  //      ln v = - k * t + C\n  //\n  // => Solve for C at t = 0\n  //\n  // ln v(0) = - k * 0 + C\n  // ln v(0) = C\n  //\n  // => Plug C back into v(t)\n  //\n  //     ln v = - k * t + ln v(0)\n  // e^(ln v) = e^(- k * t) + e^(ln v(0))\n  //        v = v(0) * e^(- k * t)\n  //\n  // 2. Integrate velocity to find position\n  //\n  // Int(v) = v(0) * Int(e^(- k * t))\n  //      x = - v(0) * e^(-k * t) / k + C\n  //\n  // => Solve for C at t = 0\n  //\n  //            x(0) = - v(0) * e^(-k * 0) / k + C\n  //            x(0) = - v(0) / k + C\n  // x(0) + v(0) / k = C\n  //\n  // => Plug C back into x(t)\n  //\n  // x = - v(0) * e^(-k * t) / k + x(0) + v(0) / k\n  //\n  // 3. Check if a (real) solution exists for t for position x\n  //\n  //                                x = - v(0) * e^(-k * t) / k + x(0) + v(0) / k\n  //                         x - x(0) = - v(0) * e^(-k * t) / k + v(0) / k\n  //                   k * (x - x(0)) = - v(0) * e^(-k * t) + v(0)\n  //            k * (x - x(0)) - v(0) = - v(0) * e^(-k * t)\n  // (k * (x - x(0)) - v(0)) / - v(0) = e^(-k * t)\n  //       1 - (k * (x - x(0)) / v(0) = e^(-k * t)\n  //   ln(1 - (k * (x - x(0)) / v(0)) = -k * t\n  //\n  // Therefore, a real solution exists if 1 - (k * (x - x(0)) / v(0) > 0\n};\n\n// ../../library/src/render/types/Color/CSSNames.ts\nvar cssNames = {\n  aliceblue: \"f0f8ff\",\n  antiquewhite: \"faebd7\",\n  aqua: \"0ff\",\n  aquamarine: \"7fffd4\",\n  azure: \"f0ffff\",\n  beige: \"f5f5dc\",\n  bisque: \"ffe4c4\",\n  black: \"000\",\n  blanchedalmond: \"ffebcd\",\n  blue: \"00f\",\n  blueviolet: \"8a2be2\",\n  brown: \"a52a2a\",\n  burlywood: \"deb887\",\n  burntsienna: \"ea7e5d\",\n  cadetblue: \"5f9ea0\",\n  chartreuse: \"7fff00\",\n  chocolate: \"d2691e\",\n  coral: \"ff7f50\",\n  cornflowerblue: \"6495ed\",\n  cornsilk: \"fff8dc\",\n  crimson: \"dc143c\",\n  cyan: \"0ff\",\n  darkblue: \"00008b\",\n  darkcyan: \"008b8b\",\n  darkgoldenrod: \"b8860b\",\n  darkgray: \"a9a9a9\",\n  darkgreen: \"006400\",\n  darkgrey: \"a9a9a9\",\n  darkkhaki: \"bdb76b\",\n  darkmagenta: \"8b008b\",\n  darkolivegreen: \"556b2f\",\n  darkorange: \"ff8c00\",\n  darkorchid: \"9932cc\",\n  darkred: \"8b0000\",\n  darksalmon: \"e9967a\",\n  darkseagreen: \"8fbc8f\",\n  darkslateblue: \"483d8b\",\n  darkslategray: \"2f4f4f\",\n  darkslategrey: \"2f4f4f\",\n  darkturquoise: \"00ced1\",\n  darkviolet: \"9400d3\",\n  deeppink: \"ff1493\",\n  deepskyblue: \"00bfff\",\n  dimgray: \"696969\",\n  dimgrey: \"696969\",\n  dodgerblue: \"1e90ff\",\n  firebrick: \"b22222\",\n  floralwhite: \"fffaf0\",\n  forestgreen: \"228b22\",\n  fuchsia: \"f0f\",\n  gainsboro: \"dcdcdc\",\n  ghostwhite: \"f8f8ff\",\n  gold: \"ffd700\",\n  goldenrod: \"daa520\",\n  gray: \"808080\",\n  green: \"008000\",\n  greenyellow: \"adff2f\",\n  grey: \"808080\",\n  honeydew: \"f0fff0\",\n  hotpink: \"ff69b4\",\n  indianred: \"cd5c5c\",\n  indigo: \"4b0082\",\n  ivory: \"fffff0\",\n  khaki: \"f0e68c\",\n  lavender: \"e6e6fa\",\n  lavenderblush: \"fff0f5\",\n  lawngreen: \"7cfc00\",\n  lemonchiffon: \"fffacd\",\n  lightblue: \"add8e6\",\n  lightcoral: \"f08080\",\n  lightcyan: \"e0ffff\",\n  lightgoldenrodyellow: \"fafad2\",\n  lightgray: \"d3d3d3\",\n  lightgreen: \"90ee90\",\n  lightgrey: \"d3d3d3\",\n  lightpink: \"ffb6c1\",\n  lightsalmon: \"ffa07a\",\n  lightseagreen: \"20b2aa\",\n  lightskyblue: \"87cefa\",\n  lightslategray: \"789\",\n  lightslategrey: \"789\",\n  lightsteelblue: \"b0c4de\",\n  lightyellow: \"ffffe0\",\n  lime: \"0f0\",\n  limegreen: \"32cd32\",\n  linen: \"faf0e6\",\n  magenta: \"f0f\",\n  maroon: \"800000\",\n  mediumaquamarine: \"66cdaa\",\n  mediumblue: \"0000cd\",\n  mediumorchid: \"ba55d3\",\n  mediumpurple: \"9370db\",\n  mediumseagreen: \"3cb371\",\n  mediumslateblue: \"7b68ee\",\n  mediumspringgreen: \"00fa9a\",\n  mediumturquoise: \"48d1cc\",\n  mediumvioletred: \"c71585\",\n  midnightblue: \"191970\",\n  mintcream: \"f5fffa\",\n  mistyrose: \"ffe4e1\",\n  moccasin: \"ffe4b5\",\n  navajowhite: \"ffdead\",\n  navy: \"000080\",\n  oldlace: \"fdf5e6\",\n  olive: \"808000\",\n  olivedrab: \"6b8e23\",\n  orange: \"ffa500\",\n  orangered: \"ff4500\",\n  orchid: \"da70d6\",\n  palegoldenrod: \"eee8aa\",\n  palegreen: \"98fb98\",\n  paleturquoise: \"afeeee\",\n  palevioletred: \"db7093\",\n  papayawhip: \"ffefd5\",\n  peachpuff: \"ffdab9\",\n  peru: \"cd853f\",\n  pink: \"ffc0cb\",\n  plum: \"dda0dd\",\n  powderblue: \"b0e0e6\",\n  purple: \"800080\",\n  rebeccapurple: \"663399\",\n  red: \"f00\",\n  rosybrown: \"bc8f8f\",\n  royalblue: \"4169e1\",\n  saddlebrown: \"8b4513\",\n  salmon: \"fa8072\",\n  sandybrown: \"f4a460\",\n  seagreen: \"2e8b57\",\n  seashell: \"fff5ee\",\n  sienna: \"a0522d\",\n  silver: \"c0c0c0\",\n  skyblue: \"87ceeb\",\n  slateblue: \"6a5acd\",\n  slategray: \"708090\",\n  slategrey: \"708090\",\n  snow: \"fffafa\",\n  springgreen: \"00ff7f\",\n  steelblue: \"4682b4\",\n  tan: \"d2b48c\",\n  teal: \"008080\",\n  thistle: \"d8bfd8\",\n  tomato: \"ff6347\",\n  turquoise: \"40e0d0\",\n  violet: \"ee82ee\",\n  wheat: \"f5deb3\",\n  white: \"fff\",\n  whitesmoke: \"f5f5f5\",\n  yellow: \"ff0\",\n  yellowgreen: \"9acd32\"\n};\n\n// ../../library/src/render/types/Color/Utils.ts\nfunction modulate(value, rangeA, rangeB, limit = false) {\n  const [fromLow, fromHigh] = rangeA;\n  const [toLow, toHigh] = rangeB;\n  const fromDelta = fromHigh - fromLow;\n  if (fromDelta === 0)\n    return (toHigh + toLow) / 2;\n  const toDelta = toHigh - toLow;\n  if (toDelta === 0)\n    return toLow;\n  const result = toLow + (value - fromLow) / fromDelta * toDelta;\n  if (limit === true) {\n    if (toLow < toHigh) {\n      if (result < toLow) {\n        return toLow;\n      }\n      if (result > toHigh) {\n        return toHigh;\n      }\n    } else {\n      if (result > toLow) {\n        return toLow;\n      }\n      if (result < toHigh) {\n        return toHigh;\n      }\n    }\n  }\n  return result;\n}\nfunction isNumeric(value) {\n  return !Number.isNaN(value) && Number.isFinite(value);\n}\nfunction percentToFraction(val) {\n  const digits = numberFromString(val);\n  if (digits !== void 0) {\n    if (val.includes(\"%\")) {\n      return digits / 100;\n    }\n    return digits;\n  }\n  return 0;\n}\nfunction numberFromString(input) {\n  const match = /\\d?\\.?\\d+/u.exec(input);\n  return match ? Number(match[0]) : void 0;\n}\n\n// ../../library/src/render/types/Color/types.ts\nvar ColorFormat = /* @__PURE__ */ ((ColorFormat2) => {\n  ColorFormat2[\"RGB\"] = \"rgb\";\n  ColorFormat2[\"HSL\"] = \"hsl\";\n  ColorFormat2[\"HSV\"] = \"hsv\";\n  ColorFormat2[\"HEX\"] = \"hex\";\n  ColorFormat2[\"NAME\"] = \"name\";\n  return ColorFormat2;\n})(ColorFormat || {});\nvar ColorMixModelType = /* @__PURE__ */ ((ColorMixModelType2) => {\n  ColorMixModelType2[\"RGB\"] = \"rgb\";\n  ColorMixModelType2[\"RGBA\"] = \"rgba\";\n  ColorMixModelType2[\"HSL\"] = \"hsl\";\n  ColorMixModelType2[\"HSLA\"] = \"hsla\";\n  ColorMixModelType2[\"HUSL\"] = \"husl\";\n  return ColorMixModelType2;\n})(ColorMixModelType || {});\n\n// ../../library/src/render/types/Color/converters.ts\nvar Hsluv = /* @__PURE__ */ (() => require_hsluv().Hsluv)();\nvar hsluvConverter = /* @__PURE__ */ new Hsluv();\nfunction rgbToHsluv(r, g, b) {\n  hsluvConverter.rgb_r = r / 255;\n  hsluvConverter.rgb_g = g / 255;\n  hsluvConverter.rgb_b = b / 255;\n  hsluvConverter.rgbToHsluv();\n  return {\n    h: hsluvConverter.hsluv_h,\n    s: hsluvConverter.hsluv_s,\n    l: hsluvConverter.hsluv_l\n  };\n}\nfunction rgbaFromHusl(h, s, l, a = 1) {\n  hsluvConverter.hsluv_h = h;\n  hsluvConverter.hsluv_s = s;\n  hsluvConverter.hsluv_l = l;\n  hsluvConverter.hsluvToRgb();\n  return {\n    r: hsluvConverter.rgb_r * 255,\n    g: hsluvConverter.rgb_g * 255,\n    b: hsluvConverter.rgb_b * 255,\n    a\n  };\n}\nfunction hsvToStr(h, s, v, a) {\n  const _h = Math.round(h);\n  const _s = Math.round(s * 100);\n  const _v = Math.round(v * 100);\n  return a === void 0 || a === 1 ? \"hsv(\" + _h + \", \" + _s + \"%, \" + _v + \"%)\" : \"hsva(\" + _h + \", \" + _s + \"%, \" + _v + \"%, \" + a + \")\";\n}\nfunction rgbToRgb(r, g, b) {\n  return {\n    r: isNumeric(r) ? bound01(r, 255) * 255 : 0,\n    g: isNumeric(g) ? bound01(g, 255) * 255 : 0,\n    b: isNumeric(b) ? bound01(b, 255) * 255 : 0\n  };\n}\nfunction rgbToHex(r, g, b, allow3Char) {\n  const hex = [\n    pad2(Math.round(r).toString(16)),\n    pad2(Math.round(g).toString(16)),\n    pad2(Math.round(b).toString(16))\n  ];\n  if (allow3Char && hex[0].charAt(0) === hex[0].charAt(1) && hex[1].charAt(0) === hex[1].charAt(1) && hex[2].charAt(0) === hex[2].charAt(1)) {\n    return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n  }\n  return hex.join(\"\");\n}\nfunction rgbToHsl(r, g, b) {\n  let l;\n  let s;\n  const _r = bound01(r, 255);\n  const _g = bound01(g, 255);\n  const _b = bound01(b, 255);\n  const max = Math.max(_r, _g, _b);\n  const min = Math.min(_r, _g, _b);\n  let h = s = l = (max + min) / 2;\n  if (max === min) {\n    h = s = 0;\n  } else {\n    const d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    switch (max) {\n      case _r:\n        h = (_g - _b) / d + (_g < _b ? 6 : 0);\n        break;\n      case _g:\n        h = (_b - _r) / d + 2;\n        break;\n      case _b:\n        h = (_r - _g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return { h: h * 360, s, l };\n}\nfunction hue2rgb(p, q, t) {\n  if (t < 0) {\n    t += 1;\n  }\n  if (t > 1) {\n    t -= 1;\n  }\n  if (t < 1 / 6) {\n    return p + (q - p) * 6 * t;\n  }\n  if (t < 1 / 2) {\n    return q;\n  }\n  if (t < 2 / 3) {\n    return p + (q - p) * (2 / 3 - t) * 6;\n  }\n  return p;\n}\nfunction hslToRgb(h, s, l) {\n  let r;\n  let g;\n  let b;\n  h = bound01(h, 360);\n  s = bound01(s * 100, 100);\n  l = bound01(l * 100, 100);\n  if (s === 0) {\n    r = g = b = l;\n  } else {\n    const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n    const p = 2 * l - q;\n    r = hue2rgb(p, q, h + 1 / 3);\n    g = hue2rgb(p, q, h);\n    b = hue2rgb(p, q, h - 1 / 3);\n  }\n  return { r: r * 255, g: g * 255, b: b * 255 };\n}\nfunction rgbToHsv(r, g, b) {\n  r = bound01(r, 255);\n  g = bound01(g, 255);\n  b = bound01(b, 255);\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const d = max - min;\n  let h;\n  const s = max === 0 ? 0 : d / max;\n  const v = max;\n  if (max === min) {\n    h = 0;\n  } else {\n    switch (max) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0);\n        break;\n      case g:\n        h = (b - r) / d + 2;\n        break;\n      case b:\n        h = (r - g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return { h, s, v };\n}\nfunction hsvToRgb(h, s, v) {\n  h = bound01(h, 360) * 6;\n  s = bound01(s * 100, 100);\n  v = bound01(v * 100, 100);\n  const i = Math.floor(h);\n  const f = h - i;\n  const p = v * (1 - s);\n  const q = v * (1 - f * s);\n  const t = v * (1 - (1 - f) * s);\n  const mod = i % 6;\n  const r = [v, q, p, p, t, v][mod];\n  const g = [t, v, v, q, p, p][mod];\n  const b = [p, p, t, v, v, q][mod];\n  return { r: r * 255, g: g * 255, b: b * 255 };\n}\nfunction bound01(n, max) {\n  let _max;\n  let _n;\n  if (typeof max === \"string\")\n    _max = parseFloat(max);\n  else\n    _max = max;\n  if (typeof n === \"string\") {\n    if (isOnePointZero(n)) {\n      n = \"100%\";\n    }\n    const processPercent = isPercentage(n);\n    _n = Math.min(_max, Math.max(0, parseFloat(n)));\n    if (processPercent) {\n      _n = Math.floor(_n * _max) / 100;\n    }\n  } else {\n    _n = n;\n  }\n  if (Math.abs(_n - _max) < 1e-6) {\n    return 1;\n  }\n  return _n % _max / _max;\n}\nfunction isOnePointZero(n) {\n  return typeof n === \"string\" && n.includes(\".\") && parseFloat(n) === 1;\n}\nfunction isPercentage(n) {\n  return typeof n === \"string\" && n.includes(\"%\");\n}\nfunction pad2(char) {\n  if (char.length === 1) {\n    return \"0\" + char;\n  } else {\n    return \"\" + char;\n  }\n}\nvar matchers = /* @__PURE__ */ (() => {\n  const cssInteger = \"[-\\\\+]?\\\\d+%?\";\n  const cssNumber = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n  const cssUnit = \"(?:\" + cssNumber + \")|(?:\" + cssInteger + \")\";\n  const permissiveMatch3 = \"[\\\\s|\\\\(]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")\\\\s*\\\\)?\";\n  const permissiveMatch4 = \"[\\\\s|\\\\(]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")\\\\s*\\\\)?\";\n  return {\n    rgb: new RegExp(\"rgb\" + permissiveMatch3),\n    rgba: new RegExp(\"rgba\" + permissiveMatch4),\n    hsl: new RegExp(\"hsl\" + permissiveMatch3),\n    hsla: new RegExp(\"hsla\" + permissiveMatch4),\n    hsv: new RegExp(\"hsv\" + permissiveMatch3),\n    hsva: new RegExp(\"hsva\" + permissiveMatch4),\n    hex3: /^([\\da-f])([\\da-f])([\\da-f])$/iu,\n    hex6: /^([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/iu,\n    hex4: /^#?([\\da-f])([\\da-f])([\\da-f])([\\da-f])$/iu,\n    hex8: /^#?([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/iu\n  };\n})();\nfunction stringToObject(inputColor) {\n  if (inputColor.includes(\"gradient(\"))\n    return false;\n  if (inputColor.includes(\"var(\"))\n    return false;\n  const trimLeft = /^[\\s,#]+/u;\n  let color2 = inputColor.replace(trimLeft, \"\").trimEnd().toLowerCase();\n  const namedColor = cssNames[color2];\n  if (namedColor) {\n    color2 = namedColor;\n  }\n  if (color2 === \"transparent\") {\n    return {\n      r: 0,\n      g: 0,\n      b: 0,\n      a: 0,\n      format: \"name\" /* NAME */\n    };\n  }\n  let match;\n  if (match = matchers.rgb.exec(color2)) {\n    return {\n      r: parseInt(match[1] ?? \"\"),\n      g: parseInt(match[2] ?? \"\"),\n      b: parseInt(match[3] ?? \"\"),\n      a: 1,\n      format: \"rgb\" /* RGB */\n    };\n  }\n  if (match = matchers.rgba.exec(color2)) {\n    return {\n      r: parseInt(match[1] ?? \"\"),\n      g: parseInt(match[2] ?? \"\"),\n      b: parseInt(match[3] ?? \"\"),\n      a: parseFloat(match[4] ?? \"\"),\n      format: \"rgb\" /* RGB */\n    };\n  }\n  if (match = matchers.hsl.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      l: percentToFraction(match[3] ?? \"\"),\n      a: 1,\n      format: \"hsl\" /* HSL */\n    };\n  }\n  if (match = matchers.hsla.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      l: percentToFraction(match[3] ?? \"\"),\n      a: parseFloat(match[4] ?? \"\"),\n      format: \"hsl\" /* HSL */\n    };\n  }\n  if (match = matchers.hsv.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      v: percentToFraction(match[3] ?? \"\"),\n      a: 1,\n      format: \"hsv\" /* HSV */\n    };\n  }\n  if (match = matchers.hsva.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      v: percentToFraction(match[3] ?? \"\"),\n      a: parseFloat(match[4] ?? \"\"),\n      format: \"hsv\" /* HSV */\n    };\n  }\n  if (match = matchers.hex8.exec(color2)) {\n    return {\n      r: parseIntFromHex(match[1] ?? \"\"),\n      g: parseIntFromHex(match[2] ?? \"\"),\n      b: parseIntFromHex(match[3] ?? \"\"),\n      a: convertHexToDecimal(match[4] ?? \"\"),\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex6.exec(color2)) {\n    return {\n      r: parseIntFromHex(match[1] ?? \"\"),\n      g: parseIntFromHex(match[2] ?? \"\"),\n      b: parseIntFromHex(match[3] ?? \"\"),\n      a: 1,\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex4.exec(color2)) {\n    return {\n      r: parseIntFromHex(`${match[1]}${match[1]}`),\n      g: parseIntFromHex(`${match[2]}${match[2]}`),\n      b: parseIntFromHex(`${match[3]}${match[3]}`),\n      a: convertHexToDecimal(match[4] + \"\" + match[4]),\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex3.exec(color2)) {\n    return {\n      r: parseIntFromHex(`${match[1]}${match[1]}`),\n      g: parseIntFromHex(`${match[2]}${match[2]}`),\n      b: parseIntFromHex(`${match[3]}${match[3]}`),\n      a: 1,\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  } else {\n    return false;\n  }\n}\nfunction parseIntFromHex(hex) {\n  return parseInt(hex, 16);\n}\nfunction convertHexToDecimal(h) {\n  return parseIntFromHex(h) / 255;\n}\n\n// ../../library/src/render/types/Color/Color.ts\nvar cache = /* @__PURE__ */ new Map();\nvar Color = /* @__PURE__ */ (() => {\n  function Color2(color2, r, g, b) {\n    if (typeof color2 === \"string\") {\n      let c = cache.get(color2);\n      if (c)\n        return c;\n      c = createColor(color2);\n      if (c === void 0)\n        return { ...Color2(\"black\"), isValid: false };\n      cache.set(color2, c);\n      return c;\n    }\n    const created = createColor(color2, r, g, b);\n    return created !== void 0 ? created : { ...Color2(\"black\"), isValid: false };\n  }\n  function createColor(color2, r, g, b) {\n    if (color2 === \"\")\n      return void 0;\n    const colorData = getCompleteColorStrategy(color2, r, g, b);\n    if (colorData) {\n      const newColor = {\n        r: colorData.r,\n        g: colorData.g,\n        b: colorData.b,\n        a: colorData.a,\n        h: colorData.h,\n        s: colorData.s,\n        l: colorData.l,\n        initialValue: typeof color2 === \"string\" && colorData.format !== \"hsv\" /* HSV */ ? color2 : void 0,\n        roundA: Math.round(100 * colorData.a) / 100,\n        format: colorData.format,\n        mix: Color2.mix,\n        toValue: () => Color2.toRgbString(newColor)\n      };\n      return newColor;\n    } else {\n      return void 0;\n    }\n  }\n  const ColorMixModel = {\n    isRGB(colorModel) {\n      return colorModel === \"rgb\" /* RGB */ || colorModel === \"rgba\" /* RGBA */;\n    },\n    isHSL(colorModel) {\n      return colorModel === \"hsl\" /* HSL */ || colorModel === \"hsla\" /* HSLA */;\n    }\n  };\n  Color2.inspect = (color2, initialValue) => {\n    if (color2.format === \"hsl\" /* HSL */) {\n      return `<${color2.constructor.name} h:${color2.h} s:${color2.s} l:${color2.l} a:${color2.a}>`;\n    } else if (color2.format === \"hex\" /* HEX */ || color2.format === \"name\" /* NAME */) {\n      return `<${color2.constructor.name} \"${initialValue}\">`;\n    } else {\n      return `<${color2.constructor.name} r:${color2.r} g:${color2.g} b:${color2.b} a:${color2.a}>`;\n    }\n  };\n  Color2.isColor = (color2) => {\n    if (typeof color2 === \"string\") {\n      return Color2.isColorString(color2);\n    } else {\n      return Color2.isColorObject(color2);\n    }\n  };\n  Color2.isColorString = (colorString) => {\n    if (typeof colorString === \"string\") {\n      return stringToObject(colorString) !== false;\n    }\n    return false;\n  };\n  Color2.isColorObject = (color2) => {\n    return color2 && typeof color2 !== \"string\" && typeof color2.r === \"number\" && typeof color2.g === \"number\" && typeof color2.b === \"number\" && typeof color2.h === \"number\" && typeof color2.s === \"number\" && typeof color2.l === \"number\" && typeof color2.a === \"number\" && typeof color2.roundA === \"number\" && typeof color2.format === \"string\";\n  };\n  Color2.toString = (color2) => {\n    return Color2.toRgbString(color2);\n  };\n  Color2.toHex = (color2, allow3Char = false) => {\n    return rgbToHex(color2.r, color2.g, color2.b, allow3Char);\n  };\n  Color2.toHexString = (color2, allow3Char = false) => {\n    return `#${Color2.toHex(color2, allow3Char)}`;\n  };\n  Color2.toRgbString = (color2) => {\n    return color2.a === 1 ? \"rgb(\" + Math.round(color2.r) + \", \" + Math.round(color2.g) + \", \" + Math.round(color2.b) + \")\" : \"rgba(\" + Math.round(color2.r) + \", \" + Math.round(color2.g) + \", \" + Math.round(color2.b) + \", \" + color2.roundA + \")\";\n  };\n  Color2.toHusl = (color2) => {\n    return {\n      ...rgbToHsluv(color2.r, color2.g, color2.b),\n      a: color2.roundA\n    };\n  };\n  Color2.toHslString = (color2) => {\n    const hsl = Color2.toHsl(color2);\n    const h = Math.round(hsl.h);\n    const s = Math.round(hsl.s * 100);\n    const l = Math.round(hsl.l * 100);\n    return color2.a === 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + color2.roundA + \")\";\n  };\n  Color2.toHsv = (color2) => {\n    const hsv = rgbToHsv(color2.r, color2.g, color2.b);\n    return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: color2.a };\n  };\n  Color2.toHsvString = (color2) => {\n    const hsv = rgbToHsv(color2.r, color2.g, color2.b);\n    const h = Math.round(hsv.h * 360);\n    const s = Math.round(hsv.s * 100);\n    const v = Math.round(hsv.v * 100);\n    return color2.a === 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + color2.roundA + \")\";\n  };\n  Color2.toName = (color2) => {\n    if (color2.a === 0) {\n      return \"transparent\";\n    }\n    if (color2.a < 1) {\n      return false;\n    }\n    const hex = rgbToHex(color2.r, color2.g, color2.b, true);\n    for (const key7 of Object.keys(cssNames)) {\n      const value = cssNames[key7];\n      if (value === hex) {\n        return key7;\n      }\n    }\n    return false;\n  };\n  Color2.toHsl = (color2) => {\n    return {\n      h: Math.round(color2.h),\n      s: color2.s,\n      l: color2.l,\n      a: color2.a\n    };\n  };\n  Color2.toRgb = (color2) => {\n    return {\n      r: Math.round(color2.r),\n      g: Math.round(color2.g),\n      b: Math.round(color2.b),\n      a: color2.a\n    };\n  };\n  Color2.brighten = (color2, amount = 10) => {\n    const rgb = Color2.toRgb(color2);\n    rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n    rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n    rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n    return Color2(rgb);\n  };\n  Color2.lighten = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.l += amount / 100;\n    hsl.l = Math.min(1, Math.max(0, hsl.l));\n    return Color2(hsl);\n  };\n  Color2.darken = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.l -= amount / 100;\n    hsl.l = Math.min(1, Math.max(0, hsl.l));\n    return Color2(hsl);\n  };\n  Color2.saturate = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.s += amount / 100;\n    hsl.s = Math.min(1, Math.max(0, hsl.s));\n    return Color2(hsl);\n  };\n  Color2.desaturate = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.s -= amount / 100;\n    hsl.s = Math.min(1, Math.max(0, hsl.s));\n    return Color2(hsl);\n  };\n  Color2.grayscale = (color2) => {\n    return Color2.desaturate(color2, 100);\n  };\n  Color2.hueRotate = (color2, angle) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.h += angle;\n    hsl.h = hsl.h > 360 ? hsl.h - 360 : hsl.h;\n    return Color2(hsl);\n  };\n  Color2.alpha = (color2, a = 1) => {\n    return Color2({\n      r: color2.r,\n      g: color2.g,\n      b: color2.b,\n      a\n    });\n  };\n  Color2.transparent = (color2) => {\n    return Color2.alpha(color2, 0);\n  };\n  Color2.multiplyAlpha = (color2, alphaValue = 1) => {\n    return Color2({\n      r: color2.r,\n      g: color2.g,\n      b: color2.b,\n      a: color2.a * alphaValue\n    });\n  };\n  Color2.interpolate = (colorA, colorB, model = \"rgb\" /* RGB */) => {\n    if (!Color2.isColorObject(colorA) || !Color2.isColorObject(colorB)) {\n      throw new TypeError(\"Both arguments for Color.interpolate must be Color objects\");\n    }\n    return (progress2) => {\n      const color2 = Color2.mixAsColor(colorA, colorB, progress2, false, model);\n      return color2;\n    };\n  };\n  Color2.mix = (from, toColor, { model = \"rgb\" /* RGB */ } = {}) => {\n    const fromColor = typeof from === \"string\" ? Color2(from) : from;\n    const mixer = Color2.interpolate(fromColor, toColor, model);\n    return (p) => Color2.toRgbString(mixer(p));\n  };\n  Color2.mixAsColor = (colorA, colorB, fraction2 = 0.5, limit = false, model = \"rgb\" /* RGB */) => {\n    let result = null;\n    if (ColorMixModel.isRGB(model)) {\n      result = Color2({\n        r: modulate(fraction2, [0, 1], [colorA.r, colorB.r], limit),\n        g: modulate(fraction2, [0, 1], [colorA.g, colorB.g], limit),\n        b: modulate(fraction2, [0, 1], [colorA.b, colorB.b], limit),\n        a: modulate(fraction2, [0, 1], [colorA.a, colorB.a], limit)\n      });\n    } else {\n      let hslA, hslB;\n      if (ColorMixModel.isHSL(model)) {\n        hslA = Color2.toHsl(colorA);\n        hslB = Color2.toHsl(colorB);\n      } else {\n        hslA = Color2.toHusl(colorA);\n        hslB = Color2.toHusl(colorB);\n      }\n      if (hslA.s === 0) {\n        hslA.h = hslB.h;\n      } else if (hslB.s === 0) {\n        hslB.h = hslA.h;\n      }\n      const fromH = hslA.h;\n      const toH = hslB.h;\n      let deltaH = toH - fromH;\n      if (deltaH > 180) {\n        deltaH = toH - 360 - fromH;\n      } else if (deltaH < -180) {\n        deltaH = toH + 360 - fromH;\n      }\n      const tween = {\n        h: modulate(fraction2, [0, 1], [fromH, fromH + deltaH], limit),\n        s: modulate(fraction2, [0, 1], [hslA.s, hslB.s], limit),\n        l: modulate(fraction2, [0, 1], [hslA.l, hslB.l], limit),\n        a: modulate(fraction2, [0, 1], [colorA.a, colorB.a], limit)\n      };\n      if (ColorMixModel.isHSL(model)) {\n        result = Color2(tween);\n      } else {\n        result = Color2(rgbaFromHusl(tween.h, tween.s, tween.l, tween.a));\n      }\n    }\n    return result;\n  };\n  Color2.random = (alphaValue = 1) => {\n    function gen() {\n      return Math.floor(Math.random() * 255);\n    }\n    return Color2(\"rgba(\" + gen() + \", \" + gen() + \", \" + gen() + \", \" + alphaValue + \")\");\n  };\n  Color2.grey = (amount = 0.5, alphaValue = 1) => {\n    amount = Math.floor(amount * 255);\n    return Color2(\"rgba(\" + amount + \", \" + amount + \", \" + amount + \", \" + alphaValue + \")\");\n  };\n  Color2.gray = Color2.grey;\n  Color2.rgbToHsl = (r, g, b) => {\n    return rgbToHsl(r, g, b);\n  };\n  Color2.isValidColorProperty = (name, value) => {\n    const isColorKey = name.toLowerCase().slice(-5) === \"color\" || name === \"fill\" || name === \"stroke\";\n    if (isColorKey && typeof value === \"string\" && Color2.isColorString(value)) {\n      return true;\n    }\n    return false;\n  };\n  Color2.difference = (colorA, colorB) => {\n    const _r = (colorA.r + colorB.r) / 2;\n    const deltaR = colorA.r - colorB.r;\n    const deltaG = colorA.g - colorB.g;\n    const deltaB = colorA.b - colorB.b;\n    const deltaR2 = Math.pow(deltaR, 2);\n    const deltaG2 = Math.pow(deltaG, 2);\n    const deltaB2 = Math.pow(deltaB, 2);\n    return Math.sqrt(2 * deltaR2 + 4 * deltaG2 + 3 * deltaB2 + _r * (deltaR2 - deltaB2) / 256);\n  };\n  Color2.equal = (colorA, colorB, tolerance = 0.1) => {\n    if (Math.abs(colorA.r - colorB.r) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.g - colorB.g) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.b - colorB.b) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.a - colorB.a) * 256 >= tolerance) {\n      return false;\n    }\n    return true;\n  };\n  const channelToDecimal = interpolate([0, 255], [0, 1]);\n  function convertChannelToLinearRgb(channel) {\n    channel = channelToDecimal(channel);\n    const abs = Math.abs(channel);\n    if (abs < 0.04045)\n      return channel / 12.92;\n    return (Math.sign(channel) || 1) * Math.pow((abs + 0.055) / 1.055, 2.4);\n  }\n  Color2.luminance = (color2) => {\n    const { r, g, b } = Color2.toRgb(color2);\n    return 0.2126 * convertChannelToLinearRgb(r) + 0.7152 * convertChannelToLinearRgb(g) + 0.0722 * convertChannelToLinearRgb(b);\n  };\n  Color2.contrast = (a, b) => {\n    const l1 = Color2.luminance(a);\n    const l2 = Color2.luminance(b);\n    return (Math.max(l1, l2) + 0.05) / (Math.min(l1, l2) + 0.05);\n  };\n  return Color2;\n})();\nfunction getCompleteColorStrategy(colorOrR, g, b, a = 1) {\n  let completeColor;\n  if (typeof colorOrR === \"number\" && !Number.isNaN(colorOrR) && typeof g === \"number\" && !Number.isNaN(g) && typeof b === \"number\" && !Number.isNaN(b)) {\n    const _r = colorOrR;\n    const _g = g;\n    const _b = b;\n    const _a = a;\n    completeColor = getCompleteColorFromRGB({ r: _r, g: _g, b: _b, a: _a });\n  } else if (typeof colorOrR === \"string\") {\n    completeColor = getCompleteColorFromString(colorOrR);\n  } else if (typeof colorOrR === \"object\") {\n    if (colorOrR.hasOwnProperty(\"r\") && colorOrR.hasOwnProperty(\"g\") && colorOrR.hasOwnProperty(\"b\")) {\n      completeColor = getCompleteColorFromRGB(colorOrR);\n    } else {\n      completeColor = getCompleteColorFromHSL(colorOrR);\n    }\n  }\n  return completeColor;\n}\nfunction getCompleteColorFromString(color2) {\n  const result = stringToObject(color2);\n  if (result) {\n    if (result.format === \"hsl\" /* HSL */) {\n      return getCompleteColorFromHSL(result);\n    } else if (result.format === \"hsv\" /* HSV */) {\n      return getCompleteColorFromHSV(result);\n    } else {\n      return getCompleteColorFromRGB(result);\n    }\n  }\n}\nfunction getCompleteColorFromHSV(color2) {\n  const rgb = hsvToRgb(color2.h, color2.s, color2.v);\n  const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n  return {\n    ...hsl,\n    ...rgb,\n    format: \"rgb\" /* RGB */,\n    a: color2.a !== void 0 ? correctAlpha(color2.a) : 1\n  };\n}\nfunction getCompleteColorFromRGB(color2) {\n  const rgb = rgbToRgb(color2.r, color2.g, color2.b);\n  const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n  return {\n    ...hsl,\n    ...rgb,\n    format: \"rgb\" /* RGB */,\n    a: color2.a !== void 0 ? correctAlpha(color2.a) : 1\n  };\n}\nfunction getCompleteColorFromHSL(color2) {\n  let h;\n  let s;\n  let l;\n  let rgb = { r: 0, g: 0, b: 0 };\n  let hsl = { h: 0, s: 0, l: 0 };\n  h = isNumeric(color2.h) ? color2.h : 0;\n  h = (h + 360) % 360;\n  s = isNumeric(color2.s) ? color2.s : 1;\n  if (typeof color2.s === \"string\") {\n    s = numberFromString(color2.s);\n  }\n  l = isNumeric(color2.l) ? color2.l : 0.5;\n  if (typeof color2.l === \"string\") {\n    l = numberFromString(color2.l);\n  }\n  rgb = hslToRgb(h, s, l);\n  hsl = {\n    h,\n    s,\n    l\n  };\n  return {\n    ...rgb,\n    ...hsl,\n    a: color2.a === void 0 ? 1 : color2.a,\n    format: \"hsl\" /* HSL */\n  };\n}\nfunction correctAlpha(alphaValue) {\n  alphaValue = parseFloat(alphaValue);\n  if (alphaValue < 0) {\n    alphaValue = 0;\n  }\n  if (Number.isNaN(alphaValue) || alphaValue > 1) {\n    alphaValue = 1;\n  }\n  return alphaValue;\n}\n\n// ../../library/src/interpolation/ColorInterpolation.ts\nvar ColorInterpolation = (type = \"husl\" /* HUSL */) => {\n  return {\n    interpolate(from, to) {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      return Color.interpolate(Color(from), Color(to), type);\n    },\n    difference(from, to) {\n      return Color.difference(Color(from), Color(to));\n    }\n  };\n};\n\n// ../../library/src/interpolation/NoInterpolation.ts\nvar NoInterpolation = {\n  interpolate(from, to) {\n    ;\n    [from, to] = Interpolation.handleUndefined(from, to);\n    return (progress2) => {\n      return progress2 < 0.5 ? from : to;\n    };\n  },\n  difference(from, to) {\n    return from === to ? 0 : 1;\n  }\n};\n\n// ../../library/src/interpolation/ObjectInterpolation.ts\nvar ObjectInterpolation = (valueInterpolation) => {\n  return {\n    interpolate(from, to) {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      const result = Object.assign({}, from);\n      const interpolations = {};\n      const keys3 = /* @__PURE__ */ new Set();\n      for (const key7 in from) {\n        interpolations[key7] = valueInterpolation.interpolate(from[key7], to[key7]);\n        keys3.add(key7);\n      }\n      for (const key7 in to) {\n        if (!keys3.has(key7)) {\n          interpolations[key7] = valueInterpolation.interpolate(from[key7], to[key7]);\n          keys3.add(key7);\n        }\n      }\n      return (progress2) => {\n        for (const key7 in interpolations) {\n          result[key7] = interpolations[key7](progress2);\n        }\n        return result;\n      };\n    },\n    difference(from, to) {\n      let sum = 0;\n      for (const key7 in from) {\n        const difference = valueInterpolation.difference(from[key7], to[key7]);\n        sum += Math.pow(difference, 2);\n      }\n      return Math.sqrt(sum);\n    }\n  };\n};\n\n// ../../library/src/interpolation/ValueInterpolation.ts\nvar DefaultInterpolationOptions = {\n  colorModel: \"husl\" /* HUSL */\n};\nvar ValueInterpolation = class {\n  /**\n   * @internal\n   */\n  constructor(options = DefaultInterpolationOptions) {\n    __publicField(this, \"options\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"interpolate\", (from, to) => {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      return this.interPolationForValue(from).interpolate(from, to);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"difference\", (from, to) => {\n      const interpolation = this.interPolationForValue(from);\n      return interpolation.difference(from, to);\n    });\n    this.options = { ...DefaultInterpolationOptions, ...options };\n  }\n  /**\n   * @internal\n   */\n  interPolationForValue(value) {\n    const type = typeof value;\n    if (type === \"number\") {\n      return NumberInterpolation;\n    } else if (type === \"boolean\" || type === \"function\") {\n      return NoInterpolation;\n    } else if (Color.isColor(value)) {\n      return ColorInterpolation(this.options.colorModel);\n    } else if (type === \"object\") {\n      if (value === null) {\n        return NoInterpolation;\n      }\n      const constructor = value.constructor;\n      if (constructor && isInterpolatable(constructor)) {\n        const interpolation = constructor.interpolationFor(value, this);\n        if (interpolation && interpolation !== this && interpolation.constructor !== ValueInterpolation) {\n          return interpolation;\n        }\n      }\n      return ObjectInterpolation(this);\n    }\n    console.warn(`No interpolation defined for ${value}`);\n    return NoInterpolation;\n  }\n};\nvar AnyInterpolation = /* @__PURE__ */ new ValueInterpolation();\n\n// ../../library/src/render/utils/isMotionValue.ts\nvar isMotionValue2 = (v) => v instanceof MotionValue;\n\n// ../../library/src/animation/Animators/PrecalculatedAnimator.ts\nvar Defaults2 = /* @__PURE__ */ (() => ({\n  delta: 1 / 60,\n  maxValues: 1e4\n}))();\nvar PrecalculatedAnimator = class {\n  constructor(options) {\n    __publicField(this, \"animator\");\n    __publicField(this, \"values\");\n    __publicField(this, \"currentTime\", 0);\n    __publicField(this, \"totalTime\");\n    __publicField(this, \"options\");\n    this.options = { ...Defaults2, ...options };\n    this.animator = options.animator;\n  }\n  preCalculate() {\n    if (!this.animator.isReady()) {\n      return;\n    }\n    const { delta } = this.options;\n    this.values = [];\n    while (!this.animator.isFinished() && this.values.length < this.options.maxValues) {\n      let value = this.animator.next(this.options.delta);\n      if (typeof value === \"object\" && value) {\n        const object = value;\n        const copy = { ...object };\n        value = copy;\n      }\n      this.values.push(value);\n    }\n    this.totalTime = this.values.length * delta;\n  }\n  indexForTime(time) {\n    return Math.max(\n      0,\n      Math.min(this.values.length - 1, Math.round(this.values.length * (time / this.totalTime)) - 1)\n    );\n  }\n  valueForTime(time) {\n    const index = this.indexForTime(time);\n    const value = this.values[index];\n    return value;\n  }\n  setFrom(value) {\n    this.animator.setFrom(value);\n    this.preCalculate();\n  }\n  setTo(end) {\n    this.animator.setTo(end);\n    this.preCalculate();\n  }\n  isReady() {\n    return this.values !== void 0 && this.values.length > 0 && this.totalTime > 0;\n  }\n  next(delta) {\n    this.currentTime += delta;\n    return this.valueForTime(this.currentTime);\n  }\n  isFinished() {\n    return this.totalTime === 0 || this.currentTime >= this.totalTime;\n  }\n  get endValue() {\n    this.preCalculate();\n    const value = this.valueForTime(this.totalTime);\n    return this.values.length > 0 ? value : this.animator.next(0);\n  }\n};\n\n// ../../library/src/core/EventEmitter.ts\nvar EventEmitter3 = /* @__PURE__ */ (() => require_eventemitter3().EventEmitter)();\nvar EventEmitter = class {\n  constructor() {\n    __publicField(this, \"_emitter\", new EventEmitter3());\n  }\n  eventNames() {\n    return this._emitter.eventNames();\n  }\n  eventListeners() {\n    const listeners = {};\n    for (const eventName of this._emitter.eventNames()) {\n      listeners[eventName] = this._emitter.listeners(eventName);\n    }\n    return listeners;\n  }\n  on(eventName, fn) {\n    this.addEventListener(eventName, fn, false, false, this);\n  }\n  off(eventName, fn) {\n    this.removeEventListeners(eventName, fn);\n  }\n  once(eventName, fn) {\n    this.addEventListener(eventName, fn, true, false, this);\n  }\n  unique(eventName, fn) {\n    this.addEventListener(eventName, fn, false, true, this);\n  }\n  addEventListener(eventName, fn, once, unique, context) {\n    if (unique) {\n      for (const name of this._emitter.eventNames()) {\n        if (fn === this._emitter.listeners(name)) {\n          return;\n        }\n      }\n    }\n    if (once === true) {\n      this._emitter.once(eventName, fn, context);\n    } else {\n      this._emitter.addListener(eventName, fn, context);\n    }\n  }\n  removeEventListeners(eventName, fn) {\n    if (eventName) {\n      this._emitter.removeListener(eventName, fn);\n    } else {\n      this.removeAllEventListeners();\n    }\n  }\n  removeAllEventListeners() {\n    this._emitter.removeAllListeners();\n  }\n  countEventListeners(eventName, handler) {\n    if (eventName) {\n      return this._emitter.listeners(eventName).length;\n    } else {\n      let count = 0;\n      for (const name of this._emitter.eventNames()) {\n        count += this._emitter.listeners(name).length;\n      }\n      return count;\n    }\n  }\n  emit(eventName, ...args) {\n    this._emitter.emit(eventName, ...args);\n  }\n};\n\n// ../../library/src/core/Time.ts\nvar _raf = (f) => {\n  setTimeout(f, 1 / 60);\n};\nvar __raf = /* @__PURE__ */ (() => safeWindow[\"requestAnimationFrame\"] || _raf)();\nvar raf = (f) => __raf(f);\n\n// ../../library/src/core/Loop.ts\nvar LoopTimeStep = /* @__PURE__ */ (() => 1 / 60)();\nvar Loop = class extends EventEmitter {\n  /**\n   * @internal\n   */\n  constructor(start = false) {\n    super();\n    __publicField(this, \"_started\", false);\n    __publicField(this, \"_frame\", 0);\n    __publicField(this, \"_frameTasks\", []);\n    /**\n     * @internal\n     */\n    __publicField(this, \"tick\", () => {\n      if (!this._started)\n        return;\n      raf(this.tick);\n      this.emit(\"update\", this._frame, LoopTimeStep);\n      this.emit(\"render\", this._frame, LoopTimeStep);\n      this._processFrameTasks();\n      this._frame++;\n    });\n    if (start) {\n      this.start();\n    }\n  }\n  /**\n   * To add a task to be done at the end of a frame.\n   * Tasks added from a task will be ignored. These will run after loop events have been processed.\n   * @internal\n   */\n  addFrameTask(task) {\n    this._frameTasks.push(task);\n  }\n  _processFrameTasks() {\n    var _a;\n    const postEventTasks = this._frameTasks;\n    const length = postEventTasks.length;\n    if (length === 0)\n      return;\n    for (let i = 0; i < length; i++) {\n      (_a = postEventTasks[i]) == null ? void 0 : _a.call(postEventTasks);\n    }\n    postEventTasks.length = 0;\n  }\n  /**\n   * @internal\n   */\n  static set TimeStep(value) {\n    LoopTimeStep = value;\n  }\n  /**\n   * @internal\n   */\n  static get TimeStep() {\n    return LoopTimeStep;\n  }\n  /**\n   * @internal\n   */\n  start() {\n    if (this._started)\n      return this;\n    this._frame = 0;\n    this._started = true;\n    raf(this.tick);\n    return this;\n  }\n  /**\n   * @internal\n   * @deprecated Don\u2019t use `stop` as you could be stopping the MainLoop for others.\n   */\n  stop() {\n    this._started = false;\n    return this;\n  }\n  /**\n   * @internal\n   */\n  get frame() {\n    return this._frame;\n  }\n  /**\n   * @internal\n   */\n  get time() {\n    return this._frame * LoopTimeStep;\n  }\n};\nvar MainLoop = /* @__PURE__ */ new Loop();\n\n// ../../library/src/render/types/RenderEnvironment.ts\nvar RenderEnvironment = {\n  target: \"PREVIEW\" /* preview */,\n  zoom: 1\n};\nfunction executeInRenderEnvironment(customEnvironment, task) {\n  const previousEnvironment = Object.assign({}, RenderEnvironment);\n  Object.assign(RenderEnvironment, customEnvironment);\n  const result = task();\n  Object.assign(RenderEnvironment, previousEnvironment);\n  return result;\n}\nfunction setGlobalRenderEnvironment(environment2) {\n  Object.assign(RenderEnvironment, environment2);\n}\nfunction useRenderEnvironment(target, zoom) {\n  let willChangeElements = false;\n  if (RenderEnvironment.target !== target) {\n    RenderEnvironment.target = target;\n    willChangeElements = true;\n  }\n  if (RenderEnvironment.zoom !== zoom) {\n    RenderEnvironment.zoom = zoom;\n  }\n  return { willChangeElements };\n}\nvar RenderTarget = {\n  /**\n   * The component is to be rendered for the Framer canvas.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.canvas) {\n   *     return <CanvasComponent />\n   *   }\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  canvas: \"CANVAS\" /* canvas */,\n  /**\n   * The component is to be rendered for export.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.export) {\n   *     return <ExportComponent />\n   *   }\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  export: \"EXPORT\" /* export */,\n  /**\n   * The component is to be rendered as a preview thumbnail, for example in the\n   * component panel.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.thumbnail) {\n   *     return <Thumbnail />\n   *   }\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  thumbnail: \"THUMBNAIL\" /* thumbnail */,\n  /**\n   * The component is being rendered in the preview window.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   React.useEffect(() => {\n   *     if (RenderTarget.current() === RenderTarget.preview) {\n   *       // Do something in preview.\n   *     }\n   *   })\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  preview: \"PREVIEW\" /* preview */,\n  /**\n   * Returns the current `RenderTarget` allowing components to apply\n   * different behaviors depending on the environment.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.thumbnail) {\n   *     return <PreviewIcon />\n   *   }\n   *   return <Frame>...</Frame>\n   * }\n   * ```\n   */\n  current: () => RenderEnvironment.target,\n  /**\n   * Returns true if the current `RenderTarget` has performance restrictions.\n   * Use this to avoid doing heavy work in these contexts because they may\n   * bail on the rendering if the component takes too long.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.hasRestrictions()) {\n   *     return <SomePlaceholder />\n   *   }\n   *   return <RichPreviewContent />\n   * }\n   * ```\n   */\n  hasRestrictions: () => {\n    const target = RenderEnvironment.target;\n    if (target === \"CANVAS\" /* canvas */)\n      return true;\n    if (target === \"EXPORT\" /* export */)\n      return true;\n    return false;\n  }\n};\n\n// ../../library/src/animation/Drivers/AnimationDriver.ts\nvar AnimationDriver = class {\n  constructor(animator, updateCallback, finishedCallback) {\n    this.animator = animator;\n    this.updateCallback = updateCallback;\n    this.finishedCallback = finishedCallback;\n    __publicField(this, \"update\", (frame2, elapsed) => {\n      if (this.animator.isFinished()) {\n        this.finish();\n      } else {\n        const value = this.animator.next(elapsed);\n        this.updateCallback(value);\n      }\n    });\n    if (!this.animator.isReady()) {\n      console.warn(\"AnimationDriver initialized with animator that isn't ready\");\n    }\n  }\n  finish() {\n    if (this.finishedCallback) {\n      this.finishedCallback(this.animator.isFinished());\n    }\n  }\n  isFinished() {\n    return this.animator.isFinished();\n  }\n};\n\n// ../../library/src/animation/Drivers/MainLoopDriver.ts\nvar MainLoopAnimationDriver = class extends AnimationDriver {\n  play() {\n    if (RenderEnvironment.target !== RenderTarget.preview) {\n      this.finishedCallback && this.finishedCallback(false);\n      return;\n    }\n    MainLoop.on(\"update\", this.update);\n  }\n  cancel() {\n    MainLoop.off(\"update\", this.update);\n  }\n  finish() {\n    MainLoop.off(\"update\", this.update);\n    super.finish();\n  }\n};\n\n// ../../library/src/animation/FramerAnimation.ts\nvar DefaultDeprecatedAnimationOptions = {\n  precalculate: false,\n  colorModel: \"husl\" /* HUSL */\n};\nvar FramerAnimation = class {\n  /**\n   * @internal\n   */\n  constructor(target, from, to, animatorClass, options, driverClass = MainLoopAnimationDriver) {\n    /**\n     * @internal\n     */\n    __publicField(this, \"driver\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"playStateSource\", \"idle\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"onfinish\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"oncancel\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"readyPromise\", Promise.resolve());\n    /**\n     * @internal\n     */\n    __publicField(this, \"readyResolve\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"finishedPromise\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"finishedResolve\");\n    /**\n     * @internal\n     */\n    // biome-ignore lint/suspicious/noExplicitAny: deprecated\n    __publicField(this, \"finishedReject\");\n    this.resetFinishedPromise();\n    const deprecatedAnimationOptions = { ...DefaultDeprecatedAnimationOptions };\n    const animatorOptions = {};\n    if (options) {\n      Object.assign(deprecatedAnimationOptions, options);\n      Object.assign(animatorOptions, options);\n    }\n    let interpolation;\n    if (deprecatedAnimationOptions.customInterpolation) {\n      interpolation = deprecatedAnimationOptions.customInterpolation;\n    } else {\n      interpolation = new ValueInterpolation(options);\n    }\n    let animator;\n    if (!animatorClass) {\n      animator = new BezierAnimator({}, interpolation);\n    } else {\n      animator = new animatorClass(animatorOptions, interpolation);\n    }\n    if (deprecatedAnimationOptions.precalculate) {\n      animator = new PrecalculatedAnimator({ animator });\n    }\n    animator.setFrom(from);\n    animator.setTo(to);\n    const updateCallback = (value) => {\n      FramerAnimation.driverCallbackHandler(target, value);\n    };\n    const finishedCallback = (isFinished) => {\n      if (isFinished) {\n        FramerAnimation.driverCallbackHandler(target, to);\n        if (this.playStateSource === \"running\") {\n          this.playStateValue = \"finished\";\n        }\n      }\n    };\n    this.driver = new driverClass(animator, updateCallback, finishedCallback);\n  }\n  /**\n   * @internal\n   */\n  static driverCallbackHandler(target, value) {\n    if (isAnimatable(target) || isMotionValue2(target)) {\n      target.set(value);\n    } else {\n      const targetObject = target;\n      Animatable.transaction((update) => {\n        for (const key7 in targetObject) {\n          const targetValue = targetObject[key7];\n          if (isAnimatable(targetValue)) {\n            update(targetValue, value[key7]);\n          } else {\n            targetObject[key7] = value[key7];\n          }\n        }\n      });\n    }\n  }\n  /**\n   * @internal\n   */\n  get playStateValue() {\n    return this.playStateSource;\n  }\n  /**\n   * @internal\n   */\n  set playStateValue(value) {\n    if (value !== this.playStateSource) {\n      const oldValue = value;\n      this.playStateSource = value;\n      switch (value) {\n        case \"idle\":\n          if (oldValue === \"running\") {\n            this.oncancel && this.oncancel();\n          }\n          this.readyResolve && this.readyResolve();\n          this.resetReadyPromise();\n          break;\n        case \"finished\":\n          if (oldValue === \"idle\") {\n            console.warn(\"Bad state transition\");\n            break;\n          }\n          this.onfinish && this.onfinish();\n          this.finishedResolve && this.finishedResolve();\n          break;\n        case \"running\":\n          this.resetReadyPromise();\n          break;\n      }\n      if (oldValue === \"finished\") {\n        this.resetFinishedPromise();\n      }\n      if (value === \"finished\") {\n        this.playStateValue = \"idle\";\n      }\n    }\n  }\n  /**\n   * @internal\n   */\n  get playState() {\n    return this.playStateValue;\n  }\n  /**\n   * @internal\n   */\n  resetReadyPromise() {\n    this.readyResolve = null;\n    this.readyPromise = new Promise((resolve, reject) => {\n      this.readyResolve = resolve;\n    });\n  }\n  /**\n       * Wait for the animation to be ready to play.\n       * @remarks\n       * ```jsx\n       * const animation = animate.ease(value, 100)\n       * animation.ready().then(() => {\n       *    // Animation is ready\n       * })\n  \n       * // async/await syntax\n       * const animation = animate.ease(value, 100)\n       * await animation.ready()\n       * // Animation is ready\n       * ```\n       * @returns Promise that is resolved when the animation is ready to play\n       * @public\n       */\n  get ready() {\n    return this.readyPromise;\n  }\n  /**\n   * @internal\n   */\n  resetFinishedPromise() {\n    this.finishedResolve = null;\n    this.finishedReject = null;\n    this.finishedPromise = new Promise((resolve, reject) => {\n      this.finishedResolve = resolve;\n      this.finishedReject = reject;\n    });\n    this.finishedPromise.catch((reason) => {\n    });\n  }\n  /**\n   * Wait for the animation to be finished.\n   * @remarks\n   * ```jsx\n   * // async/await syntax\n   * const animation = animate.ease(value, 100)\n   * await animation.finished()\n   * // Animation is finished\n   *\n   *\n   * const animation = animate.ease(value, 100)\n   * animation.ready().then(() => {\n   *    // Animation is finished\n   * })\n   * ```\n   * @returns Promise that is resolved when the animation is ready to play\n   * @public\n   */\n  get finished() {\n    return this.finishedPromise;\n  }\n  /**\n   * @internal\n   */\n  play() {\n    this.playStateValue = \"running\";\n    this.driver.play();\n  }\n  /**\n   * Cancels the animation if it is still running.\n   * @remarks\n   * ```jsx\n   * const animation = animate.ease(value, 100, {duration: 3})\n   * setTimeout(() => animation.cancel(), 500)\n   * ```\n   * @public\n   */\n  cancel() {\n    if (this.playStateValue !== \"running\") {\n      return;\n    }\n    this.driver.cancel();\n    if (this.playState !== \"idle\") {\n      const reason = \"AbortError\";\n      this.finishedReject && this.finishedReject(reason);\n    }\n    this.playStateValue = \"idle\";\n  }\n  /**\n   * @internal\n   */\n  finish() {\n    if (this.playStateSource === \"running\") {\n      this.playStateValue = \"finished\";\n      this.driver.finish();\n    }\n  }\n  /**\n   * @internal\n   */\n  isFinished() {\n    return this.playStateValue === \"finished\";\n  }\n};\n\n// ../../library/src/animation/Motion/autoValueHandlers.ts\nvar correctBorderScale = (axis) => ({\n  correct: (latest, { delta, treeScale }) => {\n    if (typeof latest === \"string\")\n      latest = parseFloat(latest);\n    if (latest === 0)\n      return \"0px\";\n    let corrected = latest;\n    if (delta && treeScale) {\n      corrected = Math.round(latest / delta[axis].scale / treeScale[axis]);\n      corrected = Math.max(corrected, 1);\n    }\n    return corrected + \"px\";\n  }\n});\n\n// ../../library/src/animation/Motion/MotionSetup.tsx\nimport { Fragment, jsx as jsx4 } from \"react/jsx-runtime\";\naddScaleCorrector({\n  borderTopWidth: correctBorderScale(\"y\"),\n  borderLeftWidth: correctBorderScale(\"x\"),\n  borderRightWidth: correctBorderScale(\"x\"),\n  borderBottomWidth: correctBorderScale(\"y\")\n});\nfunction MotionSetup({ children }) {\n  return /* @__PURE__ */ jsx4(Fragment, { children });\n}\n\n// ../../library/src/animation/Motion/startAnimation.ts\nfunction startAnimation(_key, value, target, transition = {}) {\n  warnOnce(\n    `\"startAnimation\" is unsupported. Use \"animate\" instead: https://www.framer.com/api/motion/utilities/#animate`\n  );\n  return new Promise((resolve) => {\n    animate(value, target, {\n      ...transition,\n      onComplete: () => resolve()\n    });\n  });\n}\n\n// ../../library/src/animation/animate.ts\nfunction deprecatedAnimate(from, to, animator, options) {\n  deprecationWarning(\"animate()\", \"2.0.0\", \"the new animation API (https://www.framer.com/api/animation/)\");\n  const target = from;\n  let fromValue;\n  if (isAnimatable(from) || isMotionValue2(from)) {\n    fromValue = from.get();\n  } else {\n    fromValue = Animatable.objectToValues(from);\n  }\n  const animation = new FramerAnimation(target, fromValue, to, animator, options);\n  animation.play();\n  return animation;\n}\nvar animate2 = /* @__PURE__ */ (() => {\n  function animate3(from, to, animatorOrTransition, options) {\n    return isAnimatable(from) ? deprecatedAnimate(from, to, animatorOrTransition, options) : animate(from, to, animatorOrTransition);\n  }\n  animate3.spring = (from, to, options) => {\n    return animate3(from, to, SpringAnimator, options);\n  };\n  animate3.bezier = (from, to, options) => {\n    return animate3(from, to, BezierAnimator, options);\n  };\n  animate3.linear = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"linear\" /* Linear */ });\n  };\n  animate3.ease = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease\" /* Ease */ });\n  };\n  animate3.easeIn = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-in\" /* EaseIn */ });\n  };\n  animate3.easeOut = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-out\" /* EaseOut */ });\n  };\n  animate3.easeInOut = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-in-out\" /* EaseInOut */ });\n  };\n  return animate3;\n})();\n\n// ../../library/src/components/AnimateLayout/LayoutIdContext.tsx\nimport React11, { useCallback as useCallback4, useContext as useContext2, useMemo, useRef as useRef5 } from \"react\";\n\n// ../../library/src/utils/assert.ts\nfunction assert(condition, ...msg) {\n  var _a, _b;\n  if (condition)\n    return;\n  const e = Error(\"Assertion Error\" + (msg.length > 0 ? \": \" + msg.join(\" \") : \"\"));\n  if (e.stack) {\n    try {\n      const lines = e.stack.split(\"\\n\");\n      if ((_a = lines[1]) == null ? void 0 : _a.includes(\"assert\")) {\n        lines.splice(1, 1);\n        e.stack = lines.join(\"\\n\");\n      } else if ((_b = lines[0]) == null ? void 0 : _b.includes(\"assert\")) {\n        lines.splice(0, 1);\n        e.stack = lines.join(\"\\n\");\n      }\n    } catch {\n    }\n  }\n  throw e;\n}\nfunction assertNever(x, error) {\n  throw error || new Error(x ? `Unexpected value: ${x}` : \"Application entered invalid state\");\n}\n\n// ../../library/src/components/AnimateLayout/LayoutIdContext.tsx\nimport { Fragment as Fragment2, jsx as jsx5 } from \"react/jsx-runtime\";\nvar LayoutIdContext = /* @__PURE__ */ React11.createContext({\n  getLayoutId: (args) => null,\n  persistLayoutIdCache: () => {\n  },\n  top: false,\n  enabled: true\n});\nfunction LayoutIdProvider({ children }) {\n  const context = useContext2(LayoutIdContext);\n  if (context.top)\n    return /* @__PURE__ */ jsx5(Fragment2, { children });\n  const cache2 = useRef5({\n    // When we provide a layoutId for a node based on it's first\n    // duplicatedFrom id, we save it's layoutId mapped to it's actual id.\n    // Future screen's nodes will check this cache first, to see if they've\n    // previously been assigned a layoutId, or if any of there other\n    // duplicatedFrom ids matched a node that was previously assigned a\n    // layoutId.\n    byId: {},\n    byName: {},\n    // When we navigate from screens that were duplicated from a future\n    // screen, to that future screen, we want to do a reverse lookup on the\n    // last duplicatedFrom id, rather than the id. We need to keep them\n    // separate so they don't overlap.\n    byLastId: {},\n    byPossibleId: {},\n    byLastName: {},\n    byLayoutId: {},\n    // When we don't have a cached layoutId for all duplicatedFrom ids, we\n    // need to increment and save it so that we don't create clashing\n    // layoutIds. We also need to reset name counts between screens, so we\n    // record those separately.\n    count: {\n      byId: {},\n      byName: {}\n    }\n  });\n  const screen = useRef5({\n    byId: {},\n    byName: {},\n    byLastId: {},\n    byPossibleId: {},\n    byLastName: {},\n    byLayoutId: {}\n  });\n  const usedIds = useRef5(/* @__PURE__ */ new Set()).current;\n  const getLayoutId = useCallback4(({ id, name, duplicatedFrom }) => {\n    if (!id)\n      return null;\n    const cacheKey = name ? \"byName\" : \"byId\";\n    const previousId = cache2.current[cacheKey][id];\n    if (previousId)\n      return previousId;\n    const nodeIdentifier = name || id;\n    if (!duplicatedFrom && !usedIds.has(nodeIdentifier) && (!cache2.current.byLayoutId[nodeIdentifier] || cache2.current.byLayoutId[nodeIdentifier] === nodeIdentifier)) {\n      if (cache2.current.count[cacheKey][nodeIdentifier] === void 0) {\n        cache2.current.count[cacheKey][nodeIdentifier] = 0;\n        cache2.current.byLayoutId[nodeIdentifier] = nodeIdentifier;\n        screen.current[cacheKey][id] = nodeIdentifier;\n      }\n      usedIds.add(nodeIdentifier);\n      return nodeIdentifier;\n    }\n    let possibleMatch = void 0;\n    if (duplicatedFrom == null ? void 0 : duplicatedFrom.length) {\n      for (let index = duplicatedFrom.length - 1; index >= 0; index--) {\n        const duplicatedId = duplicatedFrom[index];\n        assert(!!duplicatedId, `duplicatedId must be defined`);\n        const match = cache2.current[cacheKey][duplicatedId];\n        const byLastIdMatch = cache2.current.byLastId[duplicatedId];\n        if (byLastIdMatch && !possibleMatch) {\n          const matchedLayoutId = cache2.current.byLayoutId[byLastIdMatch];\n          const shouldUseNamedLastIdMatch = !matchedLayoutId || matchedLayoutId === name;\n          if (byLastIdMatch && !usedIds.has(byLastIdMatch) && (name ? shouldUseNamedLastIdMatch : true)) {\n            possibleMatch = [byLastIdMatch, duplicatedId];\n          }\n        }\n        const previousLayoutId = match ? cache2.current.byLayoutId[match] : void 0;\n        const shouldUseNamedMatch = !previousLayoutId || previousLayoutId === name;\n        if (match && !usedIds.has(match) && (name ? shouldUseNamedMatch : true)) {\n          screen.current[cacheKey][id] = match;\n          screen.current.byLastId[duplicatedId] = match;\n          usedIds.add(match);\n          return match;\n        }\n      }\n    }\n    const last = cache2.current.byLastId[id];\n    if (last && !usedIds.has(last)) {\n      usedIds.add(last);\n      screen.current.byId[id] = last;\n      return last;\n    }\n    if (possibleMatch) {\n      const [match, duplicatedId] = possibleMatch;\n      screen.current[cacheKey][id] = match;\n      screen.current.byLastId[duplicatedId] = match;\n      usedIds.add(match);\n      return match;\n    }\n    const possible = cache2.current.byPossibleId[id];\n    if (possible && !usedIds.has(possible)) {\n      usedIds.add(possible);\n      screen.current.byId[id] = possible;\n      return possible;\n    }\n    const rootDuplicatedId = duplicatedFrom == null ? void 0 : duplicatedFrom[0];\n    const identifier = name || rootDuplicatedId || id;\n    const value = (cache2.current.count[cacheKey][identifier] ?? -1) + 1;\n    const { layoutId, value: nextValue } = nextLayoutId(identifier, value, usedIds);\n    cache2.current.count[cacheKey][identifier] = nextValue;\n    screen.current[cacheKey][id] = layoutId;\n    if (duplicatedFrom == null ? void 0 : duplicatedFrom.length) {\n      if (!name) {\n        const lastId = duplicatedFrom[duplicatedFrom.length - 1];\n        if (lastId) {\n          screen.current.byLastId[lastId] = layoutId;\n        }\n        if (duplicatedFrom.length > 1) {\n          for (let index = 0; index < duplicatedFrom.length - 1; index++) {\n            const possibleId = duplicatedFrom[index];\n            if (possibleId === void 0)\n              continue;\n            if (!screen.current.byPossibleId[possibleId]) {\n              screen.current.byPossibleId[possibleId] = layoutId;\n            }\n          }\n        }\n      }\n    }\n    screen.current.byLayoutId[layoutId] = nodeIdentifier;\n    usedIds.add(layoutId);\n    return layoutId;\n  }, []);\n  const persistLayoutIdCache = useCallback4(() => {\n    cache2.current = {\n      byId: {\n        ...cache2.current.byId,\n        ...screen.current.byId\n      },\n      byLastId: {\n        ...cache2.current.byLastId,\n        ...screen.current.byLastId\n      },\n      byPossibleId: {\n        ...cache2.current.byPossibleId,\n        ...screen.current.byPossibleId\n      },\n      byName: {\n        ...cache2.current.byName,\n        ...screen.current.byName\n      },\n      byLastName: { ...cache2.current.byLastName, ...screen.current.byLastName },\n      byLayoutId: { ...cache2.current.byLayoutId, ...screen.current.byLayoutId },\n      // Unlike the count.byId, we need to reset the count.byName because\n      // named layers might not have duplicatedFrom ids (e.g. imported\n      // from Figma). When we can use duplicatedFrom ids to check if an id\n      // was assigned on a previous screen, we don't increment the count,\n      // which means that the count only increments for new items, and\n      // only increments on a new screen if the node is new. Since named\n      // layers need to always match in some way between screens, we reset\n      // the count so that the second named layer on a second screen is\n      // always name-1 if it doesn't have any duplicatedFrom ids.\n      count: {\n        ...cache2.current.count,\n        byName: {}\n      }\n    };\n    screen.current = {\n      byId: {},\n      byName: {},\n      byLastId: {},\n      byPossibleId: {},\n      byLastName: {},\n      byLayoutId: {}\n    };\n    usedIds.clear();\n  }, []);\n  const contextValue = useRef5({\n    getLayoutId,\n    persistLayoutIdCache,\n    top: true,\n    enabled: true\n  }).current;\n  return /* @__PURE__ */ jsx5(LayoutIdContext.Provider, { value: contextValue, children });\n}\nfunction nextLayoutId(identifier, initialValue, usedIds) {\n  let value = initialValue;\n  let layoutId = value ? `${identifier}-${value}` : identifier;\n  while (usedIds.has(layoutId)) {\n    value++;\n    layoutId = `${identifier}-${value}`;\n  }\n  return { layoutId, value };\n}\nfunction AutomaticLayoutIds({ enabled = true, ...props }) {\n  const context = useContext2(LayoutIdContext);\n  const contextValue = useMemo(() => {\n    return {\n      ...context,\n      enabled\n    };\n  }, [enabled]);\n  return /* @__PURE__ */ jsx5(LayoutIdContext.Provider, { ...props, value: contextValue });\n}\n\n// ../../library/src/components/Device/Device.tsx\nimport React12, { Component as Component2 } from \"react\";\n\n// ../../library/src/components/utils/useConstant.ts\nimport { useRef as useRef6 } from \"react\";\nfunction useConstant(init) {\n  const ref = useRef6(null);\n  if (ref.current === null) {\n    ref.current = init();\n  }\n  return ref.current;\n}\n\n// ../../library/src/components/Device/ErrorPlaceholder.tsx\nimport { jsx as jsx6, jsxs } from \"react/jsx-runtime\";\nvar baseStyle = {\n  background: void 0,\n  display: \"flex\",\n  flexDirection: \"column\",\n  justifyContent: \"center\",\n  alignItems: \"center\",\n  lineHeight: \"1.4em\",\n  textOverflow: \"ellipsis\",\n  overflow: \"hidden\",\n  minHeight: 0,\n  width: \"100%\",\n  height: \"100%\"\n};\nvar errorStyle = /* @__PURE__ */ (() => ({\n  ...baseStyle,\n  border: \"1px solid rgba(149, 149, 149, 0.15)\",\n  borderRadius: 6,\n  fontSize: \"12px\",\n  backgroundColor: \"rgba(149, 149, 149, 0.1)\",\n  color: \"#a5a5a5\"\n}))();\nvar textStyle = {\n  overflow: \"hidden\",\n  whiteSpace: \"nowrap\",\n  textOverflow: \"ellipsis\",\n  maxWidth: \"100%\",\n  flexShrink: 0,\n  padding: `0 10px`\n};\nvar titleStyle = /* @__PURE__ */ (() => ({\n  ...textStyle,\n  // TODO: Use Fresco tokens for this.\n  fontWeight: 500\n}))();\nvar messageStyle = /* @__PURE__ */ (() => ({\n  ...textStyle,\n  whiteSpace: \"pre\",\n  maxHeight: \"calc(50% - calc(20px * var(--framerInternalCanvas-canvasPlaceholderContentScaleFactor, 1)))\",\n  WebkitMaskImage: \"linear-gradient(to bottom, black 80%, transparent 100%)\"\n}))();\nfunction ErrorPlaceholder(props) {\n  const { error, file } = props;\n  const title = file ? `Error in ${stripSlash(file)}` : \"Error\";\n  const message = error instanceof Error ? error.message : \"\" + error;\n  return /* @__PURE__ */ jsxs(\"div\", { style: errorStyle, children: [\n    /* @__PURE__ */ jsx6(\"div\", { className: \"text\", style: titleStyle, children: title }),\n    message && /* @__PURE__ */ jsx6(\"div\", { className: \"text\", style: messageStyle, children: message })\n  ] });\n}\nfunction stripSlash(title) {\n  if (title.startsWith(\"./\")) {\n    return title.replace(\"./\", \"\");\n  }\n  return title;\n}\n\n// ../../library/src/components/Device/Device.tsx\nimport { jsx as jsx7, jsxs as jsxs2 } from \"react/jsx-runtime\";\nfunction getScaleData(deviceOptions, containerSize) {\n  const { componentWidth, componentHeight } = getComponentSize(deviceOptions);\n  const scaleX = containerSize.width / componentWidth;\n  const scaleY = containerSize.height / componentHeight;\n  const scale = Math.min(scaleX, scaleY, 1);\n  let screenScalePixelFix = 1;\n  if (scale < 1) {\n    const actualScreenWidth = deviceOptions.screenWidth * scale;\n    const desiredScreenWidth = actualScreenWidth + 1;\n    const screenScaleX = desiredScreenWidth / actualScreenWidth;\n    const actualScreenHeight = deviceOptions.screenHeight * scale;\n    const desiredScreenHeight = actualScreenHeight + 1;\n    const screenScaleY = desiredScreenHeight / actualScreenHeight;\n    const screenScale = Math.max(screenScaleX, screenScaleY);\n    screenScalePixelFix = screenScale;\n  }\n  return {\n    scale,\n    screenScalePixelFix,\n    scaledComponentWidth: componentWidth * scale,\n    scaledComponentHeight: componentHeight * scale,\n    scaledDeviceWidth: deviceOptions.deviceWidth * scale,\n    scaledDeviceHeight: deviceOptions.deviceHeight * scale\n  };\n}\nfunction getColorsFromTheme(theme, type) {\n  if (type === \"none\")\n    return {};\n  if (!theme)\n    return {};\n  const isDarkTheme = theme === \"dark\";\n  return {\n    shadowColor: isDarkTheme ? \"rgba(0, 0, 0, 0.55)\" : \"rgba(0, 0, 0, 0.15)\",\n    bezelColor: isDarkTheme ? \"#222\" : \"#fff\",\n    bezelShadeColor: isDarkTheme ? \"#000\" : \"rgba(0, 0, 0, 0.2)\",\n    screenColor: isDarkTheme ? \"#333\" : \"#eee\"\n  };\n}\nvar ErrorBoundary = class extends Component2 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", {});\n  }\n  componentDidCatch(error, info) {\n    var _a;\n    let stack = (_a = info.componentStack) == null ? void 0 : _a.split(\"\\n\").filter((line) => line.length !== 0);\n    let currentIndex = 0;\n    if (stack) {\n      for (const line of stack) {\n        if (line.startsWith(`    in ${this.constructor.name}`)) {\n          break;\n        }\n        currentIndex++;\n      }\n      stack = stack.slice(0, currentIndex);\n    }\n    this.setState({\n      lastError: {\n        error,\n        componentStack: stack\n      }\n    });\n  }\n  componentDidUpdate(_, prevState) {\n    if (this.state.lastError === void 0)\n      return;\n    if (prevState.lastError === this.state.lastError)\n      this.setState({ lastError: void 0 });\n  }\n  render() {\n    if (this.state.lastError) {\n      return /* @__PURE__ */ jsx7(ErrorPlaceholder, { error: this.state.lastError.error.message, file: \"Prototype\" });\n    }\n    return this.props.children;\n  }\n};\nfunction Device({\n  canResize = false,\n  children,\n  ResizeObserver = safeWindow.ResizeObserver,\n  ...options\n}) {\n  var _a, _b;\n  const optionsRef = React12.useRef(void 0);\n  if (optionsRef.current === void 0)\n    optionsRef.current = options;\n  const deviceAppearance = (_a = options.deviceOptions) == null ? void 0 : _a.appearance.type;\n  const scaleDataRef = React12.useRef();\n  const containerRef = React12.useRef(null);\n  const deviceRef = React12.useRef(null);\n  const screenRef = React12.useRef(null);\n  const updateImperativeScale = ({ scale, screenScalePixelFix }) => {\n    if (!scaleDataRef.current || !deviceRef.current || !screenRef.current)\n      return;\n    deviceRef.current.style.transform = `scale(${scale})`;\n    screenRef.current.style.transform = `scale(${screenScalePixelFix})`;\n  };\n  if (scaleDataRef.current === void 0 && options.deviceOptions && options.scaleTo && options.scaleTo !== \"dynamic\") {\n    const scale = scaleDataRef.current = getScaleData(options.deviceOptions, options.scaleTo);\n    updateImperativeScale(scale);\n  }\n  const invertScale = React12.useCallback(\n    (point) => {\n      if (!scaleDataRef.current)\n        return point;\n      const { scale = 1 } = scaleDataRef.current;\n      return { x: point.x / scale, y: point.y / scale };\n    },\n    [scaleDataRef]\n  );\n  const updateScale = React12.useCallback(() => {\n    const { deviceOptions, scaleTo, onScaleChange } = optionsRef.current ?? {};\n    if (!deviceOptions || !scaleTo || scaleTo !== \"dynamic\" || !containerRef.current)\n      return;\n    if (containerRef.current.offsetWidth === 0 || containerRef.current.offsetHeight === 0)\n      return;\n    const scaleData = scaleDataRef.current = getScaleData(deviceOptions, {\n      width: containerRef.current.offsetWidth,\n      height: containerRef.current.offsetHeight\n    });\n    onScaleChange == null ? void 0 : onScaleChange(scaleData);\n    updateImperativeScale(scaleData);\n  }, []);\n  const observer = useConstant(() => {\n    if (!ResizeObserver) {\n      return;\n    }\n    return new ResizeObserver(() => updateScale());\n  });\n  React12.useLayoutEffect(() => {\n    optionsRef.current = {\n      deviceOptions: options.deviceOptions,\n      onScaleChange: options.onScaleChange,\n      overrideTheme: options.overrideTheme,\n      scaleTo: options.scaleTo\n    };\n  }, [options.deviceOptions, options.onScaleChange, options.overrideTheme, options.scaleTo]);\n  React12.useLayoutEffect(() => {\n    updateScale();\n  }, [updateScale]);\n  React12.useEffect(() => {\n    if (!observer || !containerRef.current)\n      return;\n    observer.observe(containerRef.current);\n    return () => observer.disconnect();\n  }, [observer]);\n  const { containerStyle, handStyle, deviceStyle, deviceImageStyle, screenStyle } = getDeviceStyle(options);\n  const resizeStyles = canResize ? {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: \"100%\"\n  } : {};\n  const screenBackground = ((_b = options.deviceOptions) == null ? void 0 : _b.transparentBackground) ? \"transparent\" : \"white\";\n  return /* @__PURE__ */ jsx7(\"div\", { style: { ...containerStyle, ...resizeStyles }, ref: containerRef, children: /* @__PURE__ */ jsxs2(\"div\", { style: { ...deviceStyle }, ref: deviceRef, children: [\n    handStyle && /* @__PURE__ */ jsx7(\"div\", { style: handStyle }),\n    deviceAppearance === \"external-clay\" && deviceImageStyle && /* @__PURE__ */ jsx7(\"div\", { style: deviceImageStyle }),\n    /* @__PURE__ */ jsx7(\n      \"div\",\n      {\n        style: {\n          ...screenStyle,\n          pointerEvents: void 0,\n          backgroundColor: children ? screenBackground : screenStyle.backgroundColor\n        },\n        ref: screenRef,\n        children: /* @__PURE__ */ jsx7(MotionConfig, { transformPagePoint: invertScale, children: /* @__PURE__ */ jsx7(ErrorBoundary, { children }) })\n      }\n    ),\n    deviceAppearance === \"realistic\" && deviceImageStyle && /* @__PURE__ */ jsx7(\"div\", { style: deviceImageStyle })\n  ] }) });\n}\nvar DEVICE_PADDING = 45;\nvar HAND_IMG_WIDTH = 2400;\nvar HAND_IMG_HEIGHT = 3740;\nvar HAND_IMG_GAP_WIDTH = 859;\nvar HAND_IMG_GAP_LEFT = 772;\nvar HAND_IMG_GAP_BOTTOM = /* @__PURE__ */ (() => 992 - 5)();\nvar noDeviceSize = { componentWidth: 500, componentHeight: 500 };\nfunction getComponentSize(options) {\n  if (!options)\n    return noDeviceSize;\n  const { deviceWidth, deviceHeight, noPadding } = options;\n  const padding = noPadding ? 0 : DEVICE_PADDING * 2;\n  return {\n    componentWidth: deviceWidth + padding,\n    componentHeight: deviceHeight + padding\n  };\n}\nfunction getDeviceStyle({ scaleTo, deviceOptions, overrideTheme } = {}) {\n  const noDeviceStyle = { containerStyle: {}, deviceStyle: {}, screenStyle: {} };\n  if (!deviceOptions)\n    return noDeviceStyle;\n  const { componentWidth, componentHeight } = getComponentSize(deviceOptions);\n  const overriddenColors = getColorsFromTheme(overrideTheme, deviceOptions.appearance.type);\n  const {\n    deviceWidth,\n    deviceHeight,\n    appearance,\n    screenWidth,\n    screenHeight,\n    screenMaxHeight,\n    screenOffsetTop,\n    screenOffsetLeft,\n    screenRadius,\n    screenMaskImage,\n    screenColor,\n    shadow,\n    background,\n    hand\n  } = deviceOptions;\n  const boxShadows = [];\n  if (appearance.type === \"clay\" && shadow) {\n    boxShadows.push(shadow);\n  }\n  let bezelStyle = void 0;\n  if (appearance.type === \"clay\") {\n    bezelStyle = {\n      borderRadius: appearance.bezelRadius,\n      backgroundColor: overriddenColors.bezelColor || appearance.bezelColor\n    };\n    if (overriddenColors.bezelShadeColor || appearance.bezelShadeColor) {\n      boxShadows.push(`inset 0 0 15px ${overriddenColors.bezelShadeColor || appearance.bezelShadeColor}`);\n    }\n  }\n  const handOffsetLeft = (hand == null ? void 0 : hand.offsetLeft) ?? 0;\n  const handOffsetRight = (hand == null ? void 0 : hand.offsetRight) ?? 0;\n  const handOffsetBottom = (hand == null ? void 0 : hand.offsetBottom) ?? 0;\n  const handScale = (deviceWidth - handOffsetLeft - handOffsetRight) / HAND_IMG_GAP_WIDTH;\n  return {\n    containerStyle: {\n      width: scaleTo ? \"100%\" : componentWidth,\n      height: scaleTo ? \"100%\" : componentHeight,\n      flex: \"1 1 0\",\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      overflow: \"hidden\",\n      background\n    },\n    handStyle: hand && {\n      width: HAND_IMG_WIDTH * handScale,\n      height: HAND_IMG_HEIGHT * handScale,\n      position: \"absolute\",\n      pointerEvents: \"none\",\n      backgroundImage: `url(\"${hand.imageUrl}\")`,\n      backgroundSize: \"contain\",\n      backgroundRepeat: \"no-repeat\",\n      left: -HAND_IMG_GAP_LEFT * handScale + handOffsetLeft,\n      bottom: -HAND_IMG_GAP_BOTTOM * handScale + handOffsetBottom\n    },\n    deviceStyle: {\n      width: deviceWidth,\n      height: deviceHeight,\n      flexShrink: 0,\n      position: \"absolute\",\n      boxShadow: boxShadows.join(\",\"),\n      ...bezelStyle\n    },\n    deviceImageStyle: appearance.type === \"realistic\" || appearance.type === \"external-clay\" ? {\n      width: appearance.imageWidth,\n      height: appearance.imageHeight,\n      position: \"absolute\",\n      pointerEvents: \"none\",\n      overflow: \"hidden\",\n      backgroundImage: `url(\"${appearance.imageUrl}\")`,\n      backgroundPosition: \"top left\",\n      backgroundRepeat: \"no-repeat\",\n      backgroundSize: `${appearance.imageWidth}px ${appearance.imageHeight}px`,\n      // Rotate 90 degrees counter-clockwise around (0,0), then move the\n      // result down into the viewport (rightmost transform is applied first).\n      transformOrigin: \"top left\",\n      transform: appearance.rotateImage ? `translateY(${appearance.imageWidth}px) rotate(-90deg)` : void 0\n    } : void 0,\n    screenStyle: {\n      width: screenWidth,\n      height: screenHeight,\n      maxHeight: screenMaxHeight,\n      position: \"absolute\",\n      top: screenOffsetTop,\n      left: screenOffsetLeft,\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      overflow: \"hidden\",\n      borderRadius: screenRadius,\n      backgroundColor: overriddenColors.screenColor || screenColor,\n      ...screenMaskImage && {\n        maskImage: screenMaskImage,\n        WebkitMaskImage: screenMaskImage,\n        maskSize: \"contain\",\n        WebkitMaskSize: \"contain\"\n      }\n    }\n  };\n}\n\n// ../../library/src/components/Device/DeviceCodeComponent.tsx\nimport React15 from \"react\";\n\n// ../../library/src/render/types/NewConstraints.tsx\nimport React13 from \"react\";\n\n// ../../library/src/render/utils/isFiniteNumber.ts\nfunction isFiniteNumber(value) {\n  return Number.isFinite(value);\n}\nfunction finiteNumber(value) {\n  return isFiniteNumber(value) ? value : void 0;\n}\n\n// ../../library/src/utils/type-guards.ts\nfunction isEmpty(obj) {\n  return !obj || !Object.keys(obj).length && obj.constructor === Object;\n}\nfunction isReactElement(test) {\n  return typeof test !== \"string\" && typeof test !== \"number\";\n}\nfunction isReactChild(test) {\n  return test !== null && typeof test !== \"undefined\" && typeof test !== \"boolean\" && !isEmpty(test);\n}\n\n// ../../library/src/render/utils/degreesToRadians.ts\nfunction degreesToRadians(degrees) {\n  return degrees * (Math.PI / 180);\n}\n\n// ../../library/src/render/types/Line.ts\nvar Line = /* @__PURE__ */ (() => {\n  function Line2(a, b) {\n    return { a, b };\n  }\n  Line2.offset = (line, offset) => {\n    const angle = Point.angleFromX(line.a, line.b);\n    const rad = degreesToRadians(angle);\n    const x = offset * Math.sin(rad);\n    const y = offset * Math.cos(rad);\n    return Line2(\n      { x: line.a.x + x, y: line.a.y - y },\n      {\n        x: line.b.x + x,\n        y: line.b.y - y\n      }\n    );\n  };\n  Line2.intersection = (lineA, lineB, segments) => {\n    const x1 = lineA.a.x;\n    const y1 = lineA.a.y;\n    const x2 = lineA.b.x;\n    const y2 = lineA.b.y;\n    const x3 = lineB.a.x;\n    const y3 = lineB.a.y;\n    const x4 = lineB.b.x;\n    const y4 = lineB.b.y;\n    const a1 = (x4 - x3) * (y3 - y1) - (y4 - y3) * (x3 - x1);\n    const b1 = (x4 - x3) * (y2 - y1) - (y4 - y3) * (x2 - x1);\n    const c1 = (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1);\n    if (a1 === 0 && b1 === 0)\n      return null;\n    if (b1 === 0)\n      return null;\n    const alpha = a1 / b1;\n    const beta = c1 / b1;\n    if (segments && (alpha < 0 || alpha > 1 || beta < 0 || beta > 1))\n      return null;\n    return {\n      x: x1 + alpha * (x2 - x1),\n      y: y1 + alpha * (y2 - y1)\n    };\n  };\n  Line2.intersectionAngle = (lineA, lineB) => {\n    const deltaAX = lineA.b.x - lineA.a.x;\n    const deltaAY = lineA.b.y - lineA.a.y;\n    const deltaBX = lineB.b.x - lineB.a.x;\n    const deltaBY = lineB.b.y - lineB.a.y;\n    const angle = Math.atan2(deltaAX * deltaBY - deltaAY * deltaBX, deltaAX * deltaBX + deltaAY * deltaBY);\n    return angle * (180 / Math.PI);\n  };\n  Line2.isOrthogonal = (line) => {\n    return line.a.x === line.b.x || line.a.y === line.b.y;\n  };\n  Line2.perpendicular = (line, pointOnLine) => {\n    const deltaX = line.a.x - line.b.x;\n    const deltaY = line.a.y - line.b.y;\n    const pointB = Point(pointOnLine.x - deltaY, pointOnLine.y + deltaX);\n    return Line2(pointB, pointOnLine);\n  };\n  Line2.projectPoint = (line, point) => {\n    const perp = Line2.perpendicular(line, point);\n    return Line2.intersection(line, perp);\n  };\n  Line2.pointAtPercentDistance = (line, distance2) => {\n    const hypotenuse = Line2.distance(line);\n    const r = distance2 * hypotenuse / hypotenuse;\n    return {\n      x: r * line.b.x + (1 - r) * line.a.x,\n      y: r * line.b.y + (1 - r) * line.a.y\n    };\n  };\n  Line2.distance = (line) => {\n    return Point.distance(line.a, line.b);\n  };\n  return Line2;\n})();\n\n// ../../library/src/render/types/Rect.ts\nvar Rect = {\n  /**\n   *\n   * @param rect -\n   * @param other -\n   * @returns if the input rectangles are equal in size and position\n   * @public\n   */\n  equals: function(rect, other) {\n    if (rect === other)\n      return true;\n    if (!rect || !other)\n      return false;\n    return rect.x === other.x && rect.y === other.y && rect.width === other.width && rect.height === other.height;\n  },\n  /** @internal */\n  atOrigin: (size) => {\n    return { ...size, x: 0, y: 0 };\n  },\n  /** @internal */\n  fromTwoPoints: (a, b) => {\n    return {\n      x: Math.min(a.x, b.x),\n      y: Math.min(a.y, b.y),\n      width: Math.abs(a.x - b.x),\n      height: Math.abs(a.y - b.y)\n    };\n  },\n  /** @internal */\n  fromRect: (rect) => {\n    return {\n      x: rect.left,\n      y: rect.top,\n      width: rect.right - rect.left,\n      height: rect.bottom - rect.top\n    };\n  },\n  /** @internal */\n  multiply: (rect, n) => {\n    return {\n      x: rect.x * n,\n      y: rect.y * n,\n      width: rect.width * n,\n      height: rect.height * n\n    };\n  },\n  /** @internal */\n  divide: (rect, n) => {\n    return Rect.multiply(rect, 1 / n);\n  },\n  /** @internal */\n  offset: (rect, delta) => {\n    const xOffset = typeof delta.x === \"number\" ? delta.x : 0;\n    const yOffset = typeof delta.y === \"number\" ? delta.y : 0;\n    return {\n      ...rect,\n      x: rect.x + xOffset,\n      y: rect.y + yOffset\n    };\n  },\n  /** @internal */\n  inflate: (rect, value) => {\n    if (value === 0)\n      return rect;\n    const doubleValue = 2 * value;\n    return {\n      x: rect.x - value,\n      y: rect.y - value,\n      width: rect.width + doubleValue,\n      height: rect.height + doubleValue\n    };\n  },\n  /** @internal */\n  pixelAligned: (rect) => {\n    const x = Math.round(rect.x);\n    const y = Math.round(rect.y);\n    const rectMaxX = Math.round(rect.x + rect.width);\n    const rectMaxY = Math.round(rect.y + rect.height);\n    const width = Math.max(rectMaxX - x, 0);\n    const height = Math.max(rectMaxY - y, 0);\n    return { x, y, width, height };\n  },\n  /** @internal */\n  halfPixelAligned: (rect) => {\n    const x = Math.round(rect.x * 2) / 2;\n    const y = Math.round(rect.y * 2) / 2;\n    const rectMaxX = Math.round((rect.x + rect.width) * 2) / 2;\n    const rectMaxY = Math.round((rect.y + rect.height) * 2) / 2;\n    const width = Math.max(rectMaxX - x, 1);\n    const height = Math.max(rectMaxY - y, 1);\n    return { x, y, width, height };\n  },\n  /** @internal */\n  round: (rect, decimals = 0) => {\n    const x = roundedNumber(rect.x, decimals);\n    const y = roundedNumber(rect.y, decimals);\n    const width = roundedNumber(rect.width, decimals);\n    const height = roundedNumber(rect.height, decimals);\n    return { x, y, width, height };\n  },\n  /** @internal */\n  roundToOutside: (rect) => {\n    const x = Math.floor(rect.x);\n    const y = Math.floor(rect.y);\n    const rectMaxX = Math.ceil(rect.x + rect.width);\n    const rectMaxY = Math.ceil(rect.y + rect.height);\n    const width = Math.max(rectMaxX - x, 0);\n    const height = Math.max(rectMaxY - y, 0);\n    return { x, y, width, height };\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  minX: (rect) => {\n    return rect.x;\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  maxX: (rect) => {\n    return rect.x + rect.width;\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  minY: (rect) => {\n    return rect.y;\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  maxY: (rect) => {\n    return rect.y + rect.height;\n  },\n  /** @internal */\n  positions: (rect) => {\n    return {\n      minX: rect.x,\n      midX: rect.x + rect.width / 2,\n      maxX: Rect.maxX(rect),\n      minY: rect.y,\n      midY: rect.y + rect.height / 2,\n      maxY: Rect.maxY(rect)\n    };\n  },\n  /**\n   *\n   * @param rect -\n   * @internal\n   */\n  center: (rect) => {\n    return {\n      x: rect.x + rect.width / 2,\n      y: rect.y + rect.height / 2\n    };\n  },\n  /** @internal */\n  boundingRectFromPoints: (ps) => {\n    let minX = Infinity;\n    let maxX = -Infinity;\n    let minY = Infinity;\n    let maxY = -Infinity;\n    for (let i = 0; i < ps.length; i++) {\n      const point = ps[i];\n      minX = Math.min(minX, point.x);\n      maxX = Math.max(maxX, point.x);\n      minY = Math.min(minY, point.y);\n      maxY = Math.max(maxY, point.y);\n    }\n    return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n  },\n  /**\n   * Returns the precise box defined by the given points, starting from the top-left point. This produces the same\n   * Rect as Rect.boundingRectFromPoints *only* when the rect described by the points is not rotated.\n   *\n   * @internal\n   */\n  fromPoints: (ps) => {\n    const [tl, tr, _, bl] = ps;\n    const { x, y } = tl;\n    const width = Point.distance(tl, tr);\n    const height = Point.distance(tl, bl);\n    return { x, y, width, height };\n  },\n  /**\n   * Returns a rect containing all input rects\n   * @param rect - a list of rectangles\n   * @returns A rectangle that fits exactly around the input rects\n   * @internal\n   */\n  merge: (...rect) => {\n    const min = {\n      x: Math.min(...rect.map(Rect.minX)),\n      y: Math.min(...rect.map(Rect.minY))\n    };\n    const max = {\n      x: Math.max(...rect.map(Rect.maxX)),\n      y: Math.max(...rect.map(Rect.maxY))\n    };\n    return Rect.fromTwoPoints(min, max);\n  },\n  /** @internal */\n  intersection: (rect1, rect2) => {\n    const x = Math.max(rect1.x, rect2.x);\n    const x2 = Math.min(rect1.x + rect1.width, rect2.x + rect2.width);\n    const y = Math.max(rect1.y, rect2.y);\n    const y2 = Math.min(rect1.y + rect1.height, rect2.y + rect2.height);\n    return { x, y, width: x2 - x, height: y2 - y };\n  },\n  /**\n   * Returns all the corner points for a rect\n   * @param rect -\n   * @internal\n   */\n  points: (rect) => {\n    return [\n      { x: Rect.minX(rect), y: Rect.minY(rect) },\n      { x: Rect.minX(rect), y: Rect.maxY(rect) },\n      { x: Rect.maxX(rect), y: Rect.minY(rect) },\n      { x: Rect.maxX(rect), y: Rect.maxY(rect) }\n    ];\n  },\n  /**\n   * Returns all the corner points for a rect at the origin.\n   * @internal\n   */\n  pointsAtOrigin: (rect) => {\n    return [\n      { x: 0, y: 0 },\n      { x: rect.width, y: 0 },\n      { x: rect.width, y: rect.height },\n      { x: 0, y: rect.height }\n    ];\n  },\n  /** Takes a rect and transforms it by a matrix, resulting in the bounding rectangle of the\n   * rotated and/or translated original.\n   * @param rect - rectangle to transform\n   * @param matrix - matrix to transform by\n   * @returns The bounding rectangle of the rotated and/or translated rect.\n   */\n  transform: (rect, matrix) => {\n    const { x: x1, y: y1 } = matrix.transformPoint({ x: rect.x, y: rect.y });\n    const { x: x2, y: y2 } = matrix.transformPoint({ x: rect.x + rect.width, y: rect.y });\n    const { x: x3, y: y3 } = matrix.transformPoint({ x: rect.x + rect.width, y: rect.y + rect.height });\n    const { x: x4, y: y4 } = matrix.transformPoint({ x: rect.x, y: rect.y + rect.height });\n    const x = Math.min(x1, x2, x3, x4);\n    const width = Math.max(x1, x2, x3, x4) - x;\n    const y = Math.min(y1, y2, y3, y4);\n    const height = Math.max(y1, y2, y3, y4) - y;\n    return { x, y, width, height };\n  },\n  /**\n   * Checks if a rectangle contains a point\n   * @param rect - The rectangle to check\n   * @param point - The point to check\n   * @returns true if the provided rectangle contains the provided point\n   * @internal\n   */\n  containsPoint: (rect, point) => {\n    if (point.x < Rect.minX(rect)) {\n      return false;\n    }\n    if (point.x > Rect.maxX(rect)) {\n      return false;\n    }\n    if (point.y < Rect.minY(rect)) {\n      return false;\n    }\n    if (point.y > Rect.maxY(rect)) {\n      return false;\n    }\n    if (Number.isNaN(rect.x)) {\n      return false;\n    }\n    if (Number.isNaN(rect.y)) {\n      return false;\n    }\n    return true;\n  },\n  /**\n   * Returns wether a rect contains another rect entirely\n   * @param rectA -\n   * @param rectB -\n   * @returns true if rectA contains rectB\n   */\n  containsRect: (rectA, rectB) => {\n    for (const point of Rect.points(rectB)) {\n      if (!Rect.containsPoint(rectA, point)) {\n        return false;\n      }\n    }\n    return true;\n  },\n  /** @internal */\n  toCSS: (rect) => {\n    return {\n      display: \"block\",\n      transform: `translate(${rect.x}px, ${rect.y}px)`,\n      width: `${rect.width}px`,\n      height: `${rect.height}px`\n    };\n  },\n  /** @internal */\n  inset: (rect, n) => {\n    return {\n      x: rect.x + n,\n      y: rect.y + n,\n      width: Math.max(0, rect.width - 2 * n),\n      height: Math.max(0, rect.height - 2 * n)\n    };\n  },\n  /** @internal */\n  intersects: (rectA, rectB) => {\n    return !(rectB.x >= Rect.maxX(rectA) || Rect.maxX(rectB) <= rectA.x || rectB.y >= Rect.maxY(rectA) || Rect.maxY(rectB) <= rectA.y);\n  },\n  /** @internal */\n  overlapHorizontally: (rectA, rectB) => {\n    const aMax = Rect.maxX(rectA);\n    const bMax = Rect.maxX(rectB);\n    return aMax > rectB.x && bMax > rectA.x;\n  },\n  /** @internal */\n  overlapVertically: (rectA, rectB) => {\n    const aMax = Rect.maxY(rectA);\n    const bMax = Rect.maxY(rectB);\n    return aMax > rectB.y && bMax > rectA.y;\n  },\n  /** @internal */\n  doesNotIntersect: (rect, rects) => {\n    return rects.find((comparingRect) => {\n      return Rect.intersects(comparingRect, rect);\n    }) === void 0;\n  },\n  /**\n   *\n   * @param rectA -\n   * @param rectB -\n   * @returns if the input rectangles are equal in size and position\n   * @public\n   * @deprecated: please use Rect.equals instead\n   */\n  isEqual: (rectA, rectB) => {\n    return Rect.equals(rectA, rectB);\n  },\n  // @TODO: duplicate of points()\n  /**\n   * @returns [tl, tr, br, bl]\n   * @internal\n   */\n  cornerPoints: (rect) => {\n    const rectMinX = rect.x;\n    const rectMaxX = rect.x + rect.width;\n    const rectMinY = rect.y;\n    const rectMaxY = rect.y + rect.height;\n    const corner1 = { x: rectMinX, y: rectMinY };\n    const corner2 = { x: rectMaxX, y: rectMinY };\n    const corner3 = { x: rectMaxX, y: rectMaxY };\n    const corner4 = { x: rectMinX, y: rectMaxY };\n    return [corner1, corner2, corner3, corner4];\n  },\n  /** @internal */\n  midPoints: (rect) => {\n    const rectMinX = rect.x;\n    const rectMidX = rect.x + rect.width / 2;\n    const rectMaxX = rect.x + rect.width;\n    const rectMinY = rect.y;\n    const rectMidY = rect.y + rect.height / 2;\n    const rectMaxY = rect.y + rect.height;\n    const top = { x: rectMidX, y: rectMinY };\n    const right = { x: rectMaxX, y: rectMidY };\n    const bottom = { x: rectMidX, y: rectMaxY };\n    const left = { x: rectMinX, y: rectMidY };\n    return [top, right, bottom, left];\n  },\n  /** @internal */\n  pointDistance: (rect, point) => {\n    let x = 0;\n    let y = 0;\n    if (point.x < rect.x) {\n      x = rect.x - point.x;\n    } else if (point.x > Rect.maxX(rect)) {\n      x = point.x - Rect.maxX(rect);\n    }\n    if (point.y < rect.y) {\n      y = rect.y - point.y;\n    } else if (point.y > Rect.maxY(rect)) {\n      y = point.y - Rect.maxY(rect);\n    }\n    return Point.distance({ x, y }, { x: 0, y: 0 });\n  },\n  /** @internal */\n  fromAny: (rect, defaults = {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  }) => {\n    return {\n      x: rect.x || defaults.x,\n      y: rect.y || defaults.y,\n      width: rect.width || defaults.width,\n      height: rect.height || defaults.height\n    };\n  },\n  delta: (a, b) => {\n    const pointA = { x: Rect.minX(a), y: Rect.minY(a) };\n    const pointB = { x: Rect.minX(b), y: Rect.minY(b) };\n    return {\n      x: pointA.x - pointB.x,\n      y: pointA.y - pointB.y\n    };\n  },\n  /** @internal */\n  withMinSize: (rect, minSize) => {\n    const { width: minWidth, height: minHeight } = minSize;\n    const diffX = rect.width - minWidth;\n    const diffY = rect.height - minHeight;\n    return {\n      width: Math.max(rect.width, minWidth),\n      height: Math.max(rect.height, minHeight),\n      x: rect.width < minWidth ? rect.x + diffX / 2 : rect.x,\n      y: rect.height < minHeight ? rect.y + diffY / 2 : rect.y\n    };\n  },\n  /**\n   * Return false if any point is not inside or on the provided rect.\n   * @internal\n   */\n  anyPointsOutsideRect: (rect, ps) => {\n    const rectMinX = Rect.minX(rect);\n    const rectMinY = Rect.minY(rect);\n    const rectMaxX = Rect.maxX(rect);\n    const rectMaxY = Rect.maxY(rect);\n    for (const point of ps) {\n      if (point.x < rectMinX || point.x > rectMaxX) {\n        return true;\n      }\n      if (point.y < rectMinY || point.y > rectMaxY) {\n        return true;\n      }\n    }\n    return false;\n  },\n  /** @internal */\n  edges: (rect) => {\n    const [tl, tr, br, bl] = Rect.cornerPoints(rect);\n    return [Line(tl, tr), Line(tr, br), Line(br, bl), Line(bl, tl)];\n  },\n  /**\n   * Return a new rect projected into a new position based on the anchor rect and the given direction/alignment.\n   * @internal\n   */\n  rebaseRectOnto: (rect, anchorRect, direction, alignment) => {\n    const rebasedRect = { ...rect };\n    switch (direction) {\n      case \"bottom\":\n      case \"top\":\n        switch (alignment) {\n          case \"start\":\n            rebasedRect.x = anchorRect.x;\n            break;\n          case \"center\":\n            rebasedRect.x = anchorRect.x + anchorRect.width / 2 - rect.width / 2;\n            break;\n          case \"end\":\n            rebasedRect.x = anchorRect.x + anchorRect.width - rect.width;\n            break;\n          default:\n            assertNever(alignment);\n        }\n        break;\n      case \"left\":\n        rebasedRect.x = anchorRect.x - rect.width;\n        break;\n      case \"right\":\n        rebasedRect.x = anchorRect.x + anchorRect.width;\n        break;\n      default:\n        assertNever(direction);\n    }\n    switch (direction) {\n      case \"left\":\n      case \"right\":\n        switch (alignment) {\n          case \"start\":\n            rebasedRect.y = anchorRect.y;\n            break;\n          case \"center\":\n            rebasedRect.y = anchorRect.y + anchorRect.height / 2 - rect.height / 2;\n            break;\n          case \"end\":\n            rebasedRect.y = anchorRect.y + anchorRect.height - rect.height;\n            break;\n          default:\n            assertNever(alignment);\n        }\n        break;\n      case \"top\":\n        rebasedRect.y = anchorRect.y - rect.height;\n        break;\n      case \"bottom\":\n        rebasedRect.y = anchorRect.y + anchorRect.height;\n        break;\n      default:\n        assertNever(direction);\n    }\n    return rebasedRect;\n  }\n};\n\n// ../../library/src/render/types/Constraints.ts\nvar constraintDefaults = {\n  left: null,\n  right: null,\n  top: null,\n  bottom: null,\n  centerX: \"50%\",\n  centerY: \"50%\",\n  aspectRatio: null,\n  parentSize: null,\n  width: 100,\n  height: 100\n};\nvar DimensionType = /* @__PURE__ */ ((DimensionType2) => {\n  DimensionType2[DimensionType2[\"FixedNumber\"] = 0] = \"FixedNumber\";\n  DimensionType2[DimensionType2[\"Percentage\"] = 1] = \"Percentage\";\n  DimensionType2[DimensionType2[\"Auto\"] = 2] = \"Auto\";\n  DimensionType2[DimensionType2[\"FractionOfFreeSpace\"] = 3] = \"FractionOfFreeSpace\";\n  DimensionType2[DimensionType2[\"Viewport\"] = 4] = \"Viewport\";\n  return DimensionType2;\n})(DimensionType || {});\nfunction isConstraintSupportingChild(child) {\n  if (!isReactChild(child) || !isReactElement(child)) {\n    return false;\n  }\n  return true;\n}\nvar ConstraintMask = {\n  // Modifies the constraint mask to remove invalid (mutually exclusive) options and returns the original.\n  // TODO: this removes major inconsistencies but probably needs to be merged with ConstraintSolver.\n  quickfix: (constraints) => {\n    if (constraints.widthType === 2 /* Auto */ || constraints.heightType === 2 /* Auto */) {\n      constraints.aspectRatio = null;\n    }\n    if (isFiniteNumber(constraints.aspectRatio)) {\n      if (constraints.left && constraints.right) {\n        constraints.widthType = 0 /* FixedNumber */;\n      }\n      if (constraints.top && constraints.bottom) {\n        constraints.heightType = 0 /* FixedNumber */;\n      }\n      if (constraints.left && constraints.right && constraints.top && constraints.bottom) {\n        constraints.bottom = false;\n      }\n      if (constraints.widthType !== 0 /* FixedNumber */ && constraints.heightType !== 0 /* FixedNumber */) {\n        constraints.heightType = 0 /* FixedNumber */;\n      }\n    }\n    if (constraints.left && constraints.right) {\n      if (constraints.fixedSize || constraints.widthType === 2 /* Auto */ || isFiniteNumber(constraints.maxWidth)) {\n        constraints.right = false;\n      }\n      constraints.widthType = 0 /* FixedNumber */;\n    }\n    if (constraints.top && constraints.bottom) {\n      if (constraints.fixedSize || constraints.heightType === 2 /* Auto */ || isFiniteNumber(constraints.maxHeight)) {\n        constraints.bottom = false;\n      }\n      constraints.heightType = 0 /* FixedNumber */;\n    }\n    return constraints;\n  }\n};\nfunction valueToDimensionType(value) {\n  if (typeof value === \"string\") {\n    const trimmedValue = value.trim();\n    if (trimmedValue === \"auto\")\n      return 2 /* Auto */;\n    if (trimmedValue.endsWith(\"fr\"))\n      return 3 /* FractionOfFreeSpace */;\n    if (trimmedValue.endsWith(\"%\"))\n      return 1 /* Percentage */;\n    if (trimmedValue.endsWith(\"vw\") || trimmedValue.endsWith(\"vh\"))\n      return 4 /* Viewport */;\n  }\n  return 0 /* FixedNumber */;\n}\nvar ConstraintValues = {\n  // Returns concrete current values given some ConstraintProperties.\n  fromProperties: (props) => {\n    const { left, right, top, bottom, width, height, centerX, centerY, aspectRatio, autoSize } = props;\n    const constraints = ConstraintMask.quickfix({\n      left: isFiniteNumber(left) || isAnimatable(left),\n      right: isFiniteNumber(right) || isAnimatable(right),\n      top: isFiniteNumber(top) || isAnimatable(top),\n      bottom: isFiniteNumber(bottom) || isAnimatable(bottom),\n      widthType: valueToDimensionType(width),\n      heightType: valueToDimensionType(height),\n      aspectRatio: aspectRatio || null,\n      fixedSize: autoSize === true\n    });\n    let widthValue = null;\n    let heightValue = null;\n    let widthType = 0 /* FixedNumber */;\n    let heightType = 0 /* FixedNumber */;\n    if (constraints.widthType !== 0 /* FixedNumber */ && typeof width === \"string\") {\n      const parsedWidth = parseFloat(width);\n      if (width.endsWith(\"fr\")) {\n        widthType = 3 /* FractionOfFreeSpace */;\n        widthValue = parsedWidth;\n      } else if (width === \"auto\") {\n        widthType = 2 /* Auto */;\n      } else {\n        widthType = 1 /* Percentage */;\n        widthValue = parsedWidth / 100;\n      }\n    } else if (width !== void 0 && typeof width !== \"string\") {\n      widthValue = Animatable.getNumber(width);\n    }\n    if (constraints.heightType !== 0 /* FixedNumber */ && typeof height === \"string\") {\n      const parsedHeight = parseFloat(height);\n      if (height.endsWith(\"fr\")) {\n        heightType = 3 /* FractionOfFreeSpace */;\n        heightValue = parsedHeight;\n      } else if (height === \"auto\") {\n        heightType = 2 /* Auto */;\n      } else {\n        heightType = 1 /* Percentage */;\n        heightValue = parseFloat(height) / 100;\n      }\n    } else if (height !== void 0 && typeof height !== \"string\") {\n      heightValue = Animatable.getNumber(height);\n    }\n    let centerAnchorX = 0.5;\n    let centerAnchorY = 0.5;\n    if (centerX) {\n      centerAnchorX = parseFloat(centerX) / 100;\n    }\n    if (centerY) {\n      centerAnchorY = parseFloat(centerY) / 100;\n    }\n    return {\n      left: constraints.left ? Animatable.getNumber(left) : null,\n      right: constraints.right ? Animatable.getNumber(right) : null,\n      top: constraints.top ? Animatable.getNumber(top) : null,\n      bottom: constraints.bottom ? Animatable.getNumber(bottom) : null,\n      widthType,\n      heightType,\n      width: widthValue,\n      height: heightValue,\n      aspectRatio: constraints.aspectRatio || null,\n      centerAnchorX,\n      centerAnchorY\n    };\n  },\n  toSize: (values, parentSizeInfo, autoSize, freeSpace) => {\n    let width = null;\n    let height = null;\n    const parentWidth = (parentSizeInfo == null ? void 0 : parentSizeInfo.sizing) ? Animatable.getNumber(parentSizeInfo == null ? void 0 : parentSizeInfo.sizing.width) : null;\n    const parentHeight = (parentSizeInfo == null ? void 0 : parentSizeInfo.sizing) ? Animatable.getNumber(parentSizeInfo == null ? void 0 : parentSizeInfo.sizing.height) : null;\n    const hOpposingPinsOffset = pinnedOffset(values.left, values.right);\n    if (parentWidth && isFiniteNumber(hOpposingPinsOffset)) {\n      width = parentWidth - hOpposingPinsOffset;\n    } else if (autoSize && values.widthType === 2 /* Auto */) {\n      width = autoSize.width;\n    } else if (isFiniteNumber(values.width)) {\n      switch (values.widthType) {\n        case 0 /* FixedNumber */:\n          width = values.width;\n          break;\n        case 3 /* FractionOfFreeSpace */:\n          width = freeSpace ? freeSpace.freeSpaceInParent.width / freeSpace.freeSpaceUnitDivisor.width * values.width : null;\n          break;\n        case 1 /* Percentage */:\n        case 4 /* Viewport */:\n          if (parentWidth) {\n            width = parentWidth * values.width;\n          }\n          break;\n        case 2 /* Auto */:\n          break;\n        default:\n          assertNever(values.widthType);\n      }\n    }\n    const vOpposingPinsOffset = pinnedOffset(values.top, values.bottom);\n    if (parentHeight && isFiniteNumber(vOpposingPinsOffset)) {\n      height = parentHeight - vOpposingPinsOffset;\n    } else if (autoSize && values.heightType === 2 /* Auto */) {\n      height = autoSize.height;\n    } else if (isFiniteNumber(values.height)) {\n      switch (values.heightType) {\n        case 0 /* FixedNumber */:\n          height = values.height;\n          break;\n        case 3 /* FractionOfFreeSpace */:\n          height = freeSpace ? freeSpace.freeSpaceInParent.height / freeSpace.freeSpaceUnitDivisor.height * values.height : null;\n          break;\n        case 1 /* Percentage */:\n        case 4 /* Viewport */:\n          if (parentHeight) {\n            height = parentHeight * values.height;\n          }\n          break;\n        case 2 /* Auto */:\n          break;\n        default:\n          assertNever(values.heightType);\n      }\n    }\n    return sizeAfterApplyingConstraintsAndAspectRatio(\n      width,\n      height,\n      values,\n      {\n        height: parentHeight ?? 0,\n        width: parentWidth ?? 0\n      },\n      parentSizeInfo == null ? void 0 : parentSizeInfo.viewport\n    );\n  },\n  // Returns a parent-relative rect given concrete ConstraintValues.\n  toRect: (values, parentSizeInfo = null, autoSize = null, pixelAlign = false, freeSpace = null) => {\n    let x = values.left || 0;\n    let y = values.top || 0;\n    const { width, height } = ConstraintValues.toSize(values, parentSizeInfo, autoSize, freeSpace);\n    const parentSizeForPositioning = (parentSizeInfo == null ? void 0 : parentSizeInfo.positioning) ?? null;\n    const positioningParentWidth = parentSizeForPositioning ? Animatable.getNumber(parentSizeForPositioning.width) : null;\n    const positioningParentHeight = parentSizeForPositioning ? Animatable.getNumber(parentSizeForPositioning.height) : null;\n    if (values.left !== null) {\n      x = values.left;\n    } else if (positioningParentWidth && values.right !== null) {\n      x = positioningParentWidth - values.right - width;\n    } else if (positioningParentWidth) {\n      x = values.centerAnchorX * positioningParentWidth - width / 2;\n    }\n    if (values.top !== null) {\n      y = values.top;\n    } else if (positioningParentHeight && values.bottom !== null) {\n      y = positioningParentHeight - values.bottom - height;\n    } else if (positioningParentHeight) {\n      y = values.centerAnchorY * positioningParentHeight - height / 2;\n    }\n    const f = { x, y, width, height };\n    if (pixelAlign) {\n      return Rect.pixelAligned(f);\n    }\n    return f;\n  }\n};\nvar defaultWidth = 200;\nvar defaultHeight = 200;\nfunction getConstraintValue(constraint, value, parentSize, viewport) {\n  if (typeof value === \"string\") {\n    if (value.endsWith(\"%\") && parentSize) {\n      switch (constraint) {\n        case \"maxWidth\":\n        case \"minWidth\":\n          return parseFloat(value) / 100 * parentSize.width;\n        case \"maxHeight\":\n        case \"minHeight\":\n          return parseFloat(value) / 100 * parentSize.height;\n        default:\n          break;\n      }\n    }\n    if (value.endsWith(\"vh\")) {\n      if (!viewport)\n        return constraintValueForUncalculatedViewport(constraint);\n      switch (constraint) {\n        case \"maxWidth\":\n        case \"minWidth\":\n          return parseFloat(value) / 100 * viewport.width;\n        case \"maxHeight\":\n        case \"minHeight\":\n          return parseFloat(value) / 100 * viewport.height;\n        default:\n          break;\n      }\n    }\n    return parseFloat(value);\n  }\n  return value;\n}\nfunction constraintValueForUncalculatedViewport(constraint) {\n  switch (constraint) {\n    case \"minWidth\":\n    case \"minHeight\":\n      return Number.NEGATIVE_INFINITY;\n    case \"maxWidth\":\n    case \"maxHeight\":\n      return Number.POSITIVE_INFINITY;\n    default:\n      assertNever(constraint, \"unknown constraint key\");\n  }\n}\nfunction constrainHeight(height, values, parentSize, viewport) {\n  if (values.minHeight) {\n    height = Math.max(getConstraintValue(\"minHeight\", values.minHeight, parentSize, viewport), height);\n  }\n  if (values.maxHeight) {\n    height = Math.min(getConstraintValue(\"maxHeight\", values.maxHeight, parentSize, viewport), height);\n  }\n  return height;\n}\nfunction constrainWidth(width, values, parentSize, viewport) {\n  if (values.minWidth) {\n    width = Math.max(getConstraintValue(\"minWidth\", values.minWidth, parentSize, viewport), width);\n  }\n  if (values.maxWidth) {\n    width = Math.min(getConstraintValue(\"maxWidth\", values.maxWidth, parentSize, viewport), width);\n  }\n  return width;\n}\nfunction sizeAfterApplyingConstraintsAndAspectRatio(width, height, values, parentSize, viewport) {\n  let w = constrainWidth(isFiniteNumber(width) ? width : defaultWidth, values, parentSize, viewport);\n  let h = constrainHeight(isFiniteNumber(height) ? height : defaultHeight, values, parentSize, viewport);\n  if (isFiniteNumber(values.aspectRatio) && values.aspectRatio > 0) {\n    if (isFiniteNumber(values.left) && isFiniteNumber(values.right)) {\n      h = w / values.aspectRatio;\n    } else if (isFiniteNumber(values.top) && isFiniteNumber(values.bottom)) {\n      w = h * values.aspectRatio;\n    } else if (values.widthType !== 0 /* FixedNumber */) {\n      h = w / values.aspectRatio;\n    } else {\n      w = h * values.aspectRatio;\n    }\n  }\n  return {\n    width: w,\n    height: h\n  };\n}\nfunction pinnedOffset(start, end) {\n  if (!isFiniteNumber(start) || !isFiniteNumber(end))\n    return null;\n  return start + end;\n}\n\n// ../../library/src/render/types/NewConstraints.tsx\nimport { Fragment as Fragment3, jsx as jsx8 } from \"react/jsx-runtime\";\nfunction containsInvalidStringValues(props) {\n  if (typeof props.right === \"string\")\n    return true;\n  if (typeof props.bottom === \"string\")\n    return true;\n  if (typeof props.left === \"string\" && (!props.center || props.center === \"y\")) {\n    return true;\n  }\n  if (typeof props.top === \"string\" && (!props.center || props.center === \"x\")) {\n    return true;\n  }\n  return false;\n}\nfunction constraintsEnabled(props) {\n  if (!props._constraints)\n    return false;\n  if (containsInvalidStringValues(props))\n    return false;\n  return props._constraints.enabled;\n}\nfunction sizeFromFiniteNumberProps(props) {\n  const { size } = props;\n  let { width, height } = props;\n  if (isFiniteNumber(size)) {\n    if (width === void 0) {\n      width = size;\n    }\n    if (height === void 0) {\n      height = size;\n    }\n  }\n  if (isFiniteNumber(width) && isFiniteNumber(height)) {\n    return {\n      width,\n      height\n    };\n  }\n  return null;\n}\nfunction rectFromFiniteNumberProps(props) {\n  const size = sizeFromFiniteNumberProps(props);\n  if (size === null) {\n    return null;\n  }\n  const { left, top } = props;\n  if (isFiniteNumber(left) && isFiniteNumber(top)) {\n    return {\n      x: left,\n      y: top,\n      ...size\n    };\n  }\n  return null;\n}\nfunction calculateRect(props, parentSize, pixelAlign = true) {\n  if (props.positionFixed || props.positionAbsolute)\n    return null;\n  const parentSizeDisabled = parentSize === 1 /* Disabled */ || parentSize === 2 /* DisabledForCurrentLevel */;\n  if (!constraintsEnabled(props) || parentSizeDisabled) {\n    return rectFromFiniteNumberProps(props);\n  }\n  const constraintValues = getConstraintValues(props);\n  const enabledParentSize = deprecatedParentSize(parentSize);\n  const parentSizeInfo = enabledParentSize ? { sizing: enabledParentSize, positioning: enabledParentSize, viewport: null } : null;\n  return ConstraintValues.toRect(constraintValues, parentSizeInfo, null, pixelAlign, null);\n}\nfunction getConstraintValues(props) {\n  const { left, right, top, bottom, center, _constraints, size } = props;\n  let { width, height } = props;\n  if (width === void 0) {\n    width = size;\n  }\n  if (height === void 0) {\n    height = size;\n  }\n  const { aspectRatio, autoSize } = _constraints;\n  const constraintMask = ConstraintMask.quickfix({\n    left: isFiniteNumber(left),\n    right: isFiniteNumber(right),\n    top: isFiniteNumber(top),\n    bottom: isFiniteNumber(bottom),\n    widthType: valueToDimensionType(width),\n    heightType: valueToDimensionType(height),\n    aspectRatio: aspectRatio || null,\n    fixedSize: autoSize === true\n  });\n  let widthValue = null;\n  let heightValue = null;\n  let widthType = 0 /* FixedNumber */;\n  let heightType = 0 /* FixedNumber */;\n  if (constraintMask.widthType !== 0 /* FixedNumber */ && typeof width === \"string\") {\n    const parsedWidth = parseFloat(width);\n    if (width.endsWith(\"fr\")) {\n      widthType = 3 /* FractionOfFreeSpace */;\n      widthValue = parsedWidth;\n    } else if (width === \"auto\") {\n      widthType = 2 /* Auto */;\n    } else {\n      widthType = 1 /* Percentage */;\n      widthValue = parsedWidth / 100;\n    }\n  } else if (width !== void 0 && typeof width !== \"string\") {\n    widthValue = width;\n  }\n  if (constraintMask.heightType !== 0 /* FixedNumber */ && typeof height === \"string\") {\n    const parsedHeight = parseFloat(height);\n    if (height.endsWith(\"fr\")) {\n      heightType = 3 /* FractionOfFreeSpace */;\n      heightValue = parsedHeight;\n    } else if (height === \"auto\") {\n      heightType = 2 /* Auto */;\n    } else {\n      heightType = 1 /* Percentage */;\n      heightValue = parseFloat(height) / 100;\n    }\n  } else if (height !== void 0 && typeof height !== \"string\") {\n    heightValue = height;\n  }\n  let centerAnchorX = 0.5;\n  let centerAnchorY = 0.5;\n  if (center === true || center === \"x\") {\n    constraintMask.left = false;\n    if (typeof left === \"string\") {\n      centerAnchorX = parseFloat(left) / 100;\n    }\n  }\n  if (center === true || center === \"y\") {\n    constraintMask.top = false;\n    if (typeof top === \"string\") {\n      centerAnchorY = parseFloat(top) / 100;\n    }\n  }\n  return {\n    // Because we check isFiniteNumber when creating the masks,\n    // We know that left, right, top and bottom are numbers if the mask is true for the corresponding value\n    // We need to cast this because typescript does not understand that\n    left: constraintMask.left ? left : null,\n    right: constraintMask.right ? right : null,\n    top: constraintMask.top ? top : null,\n    bottom: constraintMask.bottom ? bottom : null,\n    widthType,\n    heightType,\n    width: widthValue,\n    height: heightValue,\n    aspectRatio: constraintMask.aspectRatio || null,\n    centerAnchorX,\n    centerAnchorY,\n    minHeight: props.minHeight,\n    maxHeight: props.maxHeight,\n    minWidth: props.minWidth,\n    maxWidth: props.maxWidth\n  };\n}\nvar ParentSizeState = /* @__PURE__ */ ((ParentSizeState2) => {\n  ParentSizeState2[ParentSizeState2[\"Unknown\"] = 0] = \"Unknown\";\n  ParentSizeState2[ParentSizeState2[\"Disabled\"] = 1] = \"Disabled\";\n  ParentSizeState2[ParentSizeState2[\"DisabledForCurrentLevel\"] = 2] = \"DisabledForCurrentLevel\";\n  return ParentSizeState2;\n})(ParentSizeState || {});\nvar ConstraintsContext = /* @__PURE__ */ React13.createContext({\n  parentSize: 0 /* Unknown */\n});\nfunction deprecatedParentSize(parentSize) {\n  if (parentSize === 0 /* Unknown */ || parentSize === 1 /* Disabled */ || parentSize === 2 /* DisabledForCurrentLevel */) {\n    return null;\n  }\n  return parentSize;\n}\nfunction useParentSize() {\n  return React13.useContext(ConstraintsContext).parentSize;\n}\nfunction isSize(o) {\n  return typeof o === \"object\";\n}\nvar ProvideParentSize = (props) => {\n  const currentParentSize = useParentSize();\n  const { parentSize, children } = props;\n  const value = React13.useMemo(\n    () => ({ parentSize }),\n    [getParentWidth(parentSize), getParentHeight(parentSize)]\n  );\n  if (currentParentSize === 1 /* Disabled */) {\n    return children ? /* @__PURE__ */ jsx8(Fragment3, { children }) : null;\n  }\n  return /* @__PURE__ */ jsx8(ConstraintsContext.Provider, { value, children });\n};\nfunction getParentWidth(parentSize) {\n  return isSize(parentSize) ? parentSize.width : parentSize;\n}\nfunction getParentHeight(parentSize) {\n  return isSize(parentSize) ? parentSize.height : parentSize;\n}\nfunction useProvideParentSize(node, parentSize) {\n  return /* @__PURE__ */ jsx8(ProvideParentSize, { parentSize, children: node });\n}\nfunction useConstraints(props) {\n  const parentSize = useParentSize();\n  const calculatedRect = calculateRect(props, parentSize, true);\n  return calculatedRect;\n}\nfunction isAutoSized({\n  width,\n  height\n}) {\n  return width === \"auto\" || width === \"min-content\" || height === \"auto\" || height === \"min-content\";\n}\n\n// ../../library/src/render/types/PropertyControls.ts\nvar ControlType = /* @__PURE__ */ ((ControlType2) => {\n  ControlType2[\"Boolean\"] = \"boolean\";\n  ControlType2[\"Number\"] = \"number\";\n  ControlType2[\"String\"] = \"string\";\n  ControlType2[\"RichText\"] = \"richtext\";\n  ControlType2[\"FusedNumber\"] = \"fusednumber\";\n  ControlType2[\"Enum\"] = \"enum\";\n  ControlType2[\"SegmentedEnum\"] = \"segmentedenum\";\n  ControlType2[\"Color\"] = \"color\";\n  ControlType2[\"Image\"] = \"image\";\n  ControlType2[\"ResponsiveImage\"] = \"responsiveimage\";\n  ControlType2[\"File\"] = \"file\";\n  ControlType2[\"ComponentInstance\"] = \"componentinstance\";\n  ControlType2[\"Array\"] = \"array\";\n  ControlType2[\"EventHandler\"] = \"eventhandler\";\n  ControlType2[\"Transition\"] = \"transition\";\n  ControlType2[\"BoxShadow\"] = \"boxshadow\";\n  ControlType2[\"Link\"] = \"link\";\n  ControlType2[\"Date\"] = \"date\";\n  ControlType2[\"Object\"] = \"object\";\n  ControlType2[\"Font\"] = \"font\";\n  ControlType2[\"PageScope\"] = \"pagescope\";\n  ControlType2[\"ScrollSectionRef\"] = \"scrollsectionref\";\n  ControlType2[\"CustomCursor\"] = \"customcursor\";\n  ControlType2[\"Border\"] = \"border\";\n  ControlType2[\"Cursor\"] = \"cursor\";\n  ControlType2[\"Padding\"] = \"padding\";\n  ControlType2[\"BorderRadius\"] = \"borderradius\";\n  ControlType2[\"CollectionReference\"] = \"collectionreference\";\n  ControlType2[\"MultiCollectionReference\"] = \"multicollectionreference\";\n  ControlType2[\"TrackingId\"] = \"trackingid\";\n  ControlType2[\"VectorSetItem\"] = \"vectorsetitem\";\n  return ControlType2;\n})(ControlType || {});\n\n// ../../library/src/modules/isFlexboxGapSupported.ts\nvar isFlexboxGapSupportedCached;\nfunction isFlexboxGapSupported() {\n  if (isFlexboxGapSupportedCached !== void 0) {\n    return isFlexboxGapSupportedCached;\n  }\n  const flex = document.createElement(\"div\");\n  Object.assign(flex.style, {\n    position: \"absolute\",\n    // avoid layout shift\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"1px\"\n  });\n  flex.appendChild(document.createElement(\"div\"));\n  flex.appendChild(document.createElement(\"div\"));\n  document.body.appendChild(flex);\n  const isSupported = flex.scrollHeight === 1;\n  if (flex.parentNode) {\n    flex.parentNode.removeChild(flex);\n  }\n  isFlexboxGapSupportedCached = isSupported;\n  return isSupported;\n}\n\n// ../../library/src/modules/workaroundFlexboxGapNotSupported.ts\nvar flexboxGapNotSupportedClass = \"flexbox-gap-not-supported\";\nvar initialized = false;\nfunction installFlexboxGapWorkaroundIfNeeded() {\n  if (initialized)\n    return;\n  initialized = true;\n  if (isFlexboxGapSupported())\n    return;\n  document.body.classList.add(flexboxGapNotSupportedClass);\n}\n\n// ../../library/src/render/utils/injectDeprecatedRichTextRules.ts\nvar richTextStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p,\n[data-framer-component-type=\"DeprecatedRichText\"] div,\n[data-framer-component-type=\"DeprecatedRichText\"] h1,\n[data-framer-component-type=\"DeprecatedRichText\"] h2,\n[data-framer-component-type=\"DeprecatedRichText\"] h3,\n[data-framer-component-type=\"DeprecatedRichText\"] h4,\n[data-framer-component-type=\"DeprecatedRichText\"] h5,\n[data-framer-component-type=\"DeprecatedRichText\"] h6,\n[data-framer-component-type=\"DeprecatedRichText\"] li,\n[data-framer-component-type=\"DeprecatedRichText\"] ol,\n[data-framer-component-type=\"DeprecatedRichText\"] ul,\n[data-framer-component-type=\"DeprecatedRichText\"] span:not([data-text-fill]) {\n    font-family: var(--framer-font-family, Inter, Inter Placeholder, sans-serif);\n    font-style: var(--framer-font-style, normal);\n    font-weight: var(--framer-font-weight, 400);\n    color: var(--framer-text-color, #000);\n    font-size: var(--framer-font-size, 16px);\n    letter-spacing: var(--framer-letter-spacing, 0);\n    text-transform: var(--framer-text-transform, none);\n    text-decoration: var(--framer-text-decoration, none);\n    line-height: var(--framer-line-height, 1.2em);\n    text-align: var(--framer-text-alignment, start);\n}\n`;\nvar richTextParagraphSpacingStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] div:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h1:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h2:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h3:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h4:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h5:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h6:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] ol:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] ul:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] .framer-image:not(:first-child) {\n    margin-top: var(--framer-paragraph-spacing, 0);\n}\n`;\nvar richTextBackgroundMaskStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] span[data-text-fill] {\n    display: inline-block;\n    background-clip: text;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n}\n`;\nvar richTextLinkStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a,\n[data-framer-component-type=\"DeprecatedRichText\"] a span:not([data-text-fill]) {\n    font-family: var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n    font-style: var(--framer-link-font-style, var(--framer-font-style, normal));\n    font-weight: var(--framer-link-font-weight, var(--framer-font-weight, 400));\n    color: var(--framer-link-text-color, var(--framer-text-color, #000));\n    font-size: var(--framer-link-font-size, var(--framer-font-size, 16px));\n    text-transform: var(--framer-link-text-transform, var(--framer-text-transform, none));\n    text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration, none));\n}\n`;\nvar richTextLinkHoverStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a:hover,\n[data-framer-component-type=\"DeprecatedRichText\"] a:hover span:not([data-text-fill]) {\n    font-family: var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n    font-style: var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n    font-weight: var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n    color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n    font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)));\n    text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n    text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n}\n`;\nvar richTextLinkCurrentStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current],\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current] span:not([data-text-fill]):not([data-nested-link]) {\n    font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n    font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n    font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n    color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n    font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)));\n    text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n    text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n}\n`;\nvar richTextLinkCurrentHoverStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current]:hover,\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current]:hover span:not([data-text-fill]):not([data-nested-link]) {\n    font-family: var(--framer-link-hover-font-family, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));\n    font-style: var(--framer-link-hover-font-style, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n    font-weight: var(--framer-link-hover-font-weight, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n    color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n    font-size: var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))));\n    text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n    text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));\n}\n`;\nvar richTextBoldStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] strong {\n    font-weight: bolder;\n}\n`;\nvar richTextItalicStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] em {\n    font-style: italic;\n}\n`;\nvar richTextImageRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] .framer-image {\n    display: block;\n    max-width: 100%;\n    height: auto;\n}\n`;\nvar richTextBlockElementResetRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p,\n[data-framer-component-type=\"DeprecatedRichText\"] div,\n[data-framer-component-type=\"DeprecatedRichText\"] h1,\n[data-framer-component-type=\"DeprecatedRichText\"] h2,\n[data-framer-component-type=\"DeprecatedRichText\"] h3,\n[data-framer-component-type=\"DeprecatedRichText\"] h4,\n[data-framer-component-type=\"DeprecatedRichText\"] h5,\n[data-framer-component-type=\"DeprecatedRichText\"] h6 {\n    margin: 0;\n    padding: 0;\n}\n`;\nvar richTextStylesPresetResetRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] .text-styles-preset-reset {\n    --framer-font-family: Inter, Inter Placeholder, sans-serif;\n    --framer-font-style: normal;\n    --framer-font-weight: 500;\n    --framer-text-color: #000;\n    --framer-font-size: 16px;\n    --framer-letter-spacing: 0;\n    --framer-text-transform: none;\n    --framer-text-decoration: none;\n    --framer-line-height: 1.2em;\n    --framer-text-alignment: start;\n    --framer-font-open-type-features: normal;\n    --font-variation-settings: normal;\n}\n`;\nvar richTextStylesList = `\n[data-framer-component-type=\"DeprecatedRichText\"] ul,\n[data-framer-component-type=\"DeprecatedRichText\"] ol {\n    display: table;\n    width: 100%;\n    padding-left: 0;\n    margin: 0;\n}\n`;\nvar richTextStylesListItem = `\n[data-framer-component-type=\"DeprecatedRichText\"] li {\n    display: table-row;\n    counter-increment: list-item;\n    list-style: none;\n}\n`;\nvar richTextStylesNumberedListMarker = `\n[data-framer-component-type=\"DeprecatedRichText\"] ol > li::before {\n    display: table-cell;\n    width: 2.25ch;\n    box-sizing: border-box;\n    padding-right: 0.75ch;\n    content: counter(list-item) \".\";\n    white-space: nowrap;\n}\n`;\nvar richTextStylesBulletedListMarker = `\n[data-framer-component-type=\"DeprecatedRichText\"] ul > li::before {\n    display: table-cell;\n    width: 2.25ch;\n    box-sizing: border-box;\n    padding-right: 0.75ch;\n    content: \"\\u2022\";\n}\n`;\nvar deprecatedRichTextCSSRules = [\n  `[data-framer-component-type=\"DeprecatedRichText\"] { cursor: inherit; }`,\n  richTextStylesPresetResetRule,\n  richTextBlockElementResetRule,\n  richTextStylesRule,\n  richTextParagraphSpacingStylesRule,\n  richTextBackgroundMaskStylesRule,\n  richTextLinkStylesRule,\n  richTextLinkHoverStylesRule,\n  richTextLinkCurrentStylesRule,\n  richTextLinkCurrentHoverStylesRule,\n  richTextBoldStylesRule,\n  richTextItalicStylesRule,\n  richTextImageRule,\n  richTextStylesList,\n  richTextStylesListItem,\n  richTextStylesNumberedListMarker,\n  richTextStylesBulletedListMarker\n];\n\n// ../../library/src/render/utils/injectRichTextRules.ts\nvar richTextCSSRules = [\n  /* css */\n  `\n        p.framer-text,\n        div.framer-text,\n        figure.framer-text,\n        h1.framer-text,\n        h2.framer-text,\n        h3.framer-text,\n        h4.framer-text,\n        h5.framer-text,\n        h6.framer-text,\n        ol.framer-text,\n        ul.framer-text {\n            margin: 0;\n            padding: 0;\n        }\n    `,\n  /* css */\n  `\n        p.framer-text,\n        div.framer-text,\n        h1.framer-text,\n        h2.framer-text,\n        h3.framer-text,\n        h4.framer-text,\n        h5.framer-text,\n        h6.framer-text,\n        li.framer-text,\n        ol.framer-text,\n        ul.framer-text,\n        span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-blockquote-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-blockquote-text-color, var(--framer-text-color, #000));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            letter-spacing: var(--framer-blockquote-letter-spacing, var(--framer-letter-spacing, 0));\n            text-transform: var(--framer-blockquote-text-transform, var(--framer-text-transform, none));\n            text-decoration: var(--framer-blockquote-text-decoration, var(--framer-text-decoration, none));\n            line-height: var(--framer-blockquote-line-height, var(--framer-line-height, 1.2em));\n            text-align: var(--framer-blockquote-text-alignment, var(--framer-text-alignment, start));\n            -webkit-text-stroke-width: var(--framer-text-stroke-width, initial);\n            -webkit-text-stroke-color: var(--framer-text-stroke-color, initial);\n            -moz-font-feature-settings: var(--framer-font-open-type-features, initial);\n            -webkit-font-feature-settings: var(--framer-font-open-type-features, initial);\n            font-feature-settings: var(--framer-font-open-type-features, initial);\n            font-variation-settings: var(--framer-font-variation-axes, normal);\n            text-wrap: var(--framer-text-wrap-override, var(--framer-text-wrap));\n        }\n    `,\n  /* css */\n  `\n        .framer-fit-text .framer-text {\n            white-space: nowrap;\n            white-space-collapse: preserve;\n        }\n    `,\n  /* css */\n  `\n        strong.framer-text {\n            font-family: var(--framer-blockquote-font-family-bold, var(--framer-font-family-bold));\n            font-style: var(--framer-blockquote-font-style-bold, var(--framer-font-style-bold));\n            font-weight: var(--framer-blockquote-font-weight-bold, var(--framer-font-weight-bold, bolder));\n            font-variation-settings: var(--framer-blockquote-font-variation-axes-bold, var(--framer-font-variation-axes-bold));\n        }\n    `,\n  /* css */\n  `\n        em.framer-text {\n            font-family: var(--framer-blockquote-font-family-italic, var(--framer-font-family-italic));\n            font-style: var(--framer-blockquote-font-style-italic, var(--framer-font-style-italic, italic));\n            font-weight: var(--framer-blockquote-font-weight-italic, var(--framer-font-weight-italic));\n            font-variation-settings: var(--framer-blockquote-font-variation-axes-italic, var(--framer-font-variation-axes-italic));\n        }\n    `,\n  /* css */\n  `\n        em.framer-text > strong.framer-text {\n            font-family: var(--framer-blockquote-font-family-bold-italic, var(--framer-font-family-bold-italic));\n            font-style: var(--framer-blockquote-font-style-bold-italic, var(--framer-font-style-bold-italic, italic));\n            font-weight: var(--framer-blockquote-font-weight-bold-italic, var(--framer-font-weight-bold-italic, bolder));\n            font-variation-settings: var(--framer-blockquote-font-variation-axes-bold-italic, var(--framer-font-variation-axes-bold-italic));\n        }\n    `,\n  /* css */\n  `\n        p.framer-text:not(:first-child),\n        div.framer-text:not(:first-child),\n        h1.framer-text:not(:first-child),\n        h2.framer-text:not(:first-child),\n        h3.framer-text:not(:first-child),\n        h4.framer-text:not(:first-child),\n        h5.framer-text:not(:first-child),\n        h6.framer-text:not(:first-child),\n        ol.framer-text:not(:first-child),\n        ul.framer-text:not(:first-child),\n        blockquote.framer-text:not(:first-child),\n        table.framer-text:not(:first-child),\n        figure.framer-text:not(:first-child),\n        .framer-image.framer-text:not(:first-child) {\n            margin-top: var(--framer-blockquote-paragraph-spacing, var(--framer-paragraph-spacing, 0));\n        }\n    `,\n  // The first child of a list item is a paragraph. If the second child is a\n  // nested list we don't want it to have paragraph spacing.\n  /* css */\n  `\n        li.framer-text > ul.framer-text:nth-child(2),\n        li.framer-text > ol.framer-text:nth-child(2) {\n            margin-top: 0;\n        }\n    `,\n  // background-clip: text clips to the physical dimensions of text as appose\n  // to the rendered dimensions. normal text will bleed out side these\n  // constraints but since this is just a clipping mask over the area the text\n  // takes up we have cases where the text will get clipped. That is why we\n  // need to expand the area that the gradient applies to to allow users to\n  // use low line-heights. This will result in gradients not aligning\n  // perfectly to the edges of the text. but this is a acceptable trade off at\n  // this point. For now we increase the area of the clipping mask on the\n  // bottom (for descenders) and the right for italic or wide fonts.\n  /* css */\n  `\n        .framer-text[data-text-fill] {\n            display: inline-block;\n            background-clip: text;\n            -webkit-background-clip: text;\n            /* make this a transparent color if you want to visualise the clipping  */\n            -webkit-text-fill-color: transparent;\n            padding: max(0em, calc(calc(1.3em - var(--framer-blockquote-line-height, var(--framer-line-height, 1.3em))) / 2));\n            margin: min(0em, calc(calc(1.3em - var(--framer-blockquote-line-height, var(--framer-line-height, 1.3em))) / -2));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text,\n        code.framer-text span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-code-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-code-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-blockquote-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            letter-spacing: var(--framer-blockquote-letter-spacing, var(--framer-letter-spacing, 0));\n            line-height: var(--framer-blockquote-line-height, var(--framer-line-height, 1.2em));\n        }\n    `,\n  /* css */\n  `\n        blockquote.framer-text {\n            margin-block-start: initial;\n            margin-block-end: initial;\n            margin-inline-start: initial;\n            margin-inline-end: initial;\n            unicode-bidi: initial;\n        }\n    `,\n  /* css */\n  `\n        a.framer-text,\n        a.framer-text span.framer-text:not([data-text-fill]),\n        span.framer-text[data-nested-link],\n        span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n            font-style: var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n            text-decoration: var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n            /* Cursor inherit to overwrite the user agent stylesheet on rich text links. */\n            cursor: var(--framer-custom-cursors, pointer);\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text,\n        code.framer-text a.framer-text span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-nested-link],\n        code.framer-text span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-code-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-code-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        a.framer-text:hover,\n        a.framer-text:hover span.framer-text:not([data-text-fill]),\n        span.framer-text[data-nested-link]:hover,\n        span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-hover-font-family, var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));\n            font-style: var(--framer-link-hover-font-style, var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n            font-weight: var(--framer-link-hover-font-weight, var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n            color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-blockquote-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-hover-text-transform, var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n            text-decoration: var(--framer-link-hover-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text:hover,\n        code.framer-text a.framer-text:hover span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-nested-link]:hover,\n        code.framer-text span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n            font-style: var(--framer-blockquote-font-style, var(--framer-code-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-code-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-blockquote-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        a.framer-text[data-framer-page-link-current],\n        a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]),\n        span.framer-text[data-framer-page-link-current],\n        span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n            font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n            text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text[data-framer-page-link-current],\n        code.framer-text a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-framer-page-link-current],\n        code.framer-text span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        a.framer-text[data-framer-page-link-current]:hover,\n        a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]),\n        span.framer-text[data-framer-page-link-current]:hover,\n        span.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-hover-font-family, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));\n            font-style: var(--framer-link-hover-font-style, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n            font-weight: var(--framer-link-hover-font-weight, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n            color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n            text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text[data-framer-page-link-current]:hover,\n        code.framer-text a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-framer-page-link-current]:hover,\n        code.framer-text span.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        .framer-image.framer-text {\n            display: block;\n            max-width: 100%;\n            height: auto;\n        }\n    `,\n  /* css */\n  `\n        .text-styles-preset-reset.framer-text {\n            --framer-font-family: Inter, Inter Placeholder, sans-serif;\n            --framer-font-style: normal;\n            --framer-font-weight: 500;\n            --framer-text-color: #000;\n            --framer-font-size: 16px;\n            --framer-letter-spacing: 0;\n            --framer-text-transform: none;\n            --framer-text-decoration: none;\n            --framer-line-height: 1.2em;\n            --framer-text-alignment: start;\n            --framer-font-open-type-features: normal;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text {\n            --list-style-type: decimal;\n        }\n    `,\n  /* css */\n  `\n        ul.framer-text,\n        ol.framer-text {\n            display: table;\n            width: 100%;\n        }\n    `,\n  /* css */\n  `\n        li.framer-text {\n            display: table-row;\n            counter-increment: list-item;\n            list-style: none;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text > li.framer-text::before {\n            display: table-cell;\n            width: 2.25ch;\n            box-sizing: border-box;\n            padding-inline-end: 0.75ch;\n            content: counter(list-item, var(--list-style-type)) \".\";\n            white-space: nowrap;\n        }\n    `,\n  /* css */\n  `\n        ul.framer-text > li.framer-text::before {\n            display: table-cell;\n            width: 2.25ch;\n            box-sizing: border-box;\n            padding-inline-end: 0.75ch;\n            content: \"\\u2022\";\n        }\n    `,\n  /* css */\n  `\n        .framer-table-wrapper {\n            overflow-x: auto;\n        }\n    `,\n  /* css */\n  `\n        table.framer-text,\n        .framer-table-wrapper table.framer-text {\n            border-collapse: separate;\n            border-spacing: 0;\n            table-layout: auto;\n            word-break: normal;\n            width: 100%;\n        }\n    `,\n  /* css */\n  `\n        td.framer-text,\n        th.framer-text {\n            min-width: 16ch;\n            vertical-align: top;\n        }\n    `,\n  /* css */\n  `\n        .framer-text-module[style*=\"aspect-ratio\"] > :first-child {\n            width: 100%;\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"] {\n                position: relative;\n            }\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"]::before {\n                content: \"\";\n                display: block;\n                padding-bottom: calc(100% / calc(var(--aspect-ratio)));\n            }\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"] > :first-child {\n                position: absolute;\n                top: 0;\n                left: 0;\n                height: 100%;\n            }\n        }\n    `\n];\n\n// ../../library/src/render/utils/setDocumentStyles.ts\nvar defaultCache = /* @__PURE__ */ new Set();\nvar defaultSheet;\nfunction injectCSSRule(cssRule, sheet, cache2 = defaultCache) {\n  if (!cssRule || cache2.has(cssRule) || typeof document === \"undefined\")\n    return;\n  cache2.add(cssRule);\n  if (!sheet) {\n    if (!defaultSheet) {\n      const styleElement = document.createElement(\"style\");\n      styleElement.setAttribute(\"type\", \"text/css\");\n      styleElement.setAttribute(\"data-framer-css\", \"true\");\n      if (!document.head) {\n        console.warn(\"not injecting CSS: the document is missing a <head> element\");\n        return;\n      }\n      document.head.appendChild(styleElement);\n      if (styleElement.sheet) {\n        defaultSheet = styleElement.sheet;\n      } else {\n        console.warn(\"not injecting CSS: injected <style> element does not have a sheet\", styleElement);\n        return;\n      }\n    }\n    sheet = defaultSheet;\n  }\n  try {\n    sheet.insertRule(cssRule, sheet.cssRules.length);\n  } catch {\n  }\n}\n\n// ../../library/src/render/utils/injectComponentCSSRules.ts\nvar componentCSSRules = [`[data-framer-component-type] { position: absolute; }`];\nvar textAlignmentRule = `\n[data-framer-component-type=\"Text\"] > * {\n    text-align: var(--framer-text-alignment, start);\n}`;\nvar textBlockSpanRule = `\n[data-framer-component-type=\"Text\"] span span,\n[data-framer-component-type=\"Text\"] p span,\n[data-framer-component-type=\"Text\"] h1 span,\n[data-framer-component-type=\"Text\"] h2 span,\n[data-framer-component-type=\"Text\"] h3 span,\n[data-framer-component-type=\"Text\"] h4 span,\n[data-framer-component-type=\"Text\"] h5 span,\n[data-framer-component-type=\"Text\"] h6 span {\n    display: block;\n}`;\nvar textInlineSpanRule = `\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span {\n    display: unset;\n}`;\nvar renderTextStylesRule = `\n[data-framer-component-type=\"Text\"] div div span,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span,\n[data-framer-component-type=\"Text\"] a {\n    font-family: var(--font-family);\n    font-style: var(--font-style);\n    font-weight: min(calc(var(--framer-font-weight-increase, 0) + var(--font-weight, 400)), 900);\n    color: var(--text-color);\n    letter-spacing: var(--letter-spacing);\n    font-size: var(--font-size);\n    text-transform: var(--text-transform);\n    text-decoration: var(--text-decoration);\n    line-height: var(--line-height);\n}`;\nvar textStylesRule = `\n[data-framer-component-type=\"Text\"] div div span,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span,\n[data-framer-component-type=\"Text\"] a {\n    --font-family: var(--framer-font-family);\n    --font-style: var(--framer-font-style);\n    --font-weight: var(--framer-font-weight);\n    --text-color: var(--framer-text-color);\n    --letter-spacing: var(--framer-letter-spacing);\n    --font-size: var(--framer-font-size);\n    --text-transform: var(--framer-text-transform);\n    --text-decoration: var(--framer-text-decoration);\n    --line-height: var(--framer-line-height);\n}`;\nvar linkStylesRule = `\n[data-framer-component-type=\"Text\"] a,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] a span span span,\n[data-framer-component-type=\"Text\"] a p span span,\n[data-framer-component-type=\"Text\"] a h1 span span,\n[data-framer-component-type=\"Text\"] a h2 span span,\n[data-framer-component-type=\"Text\"] a h3 span span,\n[data-framer-component-type=\"Text\"] a h4 span span,\n[data-framer-component-type=\"Text\"] a h5 span span,\n[data-framer-component-type=\"Text\"] a h6 span span {\n    --font-family: var(--framer-link-font-family, var(--framer-font-family));\n    --font-style: var(--framer-link-font-style, var(--framer-font-style));\n    --font-weight: var(--framer-link-font-weight, var(--framer-font-weight));\n    --text-color: var(--framer-link-text-color, var(--framer-text-color));\n    --font-size: var(--framer-link-font-size, var(--framer-font-size));\n    --text-transform: var(--framer-link-text-transform, var(--framer-text-transform));\n    --text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration));\n}`;\nvar linkHoverStylesRule = `\n[data-framer-component-type=\"Text\"] a:hover,\n[data-framer-component-type=\"Text\"] a div span:hover,\n[data-framer-component-type=\"Text\"] a span span span:hover,\n[data-framer-component-type=\"Text\"] a p span span:hover,\n[data-framer-component-type=\"Text\"] a h1 span span:hover,\n[data-framer-component-type=\"Text\"] a h2 span span:hover,\n[data-framer-component-type=\"Text\"] a h3 span span:hover,\n[data-framer-component-type=\"Text\"] a h4 span span:hover,\n[data-framer-component-type=\"Text\"] a h5 span span:hover,\n[data-framer-component-type=\"Text\"] a h6 span span:hover {\n    --font-family: var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-font-family)));\n    --font-style: var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-font-style)));\n    --font-weight: var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-font-weight)));\n    --text-color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color)));\n    --font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size)));\n    --text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));\n    --text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration)));\n}`;\nvar linkCurrentStylesRule = `\n[data-framer-component-type=\"Text\"].isCurrent a,\n[data-framer-component-type=\"Text\"].isCurrent a div span,\n[data-framer-component-type=\"Text\"].isCurrent a span span span,\n[data-framer-component-type=\"Text\"].isCurrent a p span span,\n[data-framer-component-type=\"Text\"].isCurrent a h1 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h2 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h3 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h4 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h5 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h6 span span {\n    --font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family)));\n    --font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style)));\n    --font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight)));\n    --text-color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color)));\n    --font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size)));\n    --text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));\n    --text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration)));\n}`;\nvar textCSSRules = [\n  `[data-framer-component-type=\"Text\"] { cursor: inherit; }`,\n  `[data-framer-component-text-autosized] * { white-space: pre; }`,\n  textAlignmentRule,\n  textBlockSpanRule,\n  textInlineSpanRule,\n  renderTextStylesRule,\n  textStylesRule,\n  linkStylesRule,\n  linkHoverStylesRule,\n  linkCurrentStylesRule\n];\nvar stackPositionRule = `\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > *,\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-component-type],\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-legacy-stack-gap-enabled] > *,\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-legacy-stack-gap-enabled] > [data-framer-component-type] {\n    position: relative;\n}`;\nvar nativeStackGapRules = /* @__PURE__ */ (() => [\n  `[data-framer-stack-content-wrapper][data-framer-stack-gap-enabled=\"true\"] {\n        row-gap: var(--stack-native-row-gap);\n        column-gap: var(--stack-native-column-gap);\n    }`,\n  `.${flexboxGapNotSupportedClass} [data-framer-stack-content-wrapper][data-framer-stack-gap-enabled=\"true\"] {\n        row-gap: unset;\n        column-gap: unset;\n    }`\n])();\nvar stackGapRule = /* @__PURE__ */ (() => `\n.${flexboxGapNotSupportedClass} [data-framer-legacy-stack-gap-enabled=\"true\"] > *, [data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"] {\n    margin-top: calc(var(--stack-gap-y) / 2);\n    margin-bottom: calc(var(--stack-gap-y) / 2);\n    margin-right: calc(var(--stack-gap-x) / 2);\n    margin-left: calc(var(--stack-gap-x) / 2);\n}\n`)();\nvar stackDirectionRuleVertical = /* @__PURE__ */ (() => `\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:first-child,\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:first-child,\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:last-child,\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:last-child {\n    margin-top: 0;\n    margin-left: 0;\n}`)();\nvar stackDirectionRuleHorizontal = /* @__PURE__ */ (() => `\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:last-child,\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:last-child,\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:first-child,\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:first-child {\n    margin-right: 0;\n    margin-bottom: 0;\n}`)();\nvar stackCSSRules = /* @__PURE__ */ (() => [\n  stackPositionRule,\n  stackGapRule,\n  ...nativeStackGapRules,\n  stackDirectionRuleVertical,\n  stackDirectionRuleHorizontal\n])();\nvar navigationCSSRules = [\n  `\nNavigationContainer\n[data-framer-component-type=\"NavigationContainer\"] > *,\n[data-framer-component-type=\"NavigationContainer\"] > [data-framer-component-type] {\n    position: relative;\n}`\n];\nvar scrollCSSRules = [\n  `[data-framer-component-type=\"Scroll\"]::-webkit-scrollbar { display: none; }`,\n  `[data-framer-component-type=\"ScrollContentWrapper\"] > * { position: relative; }`\n];\nvar nativeScrollCSSRules = [\n  `[data-framer-component-type=\"NativeScroll\"] { -webkit-overflow-scrolling: touch; }`,\n  `[data-framer-component-type=\"NativeScroll\"] > * { position: relative; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-both { overflow-x: scroll; overflow-y: scroll; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-vertical { overflow-x: hidden; overflow-y: scroll; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-horizontal { overflow-x: scroll; overflow-y: hidden; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-vertical > * { width: 100% !important; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-horizontal > * { height: 100% !important; }`,\n  `[data-framer-component-type=\"NativeScroll\"].scrollbar-hidden::-webkit-scrollbar { display: none; }`\n];\nvar deviceComponentCSSRules = [\n  `[data-framer-component-type=\"DeviceComponent\"].no-device > * { width: 100% !important; height: 100% !important; }`\n];\nvar pageContentWrapperWrapperCSSRules = [\n  `[data-framer-component-type=\"PageContentWrapper\"] > *, [data-framer-component-type=\"PageContentWrapper\"] > [data-framer-component-type] { position: relative; }`\n];\nvar presenceCSS = [\n  `[data-is-present=\"false\"], [data-is-present=\"false\"] * { pointer-events: none !important; }`\n];\nvar cursorCSS = [\n  `[data-framer-cursor=\"pointer\"] { cursor: pointer; }`,\n  `[data-framer-cursor=\"grab\"] { cursor: grab; }`,\n  `[data-framer-cursor=\"grab\"]:active { cursor: grabbing; }`\n];\nvar frameCSS = [\n  // Non-sites prototyping projects render with FrameWithMotion and Stacks. In\n  // that context this rule ensures pointer events work in a specific way\n  // designed for prototypes that we don't care about anymore in sites. We\n  // can't remove it for legacy reasons, but sites will never render any\n  // elements that are impacted by this rule. However, users can still use the\n  // <Frame> api in code, at which point this rule will kick in. We don't\n  // encourage the use of this API anymore, and bugs that come from this will\n  // be the user's concern.\n  `[data-framer-component-type=\"Frame\"] *, [data-framer-component-type=\"Stack\"] * { pointer-events: auto; }`,\n  // This is fully deprecated, and will never exist in code that is generated\n  // after 24/01/2023. There will be existing code-generated that depends on\n  // this rule existing, so we can't remove it.\n  `[data-framer-generated] * { pointer-events: unset }`\n];\nvar resetCSS = [\n  `[data-reset=\"button\"] {\n        border-width: 0;\n        padding: 0;\n        background: none;\n}`\n];\nvar hideScrollbars = [\n  `[data-hide-scrollbars=\"true\"]::-webkit-scrollbar { width: 0px; height: 0px; }`,\n  `[data-hide-scrollbars=\"true\"]::-webkit-scrollbar-thumb { background: transparent; }`,\n  `[data-hide-scrollbars=\"true\"] { scrollbar-width: none; }`\n];\nvar willChangeOverrideCSSVariable = \"--framer-will-change-override\";\nvar willChangeEffectOverrideCSSVariable = \"--framer-will-change-effect-override\";\nvar anySafariVersion = \"(background: -webkit-named-image(i))\";\nvar safari16OrGreater = \"(grid-template-rows: subgrid)\";\nvar willChangeTransformRules = (isPreview) => isPreview ? [\n  `body { ${willChangeOverrideCSSVariable}: none; }`,\n  `@supports ${anySafariVersion} and (not ${safari16OrGreater}) { body { ${willChangeOverrideCSSVariable}: transform; } }`\n] : [`body { ${willChangeOverrideCSSVariable}: none; ${willChangeEffectOverrideCSSVariable}: none; }`];\nvar frameCSSRules = (isPreview) => {\n  return isPreview ? frameCSS : [];\n};\nvar svgCSSRules = [`.svgContainer svg { display: block; }`];\nvar combineCSSRules = (isPreview) => [\n  ...willChangeTransformRules(isPreview),\n  ...componentCSSRules,\n  ...textCSSRules,\n  ...richTextCSSRules,\n  ...deprecatedRichTextCSSRules,\n  ...stackCSSRules,\n  ...navigationCSSRules,\n  ...scrollCSSRules,\n  ...nativeScrollCSSRules,\n  ...pageContentWrapperWrapperCSSRules,\n  ...deviceComponentCSSRules,\n  ...presenceCSS,\n  ...cursorCSS,\n  ...frameCSSRules(isPreview),\n  ...svgCSSRules,\n  ...resetCSS,\n  ...hideScrollbars\n];\nvar combinedCSSRules = /* @__PURE__ */ combineCSSRules(false);\nvar combinedCSSRulesForPreview = /* @__PURE__ */ combineCSSRules(true);\nvar didInject = false;\nfunction injectComponentCSSRules() {\n  if (didInject)\n    return;\n  didInject = true;\n  const styles4 = RenderTarget.current() === RenderTarget.preview ? combinedCSSRulesForPreview : combinedCSSRules;\n  for (const rule of styles4) {\n    injectCSSRule(rule, void 0, void 0);\n  }\n}\n\n// ../../library/src/utils/applyControlDefaultsToReactDefaultProps.ts\nfunction isReactComponent(component) {\n  return isObject(component) || isFunction(component);\n}\nvar optionalKey = \"optional\";\nfunction controlIsOptional(control) {\n  return !!control && optionalKey in control && control[optionalKey] === true;\n}\nfunction shouldBeNever(_) {\n}\nfunction getControlDefaultValue(control) {\n  try {\n    switch (control.type) {\n      case \"string\" /* String */:\n      case \"collectionreference\" /* CollectionReference */:\n      case \"multicollectionreference\" /* MultiCollectionReference */:\n      case \"color\" /* Color */:\n      case \"date\" /* Date */:\n      case \"link\" /* Link */:\n      case \"boxshadow\" /* BoxShadow */:\n      case \"padding\" /* Padding */:\n      case \"borderradius\" /* BorderRadius */:\n        return isString(control.defaultValue) ? control.defaultValue : void 0;\n      case \"boolean\" /* Boolean */:\n        return isBoolean(control.defaultValue) ? control.defaultValue : void 0;\n      case \"enum\" /* Enum */:\n        if (isUndefined(control.defaultValue))\n          return void 0;\n        return control.options.includes(control.defaultValue) ? control.defaultValue : void 0;\n      case \"fusednumber\" /* FusedNumber */:\n      case \"number\" /* Number */:\n        return isNumber(control.defaultValue) ? control.defaultValue : void 0;\n      case \"transition\" /* Transition */:\n        return isObject(control.defaultValue) ? control.defaultValue : void 0;\n      case \"border\" /* Border */:\n        return isObject(control.defaultValue) ? control.defaultValue : void 0;\n      case \"font\" /* Font */:\n        return isObject(control.defaultValue) ? control.defaultValue : void 0;\n      case \"object\" /* Object */: {\n        const value = isObject(control.defaultValue) ? control.defaultValue : {};\n        if (isObject(control.controls)) {\n          applyControlDefaultsToDefaultProps(value, control.controls);\n        }\n        return value;\n      }\n      case \"array\" /* Array */:\n        return isArray(control.defaultValue) ? control.defaultValue : void 0;\n      case \"file\" /* File */:\n      case \"image\" /* Image */:\n      case \"richtext\" /* RichText */:\n      case \"pagescope\" /* PageScope */:\n      case \"eventhandler\" /* EventHandler */:\n      case \"segmentedenum\" /* SegmentedEnum */:\n      case \"responsiveimage\" /* ResponsiveImage */:\n      case \"componentinstance\" /* ComponentInstance */:\n      case \"scrollsectionref\" /* ScrollSectionRef */:\n      case \"customcursor\" /* CustomCursor */:\n      case \"cursor\" /* Cursor */:\n      case \"trackingid\" /* TrackingId */:\n      case \"vectorsetitem\" /* VectorSetItem */:\n        return void 0;\n      default:\n        shouldBeNever(control);\n        return void 0;\n    }\n  } catch {\n    return void 0;\n  }\n}\nfunction applyControlDefaultsToDefaultProps(defaultProps, controls) {\n  for (const controlKey in controls) {\n    const control = controls[controlKey];\n    if (!control)\n      continue;\n    const currentDefault = defaultProps[controlKey];\n    if (!isUndefined(currentDefault))\n      continue;\n    if (controlIsOptional(control))\n      continue;\n    const defaultValue = getControlDefaultValue(control);\n    if (isUndefined(defaultValue))\n      continue;\n    defaultProps[controlKey] = defaultValue;\n  }\n}\nfunction getDefaultProps(component) {\n  if (isObject(component.defaultProps)) {\n    return component.defaultProps;\n  }\n  const defaultProps = {};\n  component.defaultProps = defaultProps;\n  return defaultProps;\n}\nfunction applyControlDefaultsToReactDefaultProps(component, controls) {\n  if (!isReactComponent(component))\n    return;\n  const defaultProps = getDefaultProps(component);\n  applyControlDefaultsToDefaultProps(defaultProps, controls);\n}\n\n// ../../library/src/utils/addPropertyControls.ts\nfunction addPropertyControls(component, propertyControls) {\n  Object.assign(component, { propertyControls });\n  applyControlDefaultsToReactDefaultProps(component, propertyControls);\n}\nfunction getPropertyControls(component) {\n  return component.propertyControls;\n}\n\n// ../../library/src/components/Device/presets.ts\nvar defaultPresetId = \"iphone-12-pro\";\nvar presetsBase = /* @__PURE__ */ (() => ({\n  iPhonePro: {\n    // Screen mask takes care of the rounded screen corners for iPhones Pro,\n    // and actually using a radius here produces visual artifacts in Chrome.\n    screenRadius: (\n      /* 38 */\n      0\n    ),\n    clayBezelLeft: 21,\n    clayBezelRight: 21,\n    clayBezelTop: 21,\n    clayBezelBottom: 21,\n    clayBezelRadius: 38 + 21\n  },\n  iPhone8: {\n    screenRadius: 0,\n    clayBezelLeft: 24,\n    clayBezelRight: 24,\n    clayBezelTop: 96,\n    clayBezelBottom: 96,\n    clayBezelRadius: 38 * 1.5\n  },\n  iPadPro: {\n    screenRadius: 25,\n    clayBezelLeft: 38,\n    clayBezelRight: 38,\n    clayBezelTop: 38,\n    clayBezelBottom: 38,\n    clayBezelRadius: 25 + 38\n  },\n  desktop: {\n    clayBezelLeft: 20,\n    clayBezelRight: 20,\n    clayBezelTop: 20,\n    clayBezelBottom: 20,\n    clayBezelRadius: 20\n  }\n}))();\nvar devicePresets = /* @__PURE__ */ (() => [\n  {\n    id: \"iphone-12\",\n    title: \"iPhone 12\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 390,\n    screenHeight: 844,\n    externalClay: {\n      width: 500,\n      height: 974,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M171.2 0c2.3 0 4 .5 5.4 1.3 1.6 1 2.8 2.2 3.7 3.8.8 1.6 1.2 2.3 1.2 4.9 0 12 2.2 19 6.2 26.5s9.8 13.3 17.3 17.4c7.5 4 15.8 6.1 30.6 6.1h311.5c14.3 0 22.5-2.2 29.9-6.1 7.5-4 13.3-10 17.3-17.4 4-7.5 6.2-14.5 6.2-26.5 0-2.6.4-3.2 1.1-4.9.8-1.6 2-2.9 3.4-3.8 1.4-.8 3.2-1.3 5.4-1.3h54.2c40.1 0 54.7 4.2 69.4 12a81.8 81.8 0 0134 34c7.8 14.7 12 29.3 12 69.4v1457.2c0 40.1-4.2 54.7-12 69.4a81.8 81.8 0 01-34 34c-14.7 7.8-29.3 12-69.4 12H115.4c-40.1 0-54.7-4.2-69.4-12a81.8 81.8 0 01-34-34c-7.8-14.7-12-29.3-12-69.4V115.4C0 75.3 4.2 60.7 12 46a81.8 81.8 0 0134-34C60.7 4.2 75.3 0 115.4 0h55.4z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 490,\n      height: 944,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#14496D\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#DB4141\" }\n      ],\n      handOffset: { left: 29, right: 29, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-12-mini\",\n    title: \"iPhone 12 Mini\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 780,\n    externalClay: {\n      width: 450,\n      height: 890,\n      screenOffsetTop: 55,\n      screenOffsetLeft: 45\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M142 18c0 19 14 47 43 48h349c31 0 44-29 44-48 0-12 4-18 14-18h18c38 0 52 4 66 11 14 8 25 19 33 33v1c7 14 11 28 11 65v1340c0 38-4 52-11 66-8 14-19 25-33 33h-1c-14 7-28 11-65 11H110c-38 0-52-4-66-11-14-8-25-19-33-33v-1c-7-13-11-27-11-64V110c0-38 4-52 11-66 8-14 19-25 33-33h1C58 4 72 0 109 0h16c11 0 17 6 17 18z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 460,\n      height: 880,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#14496D\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#DB4141\" }\n      ],\n      handOffset: { left: 31.5, right: 30.5, bottom: 30 }\n    }\n  },\n  {\n    id: \"iphone-12-pro\",\n    title: \"iPhone 12 Pro\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 390,\n    screenHeight: 844,\n    externalClay: {\n      width: 494,\n      height: 968,\n      screenOffsetTop: 62,\n      screenOffsetLeft: 52\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M171.2 0c2.3 0 4 .5 5.4 1.3 1.6 1 2.8 2.2 3.7 3.8.8 1.6 1.2 2.3 1.2 4.9 0 12 2.2 19 6.2 26.5s9.8 13.3 17.3 17.4c7.5 4 15.8 6.1 30.6 6.1h311.5c14.3 0 22.5-2.2 29.9-6.1 7.5-4 13.3-10 17.3-17.4 4-7.5 6.2-14.5 6.2-26.5 0-2.6.4-3.2 1.1-4.9.8-1.6 2-2.9 3.4-3.8 1.4-.8 3.2-1.3 5.4-1.3h54.2c40.1 0 54.7 4.2 69.4 12a81.8 81.8 0 0134 34c7.8 14.7 12 29.3 12 69.4v1457.2c0 40.1-4.2 54.7-12 69.4a81.8 81.8 0 01-34 34c-14.7 7.8-29.3 12-69.4 12H115.4c-40.1 0-54.7-4.2-69.4-12a81.8 81.8 0 01-34-34c-7.8-14.7-12-29.3-12-69.4V115.4C0 75.3 4.2 60.7 12 46a81.8 81.8 0 0134-34C60.7 4.2 75.3 0 115.4 0h55.4z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 490,\n      height: 944,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"graphite\", title: \"Graphite\", colorValue: \"#585753\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pacific-blue\", title: \"Pacific Blue\", colorValue: \"#415D6C\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 29, right: 29, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-12-pro-max\",\n    title: \"iPhone 12 Pro Max\",\n    screenRadius: 50,\n    // to prevent leaking pixel in the corners, see https://github.com/framer/company/issues/20429\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 428,\n    screenHeight: 926,\n    externalClay: {\n      width: 532,\n      height: 1050,\n      screenOffsetTop: 62,\n      screenOffsetLeft: 52\n    },\n    screenMask: '<path d=\"M102 0c6 0 7 3 7 9 0 10 7 23 24 23h164c13 0 22-12 22-23 0-6 1-9 7-9h34c24 0 32 2 41 7s15 11 20 20 7 17 7 41v790c0 24-2 32-7 41s-11 15-20 20-17 7-41 7H68c-24 0-32-2-41-7s-15-11-20-20-7-17-7-41V68c0-24 2-32 7-41S18 12 27 7s17-7 41-7h34z\" fill=\"#000\" fill-rule=\"evenodd\"/>',\n    realisticImage: {\n      width: 528,\n      height: 1026,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"graphite\", title: \"Graphite\", colorValue: \"#585753\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pacific-blue\", title: \"Pacific Blue\", colorValue: \"#415D6C\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 28.5, right: 28, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-11\",\n    title: \"iPhone 11\",\n    // Screen mask takes care of the rounded screen corners for iPhones Pro,\n    // and actually using a radius here produces visual artifacts in Chrome.\n    screenRadius: (\n      /* 38 */\n      0\n    ),\n    clayBezelLeft: 35.5,\n    clayBezelRight: 35.5,\n    clayBezelTop: 35.5,\n    clayBezelBottom: 35.5,\n    clayBezelRadius: 77,\n    screenWidth: 414,\n    screenHeight: 896,\n    externalClay: {\n      width: 524,\n      height: 1026,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M85.5 0C89.1 0 92 3 92 6.5c.3 6 1.5 10 3.4 13.5 2.2 4.1 5.5 7.4 9.6 9.6 4.2 2.2 8.9 3.4 17 3.4h170c8.1 0 12.8-1.2 17-3.4 4.1-2.2 7.4-5.5 9.6-9.6A31 31 0 00322 6.5c0-3.6 3-6.5 6.5-6.5h32.3c18.5 0 25.2 2 32 5.5 6.7 3.7 12 9 15.7 15.7 3.6 6.8 5.5 13.5 5.5 32v789.6c0 18.5-2 25.2-5.5 32-3.7 6.7-9 12-15.7 15.7-6.8 3.6-13.5 5.5-32 5.5H53.2c-18.5 0-25.2-2-32-5.5-6.7-3.7-12-9-15.7-15.7C2 868 0 861.3 0 842.8V53.2c0-18.5 2-25.2 5.5-32 3.7-6.7 9-12 15.7-15.7C28 2 34.7 0 53.2 0h32.3z\" fill=\"#000\" fill-rule=\"nonzero\"/>',\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#202120\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F9F6EF\" },\n        { id: \"purple\", title: \"Purple\", colorValue: \"#D1CDDB\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#ADE0CD\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#B90D2E\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FFE680\" }\n      ],\n      handOffset: { left: 14.5, right: 14.5, bottom: 14.5 }\n    }\n  },\n  {\n    id: \"iphone-11-pro\",\n    title: \"iPhone 11 Pro\",\n    ...presetsBase.iPhonePro,\n    screenWidth: 375,\n    screenHeight: 812,\n    externalClay: {\n      width: 485,\n      height: 942,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M292 8.668V9c0 9.266-7.07 21-23.332 21h-162C90.402 30 83.332 18.266 83.332 9v-.332c0-4.285 0-8.668-7.664-8.668H43.332C16.312 0 0 16.313 0 43.332v725.336C0 795.688 16.313 812 43.332 812h288.336c27.02 0 43.332-16.313 43.332-43.332V43.332C375 16.312 358.687 0 331.668 0h-32C292 0 292 4.383 292 8.668zm0 0\"/>',\n    realisticImage: {\n      width: 475,\n      height: 912,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#52514F\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#EBEBE3\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FBD7BD\" },\n        { id: \"midnight-green\", title: \"Midnight Green\", colorValue: \"#4F5850\" }\n      ],\n      handOffset: { left: 24.5, right: 24.5, bottom: 23.5 }\n    }\n  },\n  {\n    id: \"iphone-11-pro-max\",\n    title: \"iPhone 11 Pro Max\",\n    ...presetsBase.iPhonePro,\n    screenWidth: 414,\n    screenHeight: 896,\n    externalClay: {\n      width: 524,\n      height: 1026,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M96 0c3.313 0 5.91 2.688 6 6 .18 6.645 1.191 10.148 2.938 13.41 1.917 3.586 4.73 6.402 8.316 8.317 3.586 1.918 7.441 2.941 15.445 2.941h156.602c8.004 0 11.86-1.023 15.445-2.941 3.586-1.915 6.399-4.73 8.317-8.317 1.746-3.265 2.746-6.758 2.937-13.41.094-3.313 2.688-6 6-6h46.004c17.387 0 23.687 1.809 30.043 5.21 6.355 3.4 11.344 8.388 14.742 14.743C412.191 26.31 414 32.61 414 49.996v796.008c0 17.387-1.809 23.687-5.21 30.043-3.4 6.355-8.388 11.344-14.743 14.742-6.356 3.402-12.656 5.211-30.043 5.211H49.996c-17.387 0-23.687-1.809-30.043-5.21-6.355-3.4-11.344-8.388-14.742-14.743C1.809 869.69 0 863.39 0 846.004V49.996C0 32.61 1.809 26.31 5.21 19.953c3.4-6.355 8.388-11.344 14.743-14.742C26.31 1.809 32.61 0 49.996 0zm0 0\"/>',\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#52514F\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#EBEBE3\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FBD7BD\" },\n        { id: \"midnight-green\", title: \"Midnight Green\", colorValue: \"#4F5850\" }\n      ],\n      handOffset: { left: 23.5, right: 24.5, bottom: 24 }\n    }\n  },\n  {\n    id: \"iphone-8\",\n    title: \"iPhone 8\",\n    ...presetsBase.iPhone8,\n    screenWidth: 375,\n    screenHeight: 667,\n    externalClay: {\n      width: 491,\n      height: 971,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 152\n    },\n    realisticImage: {\n      width: 475,\n      height: 927,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#28282A\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#DFE1E2\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#F6E6DB\" }\n      ],\n      handOffset: { left: 22, right: 22, bottom: 18.5 }\n    }\n  },\n  {\n    id: \"iphone-8-plus\",\n    title: \"iPhone 8 Plus\",\n    ...presetsBase.iPhone8,\n    screenWidth: 414,\n    screenHeight: 736,\n    externalClay: {\n      width: 530,\n      height: 1064,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 164\n    },\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#28282A\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#DFE1E2\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#F6E6DB\" }\n      ],\n      handOffset: { left: 21, right: 20.5, bottom: 19 }\n    }\n  },\n  {\n    id: \"iphone-se\",\n    title: \"iPhone SE\",\n    screenWidth: 320,\n    screenHeight: 568,\n    screenRadius: 0,\n    clayBezelLeft: 20,\n    clayBezelRight: 20,\n    clayBezelTop: 112,\n    clayBezelBottom: 112,\n    clayBezelRadius: 38 * 1.5,\n    externalClay: {\n      width: 436,\n      height: 872,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 152\n    },\n    realisticImage: {\n      width: 420,\n      height: 828,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" },\n        { id: \"rose-gold\", title: \"Rose Gold\", colorValue: \"#F7CFCA\" }\n      ],\n      handOffset: { left: 22, right: 22, bottom: 26.5 }\n    }\n  },\n  {\n    id: \"samsung-galaxy-s7\",\n    title: \"Samsung Galaxy S7\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 640,\n    externalClay: {\n      width: 454,\n      height: 880,\n      screenOffsetTop: 120,\n      screenOffsetLeft: 47\n    },\n    realisticImage: {\n      width: 440,\n      height: 860,\n      screenOffsetLeft: 40,\n      screenOffsetTop: 110,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 26, right: 25.5, bottom: 32 }\n    }\n  },\n  // deprecated\n  {\n    id: \"samsung-note-10\",\n    title: \"Samsung Note 10\",\n    screenWidth: 360,\n    screenHeight: 760,\n    screenRadius: 10,\n    clayBezelLeft: 7,\n    clayBezelRight: 7,\n    clayBezelTop: 15,\n    clayBezelBottom: 15,\n    clayBezelRadius: 15\n  },\n  {\n    id: \"pixel-5\",\n    title: \"Google Pixel 5\",\n    screenRadius: 31,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 780,\n    externalClay: {\n      width: 460,\n      height: 900,\n      screenOffsetTop: 60,\n      screenOffsetLeft: 50\n    },\n    realisticImage: {\n      width: 920 / 2,\n      height: 1760 / 2,\n      screenOffsetLeft: 100 / 2,\n      screenOffsetTop: 100 / 2,\n      availableColors: [\n        { id: \"just-black\", title: \"Just Black\", colorValue: \"#2E2C36\" },\n        { id: \"sorta-sage\", title: \"Sorta Sage\", colorValue: \"#B7C9C0\" }\n      ],\n      handOffset: {\n        left: 31.5,\n        right: 31,\n        bottom: 31\n        /* 1t */\n      }\n    }\n  },\n  {\n    id: \"pixel-4\",\n    title: \"Google Pixel 4\",\n    screenWidth: 360,\n    screenHeight: 760,\n    screenRadius: 34,\n    clayBezelLeft: 10,\n    clayBezelRight: 10,\n    clayBezelTop: 50,\n    clayBezelBottom: 25,\n    clayBezelRadius: 50,\n    externalClay: {\n      width: 460,\n      height: 938,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 89\n    },\n    realisticImage: {\n      width: 460,\n      height: 920,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 80,\n      availableColors: [\n        { id: \"clearly-white\", title: \"Clearly White\", colorValue: \"#EAEDF2\" },\n        { id: \"just-black\", title: \"Just Black\", colorValue: \"#1A1A1A\" },\n        { id: \"oh-so-orange\", title: \"Oh So Orange\", colorValue: \"#FF7A68\" }\n      ],\n      handOffset: {\n        left: 35.5,\n        right: 35.5,\n        bottom: 57\n        /* 1t */\n      }\n    }\n  },\n  // Desktop ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"macbook-air\",\n    title: \"MacBook Air\",\n    screenWidth: 1440,\n    screenHeight: 900,\n    disableRotation: true,\n    externalClay: {\n      width: 1890,\n      height: 1125,\n      screenOffsetLeft: 225,\n      screenOffsetTop: 98\n    },\n    realisticImage: {\n      width: 3848 / 2,\n      height: 2240 / 2,\n      screenOffsetLeft: 484 / 2,\n      screenOffsetTop: 196 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ]\n    }\n  },\n  {\n    id: \"macbook-pro-13\",\n    title: `MacBook Pro 13\"`,\n    screenWidth: 1440,\n    screenHeight: 900,\n    disableRotation: true,\n    externalClay: {\n      width: 1914,\n      height: 1169,\n      screenOffsetLeft: 236,\n      screenOffsetTop: 109\n    },\n    realisticImage: {\n      width: 3916 / 2,\n      height: 2330 / 2,\n      screenOffsetLeft: 518 / 2,\n      screenOffsetTop: 218 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" }\n      ]\n    }\n  },\n  {\n    id: \"macbook-pro-16\",\n    title: `MacBook Pro 16\"`,\n    screenWidth: 1536,\n    screenHeight: 960,\n    disableRotation: true,\n    externalClay: {\n      width: 1984,\n      height: 1179,\n      screenOffsetLeft: 225,\n      screenOffsetTop: 78\n    },\n    realisticImage: {\n      width: 4032 / 2,\n      height: 2348 / 2,\n      screenOffsetLeft: 480 / 2,\n      screenOffsetTop: 148 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" }\n      ]\n    }\n  },\n  {\n    id: \"imac-21-5\",\n    title: `iMac 21.5\"`,\n    screenWidth: 2048,\n    screenHeight: 1152,\n    disableRotation: true,\n    externalClay: {\n      width: 2288,\n      height: 1892,\n      screenOffsetLeft: 120,\n      screenOffsetTop: 120\n    },\n    realisticImage: {\n      width: 4562 / 2,\n      height: 3796 / 2,\n      screenOffsetLeft: 232 / 2,\n      screenOffsetTop: 244 / 2\n    }\n  },\n  {\n    id: \"imac-27\",\n    title: `iMac 27\"`,\n    screenWidth: 2560,\n    screenHeight: 1440,\n    disableRotation: true,\n    externalClay: {\n      width: 2848,\n      height: 2351,\n      screenOffsetLeft: 144,\n      screenOffsetTop: 151\n    },\n    realisticImage: {\n      width: 5676 / 2,\n      height: 4720 / 2,\n      screenOffsetLeft: 278 / 2,\n      screenOffsetTop: 292 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pro\", title: \"Pro\", colorValue: \"#5F5E63\" }\n      ]\n    }\n  },\n  {\n    id: \"pro-display-xdr\",\n    title: `Pro Display XDR`,\n    screenWidth: 3008,\n    screenHeight: 1692,\n    disableRotation: true,\n    externalClay: {\n      width: 3148,\n      height: 2325,\n      screenOffsetLeft: 70,\n      screenOffsetTop: 60\n    },\n    realisticImage: {\n      width: 6276 / 2,\n      height: 4695 / 2,\n      screenOffsetLeft: 130 / 2,\n      screenOffsetTop: 130 / 2\n    }\n  },\n  {\n    id: \"dell-xps\",\n    title: `Dell XPS`,\n    screenWidth: 1920,\n    screenHeight: 1080,\n    disableRotation: true,\n    externalClay: {\n      width: 2624,\n      height: 1381,\n      screenOffsetLeft: 352,\n      screenOffsetTop: 57\n    },\n    realisticImage: {\n      width: 5412 / 2,\n      height: 2746 / 2,\n      screenOffsetLeft: 786 / 2,\n      screenOffsetTop: 108 / 2\n    }\n  },\n  {\n    id: \"surface-book\",\n    title: `Microsoft Surface Book`,\n    screenWidth: 1500,\n    screenHeight: 1e3,\n    disableRotation: true,\n    externalClay: {\n      width: 2089,\n      height: 1234,\n      screenOffsetLeft: 296,\n      screenOffsetTop: 93\n    },\n    realisticImage: {\n      width: 4200 / 2,\n      height: 2508 / 2,\n      screenOffsetLeft: 600 / 2,\n      screenOffsetTop: 210 / 2\n    }\n  },\n  // Tablets ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"ipad\",\n    title: \"iPad\",\n    screenRadius: 0,\n    screenWidth: 810,\n    screenHeight: 1080,\n    clayBezelLeft: 30,\n    clayBezelRight: 30,\n    clayBezelTop: 95,\n    clayBezelBottom: 95,\n    clayBezelRadius: 0,\n    externalClay: {\n      width: 966,\n      height: 1378,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 149\n    },\n    realisticImage: {\n      width: 1920 / 2,\n      height: 2720 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 140,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-mini\",\n    title: \"iPad Mini\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 768,\n    screenHeight: 1024,\n    externalClay: {\n      width: 924,\n      height: 1384,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 180\n    },\n    realisticImage: {\n      width: 1856 / 2,\n      height: 2728 / 2,\n      screenOffsetLeft: 160 / 2,\n      screenOffsetTop: 340 / 2,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-air\",\n    title: \"iPad Air\",\n    screenRadius: 18,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 820,\n    screenHeight: 1180,\n    externalClay: {\n      width: 994,\n      height: 1374,\n      screenOffsetLeft: 87,\n      screenOffsetTop: 97\n    },\n    realisticImage: {\n      width: 1960 / 2,\n      height: 2680 / 2,\n      screenOffsetLeft: 160 / 2,\n      screenOffsetTop: 160 / 2,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"rose-gold\", title: \"Rose Gold\", colorValue: \"#ECCBC4\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#CBDAE6\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-pro-11\",\n    title: \"iPad Pro 11\\u2033\",\n    screenRadius: 17,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 834,\n    screenHeight: 1194,\n    externalClay: {\n      width: 990,\n      height: 1370,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 88\n    },\n    realisticImage: {\n      width: 1968 / 2,\n      height: 2688 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 75,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-pro-12-9\",\n    title: \"iPad Pro 12.9\\u2033\",\n    ...presetsBase.iPadPro,\n    screenRadius: 17,\n    screenWidth: 1024,\n    screenHeight: 1366,\n    externalClay: {\n      width: 1180,\n      height: 1542,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 88\n    },\n    realisticImage: {\n      width: 2348 / 2,\n      height: 3032 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 75,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" }\n      ]\n    }\n  },\n  {\n    id: \"surface-3\",\n    title: \"Microsoft Surface 3\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 960,\n    screenHeight: 640,\n    externalClay: {\n      width: 1184,\n      height: 864,\n      screenOffsetLeft: 112,\n      screenOffsetTop: 112\n    },\n    realisticImage: {\n      width: 2280 / 2,\n      height: 1580 / 2,\n      screenOffsetLeft: 180 / 2,\n      screenOffsetTop: 150 / 2\n    }\n  },\n  {\n    id: \"surface-pro-4\",\n    title: \"Microsoft Surface Pro 4\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 1368,\n    screenHeight: 912,\n    externalClay: {\n      width: 1592,\n      height: 1136,\n      screenOffsetLeft: 112,\n      screenOffsetTop: 112\n    },\n    realisticImage: {\n      width: 3176 / 2,\n      height: 2224 / 2,\n      screenOffsetLeft: 220 / 2,\n      screenOffsetTop: 200 / 2\n    }\n  },\n  // Watches ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"apple-watch-44\",\n    title: `Apple Watch 44mm`,\n    screenRadius: 33,\n    screenWidth: 184,\n    screenHeight: 224,\n    disableRotation: true,\n    externalClay: {\n      width: 298,\n      height: 502,\n      screenOffsetLeft: 57,\n      screenOffsetTop: 129\n    },\n    realisticImage: {\n      width: 548 / 2,\n      height: 908 / 2,\n      screenOffsetLeft: 90 / 2,\n      screenOffsetTop: 230 / 2,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FDDC6C\" },\n        { id: \"orange\", title: \"Orange\", colorValue: \"#F35C56\" }\n      ]\n    }\n  },\n  {\n    id: \"apple-watch-40\",\n    title: `Apple Watch 40mm`,\n    screenRadius: 27,\n    screenWidth: 162,\n    screenHeight: 197,\n    disableRotation: true,\n    externalClay: {\n      width: 280,\n      height: 463,\n      screenOffsetLeft: 59,\n      screenOffsetTop: 124\n    },\n    realisticImage: {\n      width: 504 / 2,\n      height: 854 / 2,\n      screenOffsetLeft: 90 / 2,\n      screenOffsetTop: 230 / 2,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FDDC6C\" },\n        { id: \"orange\", title: \"Orange\", colorValue: \"#F35C56\" }\n      ]\n    }\n  },\n  // TVs ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"tv-full-hd\",\n    title: `Full HD`,\n    screenRadius: 0,\n    screenWidth: 1920,\n    screenHeight: 1080,\n    externalClay: {\n      width: 1968,\n      height: 1168,\n      screenOffsetLeft: 24,\n      screenOffsetTop: 12\n    },\n    realisticImage: {\n      width: 4040 / 2,\n      height: 2360 / 2,\n      screenOffsetLeft: 100 / 2,\n      screenOffsetTop: 100 / 2\n    }\n  },\n  {\n    id: \"tv-4k\",\n    title: `4K`,\n    screenRadius: 0,\n    screenWidth: 3840,\n    screenHeight: 2160,\n    externalClay: {\n      width: 3908,\n      height: 2308,\n      screenOffsetLeft: 34,\n      screenOffsetTop: 24\n    },\n    realisticImage: {\n      width: 7960 / 2,\n      height: 4600 / 2,\n      screenOffsetLeft: 140 / 2,\n      screenOffsetTop: 140 / 2\n    }\n  },\n  // Old devices ------------------------------------------------------------------------------------------------------------------------\n  // deprecated\n  {\n    id: \"720p\",\n    title: \"720p\",\n    ...presetsBase.desktop,\n    screenWidth: 720,\n    screenHeight: 1280\n  },\n  // deprecated\n  {\n    id: \"900p\",\n    title: \"900p\",\n    ...presetsBase.desktop,\n    screenWidth: 900,\n    screenHeight: 1440\n  },\n  // deprecated\n  {\n    id: \"1080p\",\n    title: \"1080p\",\n    ...presetsBase.desktop,\n    screenWidth: 1080,\n    screenHeight: 1920\n  },\n  // deprecated\n  {\n    id: \"1440p\",\n    title: \"1440p\",\n    ...presetsBase.desktop,\n    screenWidth: 1440,\n    screenHeight: 2560\n  },\n  // deprecated\n  {\n    id: \"4k\",\n    title: \"4K\",\n    ...presetsBase.desktop,\n    screenWidth: 2160,\n    screenHeight: 3840\n  }\n])();\nvar deviceCodeComponentPresetIds = [\n  \"iphone-12\",\n  \"iphone-12-mini\",\n  \"iphone-12-pro\",\n  \"iphone-11\",\n  \"iphone-11-pro\",\n  \"iphone-11-pro-max\",\n  \"iphone-8\",\n  \"iphone-8-plus\",\n  \"iphone-se\",\n  \"samsung-note-10\",\n  \"pixel-4\",\n  \"ipad\",\n  \"ipad-pro-11\",\n  \"ipad-pro-12-9\",\n  \"720p\",\n  \"900p\",\n  \"1080p\",\n  \"1440p\",\n  \"4k\"\n];\nvar devicePresetsMap = /* @__PURE__ */ devicePresets.reduce(\n  (map2, preset) => {\n    map2[preset.id] = preset;\n    return map2;\n  },\n  {}\n);\nfunction getDevicePreset(presetId) {\n  return devicePresetsMap[presetId] ?? devicePresetsMap[defaultPresetId];\n}\n\n// ../../library/src/components/Device/DeviceCodeComponentProps.ts\nvar defaultDeviceProps = {\n  preset: defaultPresetId,\n  customWidth: 375,\n  customHeight: 800,\n  customBezel: 20,\n  isMixedBezel: false,\n  bezelTop: 20,\n  bezelRight: 20,\n  bezelBottom: 20,\n  bezelLeft: 20,\n  customBezelRadius: 20,\n  customScreenRadius: 0,\n  orientation: \"portrait\",\n  skin: \"clay\",\n  theme: \"dark\",\n  shadow: true,\n  backgroundColor: void 0\n};\nfunction convertPropsToDeviceOptions(props, { forceOldClay = false } = {}) {\n  var _a;\n  if (props.preset === \"no-device\") {\n    return;\n  }\n  let preset;\n  if (props.preset === \"custom\") {\n    preset = {\n      screenWidth: props.customWidth,\n      screenHeight: props.customHeight,\n      screenRadius: props.customScreenRadius,\n      clayBezelTop: props.isMixedBezel ? props.bezelTop : props.customBezel,\n      clayBezelRight: props.isMixedBezel ? props.bezelRight : props.customBezel,\n      clayBezelBottom: props.isMixedBezel ? props.bezelBottom : props.customBezel,\n      clayBezelLeft: props.isMixedBezel ? props.bezelLeft : props.customBezel,\n      clayBezelRadius: props.customBezelRadius\n    };\n  } else {\n    preset = getDevicePreset(props.preset);\n  }\n  const colors = getColorsFromTheme(props.theme);\n  const shadowColor = colors.shadowColor;\n  const shadow = props.shadow ? `0 10px 30px ${shadowColor}` : void 0;\n  const rotate = !preset.disableRotation && (props.orientation === \"landscape\" || props.rotated);\n  let deviceWidth;\n  let deviceHeight;\n  let screenOffsetTop;\n  let screenOffsetLeft;\n  let colorId = props.colorId;\n  let appearance;\n  if ((props.skin === void 0 || props.skin === \"realistic\") && preset.realisticImage && props.preset) {\n    deviceWidth = preset.realisticImage.width;\n    deviceHeight = preset.realisticImage.height;\n    screenOffsetTop = preset.realisticImage.screenOffsetTop;\n    screenOffsetLeft = preset.realisticImage.screenOffsetLeft;\n    colorId = colorId ?? colorIdForTheme(props.theme, preset.realisticImage.availableColors);\n    appearance = {\n      type: \"realistic\",\n      imageUrl: colorId ? `https://preview.framercdn.com/images/devices/${props.preset}-${colorId}.png` : `https://preview.framercdn.com/images/devices/${props.preset}.png`,\n      imageWidth: preset.realisticImage.width,\n      imageHeight: preset.realisticImage.height,\n      rotateImage: rotate\n    };\n  } else {\n    deviceWidth = preset.screenWidth + (preset.clayBezelLeft ?? 0) + (preset.clayBezelRight ?? 0);\n    deviceHeight = preset.screenHeight + (preset.clayBezelTop ?? 0) + (preset.clayBezelBottom ?? 0);\n    screenOffsetTop = preset.clayBezelTop ?? 0;\n    screenOffsetLeft = preset.clayBezelLeft ?? 0;\n    if (preset.externalClay && !forceOldClay) {\n      deviceWidth = preset.externalClay.width;\n      deviceHeight = preset.externalClay.height;\n      screenOffsetTop = preset.externalClay.screenOffsetTop;\n      screenOffsetLeft = preset.externalClay.screenOffsetLeft;\n      appearance = {\n        type: \"external-clay\",\n        imageUrl: `https://preview.framercdn.com/images/devices/${props.preset}-${props.theme}.svg`,\n        imageWidth: preset.externalClay.width,\n        imageHeight: preset.externalClay.height,\n        rotateImage: rotate\n      };\n    } else {\n      appearance = {\n        type: \"clay\",\n        bezelRadius: preset.clayBezelRadius !== void 0 ? `${preset.clayBezelRadius}px` : void 0,\n        bezelColor: colors.bezelColor,\n        bezelShadeColor: colors.bezelShadeColor\n      };\n    }\n  }\n  let screenWidth = preset.screenWidth;\n  let screenHeight = preset.screenHeight;\n  if (rotate) {\n    const screenOffsetRight = deviceWidth - screenWidth - screenOffsetLeft;\n    [deviceWidth, deviceHeight] = [deviceHeight, deviceWidth];\n    [screenWidth, screenHeight] = [screenHeight, screenWidth];\n    [screenOffsetTop, screenOffsetLeft] = [screenOffsetRight, screenOffsetTop];\n  }\n  const handOffset = (_a = preset.realisticImage) == null ? void 0 : _a.handOffset;\n  return {\n    deviceWidth,\n    deviceHeight,\n    appearance,\n    screenWidth,\n    screenHeight,\n    screenOffsetTop,\n    screenOffsetLeft,\n    screenRadius: preset.screenRadius !== void 0 ? `${preset.screenRadius}px` : void 0,\n    screenMaskImage: appearance.type !== \"realistic\" && preset.screenMask ? makeScreenMaskImage({\n      mask: preset.screenMask,\n      // width/height of the mask = screen width/height pre-rotation\n      width: preset.screenWidth,\n      height: preset.screenHeight,\n      rotate\n    }) : void 0,\n    screenColor: colors.screenColor,\n    shadow,\n    hand: props.hand !== void 0 && supportsHand(props) ? {\n      imageUrl: `https://preview.framercdn.com/images/hands/${props.hand}.png`,\n      offsetLeft: handOffset == null ? void 0 : handOffset.left,\n      offsetRight: handOffset == null ? void 0 : handOffset.right,\n      offsetBottom: handOffset == null ? void 0 : handOffset.bottom\n    } : void 0,\n    background: props.backgroundColor,\n    theme: props.theme,\n    colorId\n  };\n}\nfunction makeScreenMaskImage({\n  mask,\n  width,\n  height,\n  rotate = false\n}) {\n  const transform2 = rotate ? (\n    // Rotate 90 degrees counter-clockwise around (0,0), then move the\n    // result down into the viewport (rightmost transform is applied first).\n    `transform=\"translate(0 ${width}) rotate(-90)\"`\n  ) : \"\";\n  const encoded = encodeURIComponent(\n    `<svg xmlns=\"http://www.w3.org/2000/svg\" viewport=\"0 0 ${width} ${height}\" preserveAspectRatio=\"none\"><g x=\"0\" y=\"0\" ${transform2}>${mask}</g></svg>`\n  );\n  return `url(\"data:image/svg+xml;utf8,${encoded}\")`;\n}\nvar lightColors = /* @__PURE__ */ new Set([\"white\", \"silver\", \"clearly-white\", \"sorta-sage\"]);\nvar darkColors = /* @__PURE__ */ new Set([\"black\", \"space-grey\", \"graphite\", \"just-black\", \"pro\"]);\nfunction colorIdForTheme(theme, availableColors) {\n  var _a;\n  if (!availableColors)\n    return;\n  const colors = theme === \"light\" ? lightColors : darkColors;\n  for (const color2 of availableColors) {\n    if (colors.has(color2.id)) {\n      return color2.id;\n    }\n  }\n  return (_a = availableColors[0]) == null ? void 0 : _a.id;\n}\nfunction supportsHand({ preset: presetId, skin, orientation = \"portrait\" }) {\n  var _a;\n  if (!presetId || presetId === \"custom\" || presetId === \"no-device\" || orientation === \"landscape\")\n    return false;\n  const preset = getDevicePreset(presetId);\n  return skin !== \"clay\" && ((_a = preset.realisticImage) == null ? void 0 : _a.handOffset) !== void 0;\n}\n\n// ../../library/src/components/Device/usePrototypingMetaTags.ts\nimport React14 from \"react\";\nfunction applyMetaTag(name, props) {\n  var _a;\n  let tag = document.querySelector(`meta[name=\"${name}\"]`);\n  if (!tag) {\n    tag = document.createElement(\"meta\");\n    (_a = document.getElementsByTagName(\"head\")[0]) == null ? void 0 : _a.appendChild(tag);\n    tag.setAttribute(\"name\", name);\n  }\n  for (const [k, v] of Object.entries(props)) {\n    tag.setAttribute(k, v);\n  }\n}\nfunction usePrototypingMetaTags() {\n  React14.useEffect(() => {\n    applyMetaTag(\"mobile-web-app-capable\", { content: \"yes\" });\n    applyMetaTag(\"apple-mobile-web-app-capable\", { content: \"yes\" });\n    applyMetaTag(\"apple-mobile-web-app-status-bar-style\", {\n      content: \"black-translucent\"\n    });\n    applyMetaTag(\"viewport\", {\n      content: \"viewport-fit=cover, user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1\"\n    });\n  }, []);\n}\n\n// ../../library/src/components/Device/DeviceCodeComponent.tsx\nimport { jsx as jsx9 } from \"react/jsx-runtime\";\nfunction DeviceCodeComponentInner({ children, ...props }) {\n  usePrototypingMetaTags();\n  const deviceOptions = convertPropsToDeviceOptions(props, { forceOldClay: true });\n  React15.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  if (!deviceOptions) {\n    return /* @__PURE__ */ jsx9(\n      \"div\",\n      {\n        \"data-framer-component-type\": \"DeviceComponent\",\n        className: \"no-device\",\n        style: { width: \"100%\", height: \"100%\" },\n        children: /* @__PURE__ */ jsx9(ProvideParentSize, { parentSize: 1 /* Disabled */, children })\n      }\n    );\n  }\n  const child = Array.isArray(children) ? children[0] : children;\n  const resizedChild = child && React15.isValidElement(child) ? React15.cloneElement(child, {\n    width: deviceOptions.screenWidth,\n    height: deviceOptions.screenHeight\n  }) : null;\n  return /* @__PURE__ */ jsx9(Device, { scaleTo: \"dynamic\", deviceOptions, children: resizedChild });\n}\nvar DeviceCodeComponent = /* @__PURE__ */ (() => {\n  const { componentWidth: defaultWidth2, componentHeight: defaultHeight2 } = getComponentSize(\n    convertPropsToDeviceOptions(defaultDeviceProps, { forceOldClay: true })\n  );\n  DeviceCodeComponentInner.defaultProps = {\n    width: defaultWidth2,\n    height: defaultHeight2,\n    ...defaultDeviceProps\n  };\n  const deviceCodeComponentPresets = devicePresets.filter((preset) => deviceCodeComponentPresetIds.includes(preset.id));\n  addPropertyControls(DeviceCodeComponentInner, {\n    children: {\n      title: \"Content\",\n      type: \"componentinstance\" /* ComponentInstance */\n    },\n    preset: {\n      type: \"enum\" /* Enum */,\n      options: [\"no-device\", \"custom\"].concat(deviceCodeComponentPresets.map((preset) => preset.id)),\n      optionTitles: [\"No Device\", \"Custom\"].concat(deviceCodeComponentPresets.map((preset) => preset.title))\n    },\n    customWidth: {\n      title: \"Width\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customHeight: {\n      title: \"Height\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customBezel: {\n      title: \"Bezel\",\n      type: \"fusednumber\" /* FusedNumber */,\n      min: 0,\n      toggleKey: \"isMixedBezel\",\n      toggleTitles: [\"a\", \"b\"],\n      valueKeys: [\"bezelTop\", \"bezelRight\", \"bezelBottom\", \"bezelLeft\"],\n      valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customBezelRadius: {\n      title: \"Bezel Radius\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customScreenRadius: {\n      title: \"Screen Radius\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    orientation: {\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"portrait\", \"landscape\"],\n      optionTitles: [\"Portrait\", \"Landscape\"],\n      optionIcons: [\"orientation-portrait\", \"orientation-landscape\"],\n      hidden: (props) => !!props.preset && !supportsOrientation(props.preset)\n    },\n    skin: {\n      title: \"Device\",\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"realistic\", \"clay\"],\n      optionTitles: [\"Realistic\", \"Clay\"],\n      defaultValue: \"clay\",\n      hidden: (props) => !!props.preset && !supportsRealisticSkin(props.preset)\n    },\n    theme: {\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"light\", \"dark\"],\n      optionTitles: [\"Light\", \"Dark\"],\n      hidden: (props) => !!props.preset && !supportsThemes(props.preset, props.skin)\n    },\n    shadow: {\n      type: \"boolean\" /* Boolean */,\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      hidden: ({ skin, preset }) => preset !== \"custom\" && skin === \"realistic\" || preset === \"no-device\"\n    },\n    hand: {\n      type: \"enum\" /* Enum */,\n      options: [void 0, \"hand-1\", \"hand-2\"],\n      optionTitles: [\"None\", \"Model 1\", \"Model 2\"],\n      hidden: (props) => !supportsHand(props)\n    },\n    backgroundColor: {\n      type: \"color\" /* Color */,\n      title: \"Background\",\n      optional: true,\n      hidden: ({ preset }) => preset === \"no-device\"\n    }\n  });\n  return DeviceCodeComponentInner;\n})();\nfunction supportsOrientation(presetId) {\n  if (presetId === \"no-device\")\n    return false;\n  if (presetId === \"custom\")\n    return true;\n  const preset = getDevicePreset(presetId);\n  return !preset.disableRotation;\n}\nfunction supportsRealisticSkin(presetId) {\n  if (presetId === \"custom\" || presetId === \"no-device\")\n    return false;\n  const preset = getDevicePreset(presetId);\n  return !!preset.realisticImage;\n}\nfunction supportsThemes(presetId, skin) {\n  if (presetId === \"no-device\")\n    return false;\n  if (presetId === \"custom\" || skin !== \"realistic\")\n    return true;\n  const preset = getDevicePreset(presetId);\n  const realisticImage = preset.realisticImage;\n  if (realisticImage === void 0) {\n    return true;\n  }\n  if (colorIdForTheme(\"dark\", realisticImage.availableColors) !== void 0) {\n    return true;\n  }\n  return false;\n}\n\n// ../../library/src/components/EmptyState.tsx\nimport React22 from \"react\";\n\n// ../../library/src/render/presentation/Frame/FrameWithMotion.tsx\nimport React21, { forwardRef, useContext as useContext5, useRef as useRef8 } from \"react\";\n\n// ../../library/src/modules/useIsStaticRenderer.ts\nimport { useState } from \"react\";\nfunction isStaticRenderer() {\n  const currentTarget = RenderTarget.current();\n  return currentTarget === RenderTarget.canvas || currentTarget === RenderTarget.export;\n}\nfunction useIsStaticRenderer() {\n  const [isStatic] = useState(() => isStaticRenderer());\n  return isStatic;\n}\n\n// ../../library/src/utils/asRecord.ts\nvar asRecord = (object) => object;\n\n// ../../library/src/utils/isPropValid.ts\nfunction memoize(fn) {\n  const cache2 = Object.create(Object.prototype);\n  return (arg) => {\n    if (cache2[arg] === void 0)\n      cache2[arg] = fn(arg);\n    return cache2[arg];\n  };\n}\nvar reactPropsRegex = /^(?:children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|[dkrxyz]|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y1|y2|yChannelSelector|zoomAndPan|for|class|autofocus|(?:[Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*)$/u;\nvar isPropValid = /* @__PURE__ */ memoize(\n  (prop) => reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91\n  /* Z+1 */\n);\n\n// ../../library/src/render/style/BackgroundImageComponent.tsx\nimport React16 from \"react\";\n\n// ../../library/src/utils/runtimeInjection.ts\nvar mockWithWarning = (message) => {\n  return () => {\n    warnOnce(message);\n  };\n};\nvar mockWithoutWarning = () => {\n  return () => {\n  };\n};\nvar implementation = {\n  // We need a default implementation for useImageSource and useImageElement as it is used for rendering image backgrounds which would break otherwise.\n  // The default value is used for HTML export and when using the library without Framer.\n  useImageSource(image) {\n    return image.src ?? \"\";\n  },\n  useImageElement(image, rect, nodeId) {\n    const element = new Image();\n    element.src = runtime.useImageSource(image, rect, nodeId);\n    if (image.srcSet)\n      element.srcset = image.srcSet;\n    return element;\n  },\n  canRenderOptimizedCanvasImage() {\n    return false;\n  }\n};\nvar isRuntimeInjected = false;\nvar runtimeProxy = {\n  get(target, key7, reciever) {\n    if (Reflect.has(target, key7)) {\n      return Reflect.get(target, key7, reciever);\n    }\n    if ([\"getLogger\"].includes(String(key7))) {\n      return mockWithoutWarning();\n    }\n    if (isRuntimeInjected) {\n      return mockWithWarning(`${String(key7)} is not available in this version of Framer.`);\n    }\n    return mockWithWarning(`${String(key7)} is only available inside of Framer. https://www.framer.com/`);\n  }\n};\nvar runtime = /* @__PURE__ */ new Proxy(implementation, runtimeProxy);\nfunction _injectRuntime(injectedRuntime) {\n  Object.assign(implementation, injectedRuntime);\n  isRuntimeInjected = true;\n}\n\n// ../../library/src/render/style/BackgroundImageComponent.tsx\nimport { jsx as jsx10 } from \"react/jsx-runtime\";\nvar wrapperStyle = {\n  position: \"absolute\",\n  borderRadius: \"inherit\",\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0\n};\nvar placeholderStyle = {\n  backgroundRepeat: \"repeat\",\n  backgroundPosition: \"left top\",\n  backgroundSize: \"126px auto\",\n  backgroundImage: \"url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI2IiBoZWlnaHQ9IjEyNiI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0xMjYgMHYyMS41ODRMMjEuNTg0IDEyNkgwdi0xNy41ODVMMTA4LjQxNSAwSDEyNlptMCAxMDguNDE0VjEyNmgtMTcuNTg2TDEyNiAxMDguNDE0Wm0wLTg0djM5LjE3MUw2My41ODUgMTI2SDI0LjQxNEwxMjYgMjQuNDE0Wm0wIDQydjM5LjE3TDEwNS41ODQgMTI2aC0zOS4xN0wxMjYgNjYuNDE0Wk0xMDUuNTg2IDAgMCAxMDUuNTg2VjY2LjQxNUw2Ni40MTUgMGgzOS4xNzFabS00MiAwTDAgNjMuNTg2VjI0LjQxNUwyNC40MTUgMGgzOS4xNzFabS00MiAwTDAgMjEuNTg2VjBoMjEuNTg2WiIvPjwvZGVmcz48dXNlIHhsaW5rOmhyZWY9IiNhIiBmaWxsPSIjODg4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)\",\n  opacity: 0.2\n};\nfunction cssObjectFit(imageFit) {\n  switch (imageFit) {\n    case \"fit\":\n      return \"contain\";\n    case \"stretch\":\n      return \"fill\";\n    default:\n      return \"cover\";\n  }\n}\nfunction cssObjectPosition(positionX, positionY) {\n  const x = positionX ?? \"center\";\n  const y = positionY ?? \"center\";\n  if (x === \"center\" && y === \"center\")\n    return \"center\";\n  return x + \" \" + y;\n}\nfunction getImageStyle(image) {\n  return {\n    display: \"block\",\n    width: \"100%\",\n    height: \"100%\",\n    borderRadius: \"inherit\",\n    objectPosition: cssObjectPosition(image.positionX, image.positionY),\n    objectFit: cssObjectFit(image.fit)\n  };\n}\nfunction StaticImage({ image, containerSize, nodeId, alt, draggable, syncDecoding }) {\n  const source = runtime.useImageSource(image, containerSize, nodeId);\n  const imageStyle = getImageStyle(image);\n  const imageRef = React16.useRef(null);\n  return (\n    // eslint-disable-next-line framer-studio/require-async-decoding\n    /* @__PURE__ */ jsx10(\n      \"img\",\n      {\n        ref: imageRef,\n        decoding: syncDecoding ? \"sync\" : \"async\",\n        fetchpriority: image.fetchPriority,\n        loading: image.loading,\n        sizes: image.sizes,\n        srcSet: image.srcSet,\n        src: source,\n        alt: alt ?? image.alt ?? \"\",\n        style: imageStyle,\n        draggable\n      }\n    )\n  );\n}\nfunction CanvasImage({ image, containerSize, nodeId }) {\n  const wrapperRef = React16.useRef(null);\n  const imageElement = runtime.useImageElement(image, containerSize, nodeId);\n  const imageStyle = getImageStyle(image);\n  React16.useLayoutEffect(() => {\n    const wrapper = wrapperRef.current;\n    if (wrapper === null)\n      return;\n    wrapper.appendChild(imageElement);\n    return () => {\n      wrapper.removeChild(imageElement);\n    };\n  }, [imageElement]);\n  Object.assign(imageElement.style, imageStyle);\n  return /* @__PURE__ */ jsx10(\"div\", { ref: wrapperRef, style: { display: \"contents\", borderRadius: \"inherit\" } });\n}\nfunction OptimizedCanvasImage({ nodeId, image, containerSize }) {\n  const wrapperRef = React16.useRef(null);\n  const source = runtime.useImageSource(image, containerSize, nodeId);\n  React16.useLayoutEffect(() => {\n    const wrapper = wrapperRef.current;\n    if (wrapper === null)\n      return;\n    const imageStyle = getImageStyle(image);\n    runtime.renderOptimizedCanvasImage(wrapper, source, imageStyle, nodeId);\n  }, [nodeId, image, source]);\n  return /* @__PURE__ */ jsx10(\"div\", { ref: wrapperRef, style: { display: \"contents\", borderRadius: \"inherit\" } });\n}\nfunction BackgroundImageComponent({ layoutId, image, ...props }) {\n  if (layoutId) {\n    layoutId = layoutId + \"-background\";\n  }\n  const fallbackWrapperStyles = { ...wrapperStyle, ...placeholderStyle };\n  let imageNode = null;\n  if (isString(image.src)) {\n    if (image.fit === \"tile\" && image.pixelWidth && image.pixelHeight) {\n      const backgroundSize = isNumber(image.backgroundSize) ? image.backgroundSize : 1;\n      const tileSize = {\n        width: Math.round(backgroundSize * image.pixelWidth),\n        height: Math.round(backgroundSize * image.pixelHeight)\n      };\n      const imageSource = runtime.useImageSource(image, tileSize);\n      fallbackWrapperStyles.backgroundImage = `url(${imageSource})`;\n      fallbackWrapperStyles.backgroundRepeat = \"repeat\";\n      fallbackWrapperStyles.backgroundPosition = cssObjectPosition(image.positionX, image.positionY);\n      fallbackWrapperStyles.opacity = void 0;\n      fallbackWrapperStyles.border = 0;\n      fallbackWrapperStyles.backgroundSize = `${(backgroundSize * (image.pixelWidth / 2)).toFixed(2)}px auto`;\n      imageNode = null;\n    } else if (RenderTarget.current() !== RenderTarget.canvas) {\n      imageNode = /* @__PURE__ */ jsx10(StaticImage, { image, syncDecoding: RenderTarget.current() === RenderTarget.export, ...props });\n    } else if (runtime.canRenderOptimizedCanvasImage(runtime.useImageSource(image))) {\n      imageNode = /* @__PURE__ */ jsx10(OptimizedCanvasImage, { image, ...props });\n    } else {\n      imageNode = /* @__PURE__ */ jsx10(CanvasImage, { image, ...props });\n    }\n  }\n  return /* @__PURE__ */ jsx10(\n    motion.div,\n    {\n      layoutId,\n      style: imageNode ? wrapperStyle : fallbackWrapperStyles,\n      \"data-framer-background-image-wrapper\": true,\n      children: imageNode\n    }\n  );\n}\n\n// ../../library/src/render/style/BorderComponent.tsx\nimport { jsx as jsx11 } from \"react/jsx-runtime\";\nfunction collectBorderStyleForProps(props, style, collapseEqualBorders = true) {\n  const { borderWidth, borderStyle, borderColor } = props;\n  if (!borderWidth) {\n    return;\n  }\n  let borderTop;\n  let borderBottom;\n  let borderLeft;\n  let borderRight;\n  if (typeof borderWidth === \"number\") {\n    borderTop = borderBottom = borderLeft = borderRight = borderWidth;\n  } else {\n    borderTop = borderWidth.top || 0;\n    borderBottom = borderWidth.bottom || 0;\n    borderLeft = borderWidth.left || 0;\n    borderRight = borderWidth.right || 0;\n  }\n  if (borderTop === 0 && borderBottom === 0 && borderLeft === 0 && borderRight === 0) {\n    return;\n  }\n  if (collapseEqualBorders && borderTop === borderBottom && borderTop === borderLeft && borderTop === borderRight) {\n    style.border = `${borderTop}px ${borderStyle} ${borderColor}`;\n    return;\n  }\n  style.borderStyle = props.borderStyle;\n  style.borderColor = props.borderColor;\n  style.borderTopWidth = `${borderTop}px`;\n  style.borderBottomWidth = `${borderBottom}px`;\n  style.borderLeftWidth = `${borderLeft}px`;\n  style.borderRightWidth = `${borderRight}px`;\n}\nfunction Border(props) {\n  const layoutId = props.layoutId ? `${props.layoutId}-border` : void 0;\n  if (!props.borderWidth) {\n    return null;\n  }\n  const style = {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    borderRadius: \"inherit\",\n    pointerEvents: \"none\"\n  };\n  if (props.border) {\n    ;\n    style.border = props.border;\n    return /* @__PURE__ */ jsx11(motion.div, { style });\n  }\n  collectBorderStyleForProps(props, style, false);\n  return /* @__PURE__ */ jsx11(motion.div, { \"data-frame-border\": true, style, layoutId });\n}\n\n// ../../library/src/render/types/BackgroundImage.ts\nvar key = \"src\";\nvar BackgroundImage = {\n  isImageObject: function(image) {\n    if (!image || typeof image === \"string\")\n      return false;\n    return key in image;\n  }\n};\n\n// ../../library/src/render/style/backgroundImageFromProps.ts\nfunction applyForwardOverrides(background, props) {\n  const { _forwardedOverrideId, _forwardedOverrides, id } = props;\n  const forwardedOverrideId = _forwardedOverrideId ?? id;\n  const src = _forwardedOverrides && forwardedOverrideId ? _forwardedOverrides[forwardedOverrideId] : void 0;\n  if (src && typeof src === \"string\") {\n    background = { ...background, src };\n  }\n  return background;\n}\nfunction backgroundImageFromProps(props) {\n  const { background, image } = props;\n  if (image !== void 0 && background && !BackgroundImage.isImageObject(background)) {\n    return;\n  }\n  let backgroundImage = null;\n  if (isString(image)) {\n    backgroundImage = { alt: \"\", src: image };\n  } else {\n    backgroundImage = Animatable.get(background, null);\n  }\n  if (!BackgroundImage.isImageObject(backgroundImage)) {\n    return;\n  }\n  return applyForwardOverrides(backgroundImage, props);\n}\n\n// ../../library/src/render/utils/htmlElementAsMotionComponent.ts\nfunction htmlElementAsMotionComponent(asElem) {\n  return asElem && asElem !== \"search\" && asElem !== \"slot\" && asElem !== \"template\" ? motion[asElem] : motion[\"div\"];\n}\n\n// ../../library/src/utils/environment.ts\nvar import_process = __toESM(require_browser(), 1);\n\n// ../../library/src/utils/safeNavigator.ts\nvar safeNavigator = typeof navigator !== \"undefined\" ? navigator : void 0;\n\n// ../../library/src/utils/environment.ts\nvar isBrowser2 = () => typeof document === \"object\";\nvar isWebKit = () => {\n  var _a;\n  return ((_a = safeNavigator) == null ? void 0 : _a.userAgent.includes(\"AppleWebKit/\")) && !isChrome() && !isEdge();\n};\nvar webkitVersion = () => {\n  let version2 = -1;\n  const regexp = /AppleWebKit\\/([\\d.]+)/u;\n  const result = safeNavigator && regexp.exec(safeNavigator.userAgent);\n  if (result && result[1]) {\n    version2 = parseFloat(result[1]);\n  }\n  return version2;\n};\nvar safariVersion = () => {\n  let version2 = -1;\n  const regexp = /Version\\/([\\d.]+)/u;\n  const result = safeNavigator && regexp.exec(safeNavigator.userAgent);\n  if (result && result[1]) {\n    version2 = parseFloat(result[1]);\n  }\n  return version2;\n};\nvar isChrome = () => safeNavigator && /Chrome/u.test(safeNavigator.userAgent) && /Google Inc/u.test(safeNavigator.vendor) && !isEdge();\nvar isSafari = () => safeNavigator && /Safari/u.test(safeNavigator.userAgent) && /Apple Computer/u.test(safeNavigator.vendor);\nvar isFirefox = () => safeNavigator && /Firefox\\/\\d+\\.\\d+$/u.test(safeNavigator.userAgent);\nvar isFramerX = () => safeNavigator && /FramerX/u.test(safeNavigator.userAgent);\nvar isEdge = () => safeNavigator && /Edg\\//u.test(safeNavigator.userAgent);\nvar isAndroid = () => safeNavigator && /android/iu.test(safeNavigator.userAgent);\nvar isIOS = () => safeNavigator && /iPhone|iPod|iPad/iu.test(safeNavigator.platform);\nvar isMacOS = () => safeNavigator && /Mac/u.test(safeNavigator.platform);\nvar isWindows = () => safeNavigator && /Win/u.test(safeNavigator.platform);\nvar isTouch = () => safeWindow.ontouchstart === null && safeWindow.ontouchmove === null && safeWindow.ontouchend === null;\nvar isDesktop = () => deviceType() === \"desktop\";\nvar isPhone = () => deviceType() === \"phone\";\nvar isTablet = () => deviceType() === \"tablet\";\nvar isMobile = () => isPhone() || isTablet();\nvar isFileUrl = (url) => url.startsWith(\"file://\");\nvar isDataUrl = (url) => url.startsWith(\"data:\");\nvar isTest = () => import_process.default.env.NODE_ENV === \"test\";\nvar isRelativeUrl = (url) => !/^[a-z]{1,8}:\\/\\/.*$/i.test(url);\nvar isLocalServerUrl = (url) => /[a-z]{1,8}:\\/\\/127\\.0\\.0\\.1/i.test(url) || /[a-zA-Z]{1,8}:\\/\\/localhost/u.test(url);\nvar isLocalUrl = (url) => {\n  if (isFileUrl(url))\n    return true;\n  if (isLocalServerUrl(url))\n    return true;\n  return false;\n};\nvar isLocalAssetUrl = (url, baseUrl) => {\n  if (baseUrl === null)\n    baseUrl = safeWindow.location.href;\n  if (isDataUrl(url))\n    return false;\n  if (isLocalUrl(url))\n    return true;\n  if (isRelativeUrl(url) && isLocalUrl(baseUrl))\n    return true;\n  return false;\n};\nvar devicePixelRatio2 = () => safeWindow.devicePixelRatio;\nvar isJP2Supported = function() {\n  if (isFirefox())\n    return false;\n  return isWebKit();\n};\nvar isWebPSupported = () => isChrome();\nvar deviceType = () => {\n  if (safeNavigator && /tablet|iPad|Nexus 9/i.test(safeNavigator.userAgent))\n    return \"tablet\";\n  if (safeNavigator && /mobi/iu.test(safeNavigator.userAgent))\n    return \"phone\";\n  return \"desktop\";\n};\nvar deviceOS = () => {\n  if (isMacOS())\n    return \"macos\";\n  if (isIOS())\n    return \"ios\";\n  if (isAndroid())\n    return \"android\";\n  if (isWindows())\n    return \"windows\";\n};\nvar deviceFont = (os) => {\n  if (!os) {\n    os = deviceOS();\n  }\n  const fonts = {\n    apple: \"-apple-system, BlinkMacSystemFont, SF Pro Text, SF UI Text, Helvetica Neue\",\n    google: \"Roboto, Helvetica Neue\",\n    microsoft: \"Segoe UI, Helvetica Neue\"\n  };\n  if (os === \"macos\")\n    return fonts.apple;\n  if (os === \"ios\")\n    return fonts.apple;\n  if (os === \"android\")\n    return fonts.google;\n  if (os === \"windows\")\n    return fonts.microsoft;\n  return fonts.apple;\n};\nvar environment = {\n  isWebKit,\n  webkitVersion,\n  isChrome,\n  isSafari,\n  isFirefox,\n  isFramerX,\n  isEdge,\n  isAndroid,\n  isIOS,\n  isMacOS,\n  isWindows,\n  isTouch,\n  isDesktop,\n  isPhone,\n  isTablet,\n  isMobile,\n  isFileUrl,\n  isDataUrl,\n  isRelativeUrl,\n  isLocalServerUrl,\n  isLocalUrl,\n  isLocalAssetUrl,\n  devicePixelRatio: devicePixelRatio2,\n  isJP2Supported,\n  isWebPSupported,\n  deviceType,\n  deviceOS,\n  deviceFont,\n  safariVersion\n};\n\n// ../../library/src/render/utils/layoutHintDataPropsForCenter.ts\nvar isChrome2 = /* @__PURE__ */ isChrome();\nfunction collectLayoutHintDataProps(props, center) {\n  props[\"data-framer-layout-hint-center-x\"] = center === true || center === \"x\" ? true : void 0;\n  props[\"data-framer-layout-hint-center-y\"] = center === true || center === \"y\" ? true : void 0;\n}\nfunction layoutHintDataPropsForCenter(center) {\n  const props = {};\n  if (!center || !isChrome2 || RenderTarget.current() !== RenderTarget.canvas) {\n    return props;\n  }\n  collectLayoutHintDataProps(props, center);\n  return props;\n}\n\n// ../../library/src/render/utils/nodeIdFromString.ts\nfunction nodeIdFromString(str) {\n  return str.replace(/^id_/u, \"\").replace(/\\\\/gu, \"\");\n}\n\n// ../../library/src/render/utils/performanceDebugging.ts\nfunction countNodeRender() {\n  if (true)\n    return;\n  const perf = asRecord(safeWindow)[\"perf\"];\n  if (!perf)\n    return;\n  perf.nodeRender();\n}\n\n// ../../library/src/render/utils/processOverrideForwarding.ts\nimport React17 from \"react\";\nfunction processOverrideForwarding(props, children) {\n  if (!children) {\n    children = props.children;\n    if (!children)\n      return { props, children };\n  }\n  const _forwardedOverrides = props._forwardedOverrides;\n  if (!_forwardedOverrides)\n    return { props, children };\n  children = React17.Children.map(children, (child) => {\n    if (!React17.isValidElement(child))\n      return child;\n    return React17.cloneElement(child, { _forwardedOverrides });\n  });\n  return { props, children };\n}\n\n// ../../library/src/render/utils/transformTemplate.ts\nfunction transformTemplate(center) {\n  return (_, generated) => {\n    if (center === true) {\n      return `translate(-50%, -50%) ${generated}`;\n    } else {\n      if (center === \"x\") {\n        return `translateX(-50%) ${generated}`;\n      } else if (center === \"y\") {\n        return `translateY(-50%) ${generated}`;\n      }\n    }\n    return generated || \"none\";\n  };\n}\n\n// ../../library/src/render/utils/useLayoutId.ts\nimport { useContext as useContext3, useMemo as useMemo2 } from \"react\";\nfunction useLayoutId(props, { specificLayoutId, postfix } = {}) {\n  const { name, layoutIdKey, duplicatedFrom, __fromCodeComponentNode = false, drag } = props;\n  const { getLayoutId, enabled } = useContext3(LayoutIdContext);\n  return useMemo2(() => {\n    if (!enabled)\n      return props.layoutId;\n    const existingLayoutId = specificLayoutId || props.layoutId;\n    if (!existingLayoutId) {\n      if (drag || !layoutIdKey || __fromCodeComponentNode)\n        return void 0;\n    }\n    const layoutIdCandidate = existingLayoutId || getLayoutId({ id: layoutIdKey, name, duplicatedFrom });\n    if (!layoutIdCandidate)\n      return void 0;\n    return postfix ? `${layoutIdCandidate}-${postfix}` : layoutIdCandidate;\n  }, [enabled]);\n}\n\n// ../../library/src/render/utils/useMeasureLayout.ts\nimport { useContext as useContext4 } from \"react\";\n\n// ../../library/src/useIsomorphicLayoutEffect.ts\nimport { useEffect as useEffect7, useLayoutEffect as useLayoutEffect4 } from \"react\";\nvar useIsomorphicLayoutEffect2 = typeof document !== \"undefined\" ? useLayoutEffect4 : useEffect7;\n\n// ../../library/src/render/presentation/ComponentContainerContext.tsx\nimport React18 from \"react\";\nvar ComponentContainerContext = /* @__PURE__ */ React18.createContext(false);\n\n// ../../library/src/components/hoc/withMeasuredSize.tsx\nimport React20, { useEffect as useEffect8 } from \"react\";\n\n// ../../library/src/modules/useForceUpdate.ts\nimport React19 from \"react\";\nfunction useForceUpdate2() {\n  const [_, setForcedRenderCount] = React19.useState(0);\n  return React19.useCallback(() => setForcedRenderCount((v) => v + 1), []);\n}\n\n// ../../library/src/components/hoc/withMeasuredSize.tsx\nimport { jsx as jsx12 } from \"react/jsx-runtime\";\nvar ResizeObserverPolyfill = /* @__PURE__ */ (() => require_resize_observer_umd().ResizeObserver)();\nvar DEFAULT_SIZE = 200;\nvar SharedObserver = class {\n  constructor() {\n    // Note: we don\u2019t want to use #-style private fields here because (as of esbuild 0.17)\n    // they leave non-tree-shakeable symbols in the bundle: https://framer-team.slack.com/archives/C05V49Q4NJ2/p1715653184830179\n    __publicField(this, \"sharedResizeObserver\");\n    __publicField(this, \"callbacks\", /* @__PURE__ */ new WeakMap());\n    const ResizeObserver = safeWindow.ResizeObserver ?? ResizeObserverPolyfill;\n    this.sharedResizeObserver = new ResizeObserver(this.updateResizedElements.bind(this));\n  }\n  updateResizedElements(entries) {\n    for (const entry of entries) {\n      const callbackForElement = this.callbacks.get(entry.target);\n      if (callbackForElement)\n        callbackForElement(entry.contentRect);\n    }\n  }\n  observeElementWithCallback(element, callback) {\n    this.sharedResizeObserver.observe(element);\n    this.callbacks.set(element, callback);\n  }\n  unobserve(element) {\n    this.sharedResizeObserver.unobserve(element);\n    this.callbacks.delete(element);\n  }\n};\nvar sharedResizeObserver = /* @__PURE__ */ (() => isBrowser2() ? new SharedObserver() : void 0)();\nfunction useRerenderOnResize(ref) {\n  const update = useForceUpdate2();\n  useEffect8(() => {\n    const element = ref == null ? void 0 : ref.current;\n    if (!element)\n      return;\n    sharedResizeObserver == null ? void 0 : sharedResizeObserver.observeElementWithCallback(ref.current, update);\n    return () => {\n      sharedResizeObserver == null ? void 0 : sharedResizeObserver.unobserve(element);\n    };\n  }, [ref, update]);\n}\nfunction useMeasuredSize(ref) {\n  const forceUpdate = useForceUpdate2();\n  const size = React20.useRef(null);\n  function updateSize(newSize) {\n    if (newSize.width === 0 && newSize.height === 0)\n      return;\n    if (!size.current || newSize.height !== size.current.height || newSize.width !== size.current.width) {\n      size.current = { width: newSize.width, height: newSize.height };\n      forceUpdate();\n    }\n  }\n  useIsomorphicLayoutEffect2(() => {\n    if (!ref.current)\n      return;\n    const { offsetWidth, offsetHeight } = ref.current;\n    updateSize({\n      width: offsetWidth,\n      height: offsetHeight\n    });\n    sharedResizeObserver.observeElementWithCallback(ref.current, updateSize);\n    return () => {\n      if (!ref.current)\n        return;\n      sharedResizeObserver.unobserve(ref.current);\n    };\n  }, []);\n  return size.current;\n}\nvar SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE = \"data-framer-size-compatibility-wrapper\";\nvar withMeasuredSize = (Component18) => (props) => {\n  const ref = React20.useRef(null);\n  const size = useMeasuredSize(ref);\n  const dataProps = { [SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE]: true };\n  const shouldRender = Boolean(size);\n  const fallbackWidth = props.width ?? DEFAULT_SIZE;\n  const fallbackHeight = props.height ?? DEFAULT_SIZE;\n  return /* @__PURE__ */ jsx12(\"div\", { style: { width: \"100%\", height: \"100%\", pointerEvents: \"none\" }, ref, ...dataProps, children: shouldRender && /* @__PURE__ */ jsx12(\n    Component18,\n    {\n      ...props,\n      width: (size == null ? void 0 : size.width) ?? fallbackWidth,\n      height: (size == null ? void 0 : size.height) ?? fallbackHeight\n    }\n  ) });\n};\n\n// ../../library/src/render/utils/getMeasurableCodeComponentChildren.ts\nfunction getMeasurableCodeComponentChildren(element) {\n  const childrenCollection = element.firstElementChild && element.firstElementChild.hasAttribute(SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE) ? element.firstElementChild.children : element.children;\n  return [...childrenCollection].filter(isMeasurable).map(unwrapInlinedDisplayContents);\n}\nfunction isMeasurable(element) {\n  if (element instanceof HTMLBaseElement || element instanceof HTMLHeadElement || element instanceof HTMLLinkElement || element instanceof HTMLMetaElement || element instanceof HTMLScriptElement || element instanceof HTMLStyleElement || element instanceof HTMLTitleElement) {\n    return false;\n  }\n  return element instanceof HTMLElement || element instanceof SVGElement;\n}\nfunction unwrapInlinedDisplayContents(element) {\n  if (!(element instanceof HTMLElement))\n    return element;\n  if (element.children.length === 0)\n    return element;\n  if (element.style.display !== \"contents\")\n    return element;\n  const firstMeasurableChild = [...element.children].find(isMeasurable);\n  if (firstMeasurableChild) {\n    return unwrapInlinedDisplayContents(firstMeasurableChild);\n  }\n  return element;\n}\n\n// ../../library/src/render/utils/useMeasureLayout.ts\nfunction useMeasureLayout(props, ref, getChildren = () => [], options = {}) {\n  const { id, visible, _needsMeasure } = props;\n  const { skipHook = false } = options;\n  const inCodeComponent = Boolean(useContext4(ComponentContainerContext));\n  const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n  useIsomorphicLayoutEffect2(() => {\n    if (!onCanvas || inCodeComponent || skipHook) {\n      return;\n    }\n    if (!(ref.current && id && visible && _needsMeasure)) {\n      return;\n    }\n    runtime.queueMeasureRequest(nodeIdFromString(id), ref.current, getChildren(ref.current));\n  });\n}\nfunction measureClosestComponentContainer(element) {\n  const container = element.closest(\"[data-framer-component-container]\");\n  if (!container)\n    return;\n  runtime.queueMeasureRequest(\n    nodeIdFromString(container.id),\n    container,\n    getMeasurableCodeComponentChildren(container)\n  );\n}\n\n// ../../library/src/render/presentation/Layer.tsx\nimport { Component as Component3 } from \"react\";\n\n// ../../library/src/render/utils/setLayerBacked.ts\nvar smallValue = \"0.000001px\";\nvar translateZ = /* @__PURE__ */ (() => ` translateZ(${smallValue})`)();\nvar useTranslateZHack = /* @__PURE__ */ (() => isFramerX() || isSafari() || isTest())();\nfunction forceLayerBackingWithMotionStyle(motionStyle) {\n  motionStyle.willChange = \"transform\";\n  const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n  if (useTranslateZHack && onCanvas) {\n    motionStyle.translateZ = smallValue;\n  }\n}\nfunction forceLayerBackingWithCSSProperties(cssProperties) {\n  cssProperties.willChange = \"transform\";\n  setTranslateZHack(cssProperties, true);\n}\nfunction setTranslateZHack(style, enabled) {\n  const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n  if (!useTranslateZHack || !onCanvas) {\n    return;\n  }\n  const transform2 = isString(style.transform) ? style.transform || \"\" : \"\";\n  if (enabled) {\n    const hasTranslateZ = transform2.includes(translateZ);\n    if (!hasTranslateZ) {\n      style.transform = transform2 + translateZ;\n    }\n  } else {\n    style.transform = transform2.replace(translateZ, \"\");\n  }\n}\n\n// ../../library/src/render/utils/useWebkitFixes.ts\nimport { useEffect as useEffect9, useRef as useRef7 } from \"react\";\nfunction resetSetStyle(element, key7, toValue, microtask = true) {\n  if (!element) {\n    return;\n  }\n  const style = asRecord(element.style);\n  const value = toValue ? toValue : style[key7];\n  const reset = () => {\n    style[key7] = value;\n  };\n  style[key7] = null;\n  if (microtask) {\n    void Promise.resolve().then(reset);\n  } else {\n    setTimeout(reset, 0);\n  }\n}\n\n// ../../library/src/render/presentation/Layer.tsx\nvar Layer = /* @__PURE__ */ (() => {\n  class Layer2 extends Component3 {\n    constructor() {\n      super(...arguments);\n      /** @private (Just using `private` breaks compilation unless using `stripInternal`) */\n      __publicField(this, \"layerElement\", null);\n      __publicField(this, \"setLayerElement\", (element) => {\n        this.layerElement = element;\n      });\n    }\n    static applyWillChange(props, style, usingMotionStyle) {\n      if (props.willChangeTransform) {\n        if (usingMotionStyle) {\n          forceLayerBackingWithMotionStyle(style);\n        } else {\n          forceLayerBackingWithCSSProperties(style);\n        }\n      }\n    }\n    /** @internal */\n    shouldComponentUpdate(nextProps, nextState) {\n      return nextProps._needsMeasure || this.state !== nextState || !isEqual(this.props, nextProps);\n    }\n    /** @internal */\n    componentDidUpdate(prevProps) {\n      if (asRecord(this.props)[\"clip\"] && asRecord(this.props)[\"radius\"] === 0 && asRecord(prevProps)[\"radius\"] !== 0) {\n        resetSetStyle(this.layerElement, \"overflow\", \"hidden\", false);\n      }\n    }\n  }\n  __publicField(Layer2, \"defaultProps\", {});\n  return Layer2;\n})();\n\n// ../../library/src/utils/memoize.ts\nfunction manageCache(cache2, maxEntries) {\n  const size = cache2.size;\n  if (size < maxEntries)\n    return;\n  let i = Math.round(Math.random());\n  for (const key7 of cache2.keys()) {\n    if ((++i & 1) === 1)\n      continue;\n    cache2.delete(key7);\n  }\n}\nfunction memoize2(maxEntries, cache2, key7, create) {\n  const r = cache2.get(key7);\n  if (r)\n    return r;\n  manageCache(cache2, maxEntries);\n  const g = create(key7);\n  cache2.set(key7, g);\n  return g;\n}\n\n// ../../library/src/utils/string.ts\nvar hash = (value) => {\n  let hasher = 0, i, chr;\n  if (value.length === 0)\n    return hasher;\n  for (i = 0; i < value.length; i++) {\n    chr = value.charCodeAt(i);\n    hasher = (hasher << 5) - hasher + chr;\n    hasher |= 0;\n  }\n  return hasher;\n};\n\n// ../../library/src/render/types/Color/ConvertColor.ts\nvar ConvertColor = {\n  hueRotate: (color2, angle) => {\n    return Color.toHslString(Color.hueRotate(Color(color2), angle));\n  },\n  setAlpha: (color2, alpha) => {\n    return Color.toRgbString(Color.alpha(Color(color2), alpha));\n  },\n  getAlpha: (color2) => {\n    const obj = stringToObject(color2);\n    return obj ? obj.a : 1;\n  },\n  multiplyAlpha: (color2, alpha) => {\n    return Color.toRgbString(Color.multiplyAlpha(Color(color2), alpha));\n  },\n  /**\n   * @internal\n   */\n  toHexValue: (color2) => {\n    return Color.toHex(Color(color2)).toUpperCase();\n  },\n  toHex: (color2) => {\n    return Color.toHexString(Color(color2)).toUpperCase();\n  },\n  toRgb: (color2) => {\n    return Color.toRgb(Color(color2));\n  },\n  toRgbString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  toHSV: (color2) => {\n    return Color.toHsv(Color(color2));\n  },\n  toHSL: (color2) => {\n    return Color.toHsl(Color(color2));\n  },\n  toHslString: (color2) => {\n    return Color.toHslString(Color(color2));\n  },\n  toHsvString: (color2) => {\n    return Color.toHsvString(Color(color2));\n  },\n  hsvToHSLString: (hsv) => {\n    return Color.toHslString(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a)));\n  },\n  /**\n   * @internal\n   */\n  hsvToHexValue: (hsv) => {\n    return Color.toHex(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a))).toUpperCase();\n  },\n  hsvToHex: (hsv) => {\n    return Color.toHexString(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a))).toUpperCase();\n  },\n  hsvToRgbString: (hsv) => {\n    return Color.toRgbString(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a)));\n  },\n  hsvToString: (hsv) => {\n    return hsvToStr(hsv.h, hsv.s, hsv.v);\n  },\n  rgbaToString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  /**\n   * @internal\n   */\n  rgbToHexValue: (color2) => {\n    return Color.toHex(Color(color2));\n  },\n  rgbToHexString: (color2) => {\n    return Color.toHexString(Color(color2));\n  },\n  hslToString: (color2) => {\n    return Color.toHslString(Color(color2));\n  },\n  hslToRgbString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  toColorPickerSquare: (h) => {\n    return Color.toRgbString(Color({ h, s: 1, l: 0.5, a: 1 }));\n  },\n  isValid: (color2) => {\n    return Color(color2).isValid !== false;\n  },\n  equals: (a, b) => {\n    if (typeof a === \"string\") {\n      a = Color(a);\n    }\n    if (typeof b === \"string\") {\n      b = Color(b);\n    }\n    return Color.equal(a, b);\n  },\n  toHexOrRgbaString: (input) => {\n    const color2 = Color(input);\n    return color2.a !== 1 ? Color.toRgbString(color2) : Color.toHexString(color2);\n  }\n};\n\n// ../../library/src/render/utils/gradientColorStops.ts\nvar CSSVariableRegExp = /var\\(.+\\)/u;\nvar colorCache = /* @__PURE__ */ new Map();\nfunction cachedMultiplyAlpha(s, a) {\n  const key7 = [s, a];\n  if (CSSVariableRegExp.test(s)) {\n    return s;\n  }\n  return memoize2(1e3, colorCache, key7, () => ConvertColor.multiplyAlpha(s, a));\n}\nfunction gradientColorStops(gradient, alpha = 1) {\n  let stops;\n  if (\"stops\" in gradient) {\n    stops = gradient.stops;\n  } else {\n    stops = [\n      { value: gradient.start, position: 0 },\n      { value: gradient.end, position: 1 }\n    ];\n  }\n  if (alpha === 1) {\n    return stops;\n  } else {\n    return stops.map((stop) => ({ ...stop, value: cachedMultiplyAlpha(stop.value, alpha) }));\n  }\n}\nfunction gradientColorStopsHash(gradient, alpha) {\n  let result = 0;\n  gradientColorStops(gradient, alpha).forEach((stop) => {\n    result ^= hash(stop.value) ^ stop.position;\n  });\n  return result;\n}\n\n// ../../library/src/render/types/MultiStopGradient.ts\nvar multiStopGradientKeys = [\"stops\"];\nfunction isMultiStopGradient(value) {\n  return value && multiStopGradientKeys.every((key7) => key7 in value);\n}\n\n// ../../library/src/render/types/SimpleGradient.ts\nvar simpleGradientKeys = [\"start\", \"end\"];\nfunction isSimpleGradient(value) {\n  return value && simpleGradientKeys.every((key7) => key7 in value);\n}\n\n// ../../library/src/render/types/LinearGradient.ts\nvar linearGradientKeys = [\"angle\", \"alpha\"];\nvar LinearGradient = {\n  /**\n   * @param value -\n   */\n  isLinearGradient: (value) => {\n    return value && linearGradientKeys.every((key7) => key7 in value) && (isSimpleGradient(value) || isMultiStopGradient(value));\n  },\n  /** @internal */\n  hash: (linearGradient) => {\n    return linearGradient.angle ^ gradientColorStopsHash(linearGradient, linearGradient.alpha);\n  },\n  /** @internal */\n  toCSS: (linearGradient, overrideAngle) => {\n    const stops = gradientColorStops(linearGradient, linearGradient.alpha);\n    const angle = overrideAngle !== void 0 ? overrideAngle : linearGradient.angle;\n    const cssStops = stops.map((stop) => `${stop.value} ${stop.position * 100}%`);\n    return `linear-gradient(${angle}deg, ${cssStops.join(\", \")})`;\n  }\n};\n\n// ../../library/src/render/types/RadialGradient.ts\nvar radialGradientKeys = [\n  \"widthFactor\",\n  \"heightFactor\",\n  \"centerAnchorX\",\n  \"centerAnchorY\",\n  \"alpha\"\n];\nvar RadialGradient = {\n  /**\n   * @param value -\n   * @public\n   */\n  isRadialGradient: (value) => {\n    return value && radialGradientKeys.every((key7) => key7 in value) && (isSimpleGradient(value) || isMultiStopGradient(value));\n  },\n  /** @internal */\n  hash: (radialGradient) => {\n    return radialGradient.centerAnchorX ^ radialGradient.centerAnchorY ^ radialGradient.widthFactor ^ radialGradient.heightFactor ^ gradientColorStopsHash(radialGradient, radialGradient.alpha);\n  },\n  /** @internal */\n  toCSS: (radialGradient) => {\n    const { alpha, widthFactor, heightFactor, centerAnchorX, centerAnchorY } = radialGradient;\n    const stops = gradientColorStops(radialGradient, alpha);\n    const cssStops = stops.map((stop, index) => {\n      const nextStop = stops[index + 1];\n      const position = stop.position === 1 && (nextStop == null ? void 0 : nextStop.position) === 1 ? stop.position - 1e-4 : stop.position;\n      return `${stop.value} ${position * 100}%`;\n    });\n    return `radial-gradient(${widthFactor * 100}% ${heightFactor * 100}% at ${centerAnchorX * 100}% ${centerAnchorY * 100}%, ${cssStops.join(\", \")})`;\n  }\n};\n\n// ../../library/src/render/traits/Background.ts\nfunction collectBackgroundFromProps({ background, backgroundColor }, style) {\n  if (backgroundColor) {\n    if (typeof backgroundColor === \"string\" || isMotionValue2(backgroundColor)) {\n      style.backgroundColor = backgroundColor;\n    } else if (Color.isColorObject(background)) {\n      style.backgroundColor = background.initialValue || Color.toRgbString(background);\n    }\n  } else if (background) {\n    background = Animatable.get(background, null);\n    if (typeof background === \"string\" || isMotionValue2(background)) {\n      style.background = background;\n    } else if (LinearGradient.isLinearGradient(background)) {\n      style.background = LinearGradient.toCSS(background);\n    } else if (RadialGradient.isRadialGradient(background)) {\n      style.background = RadialGradient.toCSS(background);\n    } else if (Color.isColorObject(background)) {\n      style.backgroundColor = background.initialValue || Color.toRgbString(background);\n    }\n  }\n}\n\n// ../../library/src/render/utils/extractStyleFromProps.ts\nfunction extractStyleFromProps(props, name, styleRef, into) {\n  if (into === void 0) {\n    into = name;\n  }\n  if (props[name] !== void 0) {\n    ;\n    styleRef[into] = props[name];\n    return;\n  }\n}\n\n// ../../library/src/render/presentation/Frame/getStyleForFrameProps.ts\nfunction hasLeftAndRight(style) {\n  if (!style)\n    return false;\n  return style.left !== void 0 && style.right !== void 0;\n}\nfunction hasTopAndBottom(style) {\n  if (!style)\n    return false;\n  return style.top !== void 0 && style.bottom !== void 0;\n}\nfunction getStyleForFrameProps(props) {\n  if (!props) {\n    return {};\n  }\n  const style = {};\n  if (props.preserve3d === true) {\n    style.transformStyle = \"preserve-3d\";\n  } else if (props.preserve3d === false) {\n    style.transformStyle = \"flat\";\n  }\n  if (props.backfaceVisible === true) {\n    style.backfaceVisibility = \"visible\";\n  } else if (props.backfaceVisible === false) {\n    style.backfaceVisibility = \"hidden\";\n  }\n  if (style.backfaceVisibility) {\n    style.WebkitBackfaceVisibility = style.backfaceVisibility;\n  }\n  if (props.perspective !== void 0) {\n    style.perspective = style.WebkitPerspective = props.perspective;\n  }\n  if (!props.__fromCanvasComponent) {\n    if (props.center === true) {\n      style.left = \"50%\";\n      style.top = \"50%\";\n    } else {\n      if (props.center === \"x\") {\n        style.left = \"50%\";\n      } else if (props.center === \"y\") {\n        style.top = \"50%\";\n      }\n    }\n  }\n  extractStyleFromProps(props, \"size\", style);\n  extractStyleFromProps(props, \"width\", style);\n  extractStyleFromProps(props, \"height\", style);\n  extractStyleFromProps(props, \"minWidth\", style);\n  extractStyleFromProps(props, \"minHeight\", style);\n  extractStyleFromProps(props, \"top\", style);\n  extractStyleFromProps(props, \"right\", style);\n  extractStyleFromProps(props, \"bottom\", style);\n  extractStyleFromProps(props, \"left\", style);\n  extractStyleFromProps(props, \"position\", style);\n  extractStyleFromProps(props, \"overflow\", style);\n  extractStyleFromProps(props, \"opacity\", style);\n  if (!props._border || !props._border.borderWidth)\n    extractStyleFromProps(props, \"border\", style);\n  extractStyleFromProps(props, \"borderRadius\", style);\n  extractStyleFromProps(props, \"radius\", style, \"borderRadius\");\n  extractStyleFromProps(props, \"color\", style);\n  extractStyleFromProps(props, \"shadow\", style, \"boxShadow\");\n  extractStyleFromProps(props, \"x\", style);\n  extractStyleFromProps(props, \"y\", style);\n  extractStyleFromProps(props, \"z\", style);\n  extractStyleFromProps(props, \"rotate\", style);\n  extractStyleFromProps(props, \"rotateX\", style);\n  extractStyleFromProps(props, \"rotateY\", style);\n  extractStyleFromProps(props, \"rotateZ\", style);\n  extractStyleFromProps(props, \"scale\", style);\n  extractStyleFromProps(props, \"scaleX\", style);\n  extractStyleFromProps(props, \"scaleY\", style);\n  extractStyleFromProps(props, \"skew\", style);\n  extractStyleFromProps(props, \"skewX\", style);\n  extractStyleFromProps(props, \"skewY\", style);\n  extractStyleFromProps(props, \"originX\", style);\n  extractStyleFromProps(props, \"originY\", style);\n  extractStyleFromProps(props, \"originZ\", style);\n  collectBackgroundFromProps(props, style);\n  return style;\n}\n\n// ../../library/src/render/presentation/Frame/FrameWithMotion.tsx\nimport { Fragment as Fragment4, jsx as jsx13, jsxs as jsxs3 } from \"react/jsx-runtime\";\nfunction hasEvents(props) {\n  for (const key7 in props) {\n    if (key7 === \"drag\" || key7.startsWith(\"while\") || typeof asRecord(props)[key7] === \"function\" && key7.startsWith(\"on\") && !key7.includes(\"Animation\")) {\n      return true;\n    }\n  }\n  return false;\n}\nvar pointerEvents = [\n  \"onClick\",\n  \"onDoubleClick\",\n  \"onMouse\",\n  \"onMouseDown\",\n  \"onMouseUp\",\n  \"onTapDown\",\n  \"onTap\",\n  \"onTapUp\",\n  \"onPointer\",\n  \"onPointerDown\",\n  \"onPointerUp\",\n  \"onTouch\",\n  \"onTouchDown\",\n  \"onTouchUp\"\n];\nvar pointerEventsSet = /* @__PURE__ */ (() => /* @__PURE__ */ new Set([\n  ...pointerEvents,\n  ...pointerEvents.map((event) => `${event}Capture`)\n  // Add capture event variants\n]))();\nfunction getCursorFromEvents(props) {\n  if (props.drag) {\n    return \"grab\";\n  }\n  for (const key7 in props) {\n    if (pointerEventsSet.has(key7)) {\n      return \"pointer\";\n    }\n  }\n  return void 0;\n}\nvar overflowKey = \"overflow\";\nfunction hasScrollableContent(props) {\n  if (hasScrollingOverflow(props))\n    return true;\n  if (!props.style)\n    return false;\n  if (hasScrollingOverflow(props.style))\n    return true;\n  return false;\n}\nfunction hasScrollingOverflow(props) {\n  if (overflowKey in props && (props[overflowKey] === \"scroll\" || props[overflowKey] === \"auto\"))\n    return true;\n  return false;\n}\nfunction unwrapFrameProps(frameProps) {\n  const {\n    left,\n    top,\n    bottom,\n    right,\n    width,\n    height,\n    center,\n    _constraints,\n    size,\n    widthType,\n    heightType,\n    positionFixed,\n    positionAbsolute\n  } = frameProps;\n  const minWidth = resolveMotionValue(frameProps.minWidth);\n  const minHeight = resolveMotionValue(frameProps.minHeight);\n  const maxWidth = resolveMotionValue(frameProps.maxWidth);\n  const maxHeight = resolveMotionValue(frameProps.maxHeight);\n  const constraintProps = {\n    top: resolveMotionValue(top),\n    left: resolveMotionValue(left),\n    bottom: resolveMotionValue(bottom),\n    right: resolveMotionValue(right),\n    width: resolveMotionValue(width),\n    height: resolveMotionValue(height),\n    size: resolveMotionValue(size),\n    center,\n    _constraints,\n    widthType,\n    heightType,\n    positionFixed,\n    positionAbsolute,\n    minWidth,\n    minHeight,\n    maxWidth,\n    maxHeight\n  };\n  return constraintProps;\n}\nvar defaultFrameRect = { x: 0, y: 0, width: 200, height: 200 };\nfunction useStyleAndRect(props) {\n  React21.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  const inCodeComponent = Boolean(useContext5(ComponentContainerContext));\n  const { style, _initialStyle, __fromCanvasComponent, size } = props;\n  const unwrappedProps = unwrapFrameProps(props);\n  const constraintsRect = useConstraints(unwrappedProps);\n  const defaultStyle = {\n    display: \"block\",\n    flex: (style == null ? void 0 : style.flex) ?? \"0 0 auto\",\n    userSelect: RenderTarget.current() !== RenderTarget.preview ? \"none\" : void 0\n  };\n  if (!props.__fromCanvasComponent) {\n    defaultStyle.backgroundColor = props.background === void 0 ? \"rgba(0, 170, 255, 0.3)\" : void 0;\n  }\n  const shouldDisablePointerEvents = !hasEvents(props) && !props.__fromCanvasComponent && !hasScrollableContent(props);\n  const safeToEditPointerEvents = props.style ? !(\"pointerEvents\" in props.style) : true;\n  if (shouldDisablePointerEvents && safeToEditPointerEvents) {\n    defaultStyle.pointerEvents = \"none\";\n  }\n  const addTextCentering = React21.Children.count(props.children) > 0 && React21.Children.toArray(props.children).every((child) => {\n    return typeof child === \"string\" || typeof child === \"number\";\n  });\n  const centerTextStyle = addTextCentering && {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    textAlign: \"center\"\n  };\n  const propsStyle = getStyleForFrameProps(props);\n  if (size === void 0 && !__fromCanvasComponent) {\n    if (!hasLeftAndRight(propsStyle)) {\n      defaultStyle.width = defaultFrameRect.width;\n    }\n    if (!hasTopAndBottom(propsStyle)) {\n      defaultStyle.height = defaultFrameRect.height;\n    }\n  }\n  if (unwrappedProps.minWidth !== void 0) {\n    defaultStyle.minWidth = unwrappedProps.minWidth;\n  }\n  if (unwrappedProps.minHeight !== void 0) {\n    defaultStyle.minHeight = unwrappedProps.minHeight;\n  }\n  let constraintsStyle = {};\n  if (constraintsEnabled(unwrappedProps)) {\n    if (constraintsRect && !isAutoSized(props)) {\n      constraintsStyle = {\n        left: constraintsRect.x,\n        top: constraintsRect.y,\n        width: constraintsRect.width,\n        height: constraintsRect.height,\n        right: void 0,\n        bottom: void 0\n      };\n    }\n  }\n  Object.assign(defaultStyle, centerTextStyle, _initialStyle, propsStyle, constraintsStyle, style);\n  Object.assign(defaultStyle, {\n    overflowX: defaultStyle.overflowX ?? defaultStyle.overflow,\n    overflowY: defaultStyle.overflowY ?? defaultStyle.overflow,\n    overflow: void 0\n  });\n  Layer.applyWillChange(props, defaultStyle, true);\n  let resultStyle = defaultStyle;\n  if (!defaultStyle.transform) {\n    resultStyle = { x: 0, y: 0, ...defaultStyle };\n  }\n  const isRenderingStaticContent = isStaticRenderer();\n  if (props.positionSticky) {\n    if (!isRenderingStaticContent || inCodeComponent) {\n      resultStyle.position = \"sticky\";\n      resultStyle.willChange = \"transform\";\n      resultStyle.zIndex = 1;\n      resultStyle.top = props.positionStickyTop;\n      resultStyle.right = props.positionStickyRight;\n      resultStyle.bottom = props.positionStickyBottom;\n      resultStyle.left = props.positionStickyLeft;\n    }\n  } else if (isRenderingStaticContent && (props.positionFixed || props.positionAbsolute)) {\n    resultStyle.position = \"absolute\";\n  }\n  if (\"rotate\" in resultStyle && resultStyle.rotate === void 0) {\n    delete resultStyle.rotate;\n  }\n  return [resultStyle, constraintsRect];\n}\nvar filteredProps = /* @__PURE__ */ new Set([\n  \"width\",\n  \"height\",\n  \"opacity\",\n  \"overflow\",\n  \"radius\",\n  \"background\",\n  \"color\",\n  \"x\",\n  \"y\",\n  \"z\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"scale\",\n  \"scaleX\",\n  \"scaleY\",\n  \"skew\",\n  \"skewX\",\n  \"skewY\",\n  \"originX\",\n  \"originY\",\n  \"originZ\"\n]);\nfunction getMotionProps(props) {\n  const motionProps = {};\n  for (const key7 in props) {\n    const isValid = isValidMotionProp(key7) || isPropValid(key7);\n    if (isValid && !filteredProps.has(key7)) {\n      motionProps[key7] = asRecord(props)[key7];\n    } else if (key7 === \"positionTransition\" || key7 === \"layoutTransition\") {\n      motionProps[\"layout\"] = true;\n      if (typeof asRecord(props)[key7] !== \"boolean\" && !props.transition) {\n        motionProps[\"transition\"] = asRecord(props)[key7];\n      }\n    }\n  }\n  return motionProps;\n}\nfunction hasDataFramerName(props) {\n  return \"data-framer-name\" in props;\n}\nvar VisibleFrame = /* @__PURE__ */ forwardRef(function VisibleFrame2(props, forwardedRef) {\n  const { name, center, border, _border, __portal } = props;\n  const { props: propsWithOverrides, children } = processOverrideForwarding(props);\n  const motionProps = getMotionProps(propsWithOverrides);\n  const layoutId = useLayoutId(props);\n  const cursor = getCursorFromEvents(props);\n  const fallbackRef = useRef8(null);\n  const ref = forwardedRef ?? fallbackRef;\n  const dataProps = {\n    \"data-framer-component-type\": props.componentType ?? \"Frame\",\n    \"data-framer-cursor\": cursor,\n    \"data-framer-highlight\": cursor === \"pointer\" ? true : void 0,\n    \"data-layoutid\": layoutId,\n    \"data-framer-offset-parent-id\": asRecord(props)[\"data-framer-offset-parent-id\"]\n  };\n  if (!hasDataFramerName(props) && name) {\n    asRecord(dataProps)[\"data-framer-name\"] = name;\n  }\n  const [currentStyle, rect] = useStyleAndRect(propsWithOverrides);\n  const unwrappedProps = unwrapFrameProps(propsWithOverrides);\n  const autoSized = isAutoSized(unwrappedProps);\n  if (center && !(rect && !autoSized && constraintsEnabled(unwrappedProps))) {\n    if (!motionProps.transformTemplate)\n      motionProps.transformTemplate = transformTemplate(center);\n    Object.assign(dataProps, layoutHintDataPropsForCenter(center));\n  } else if (!motionProps.transformTemplate) {\n    motionProps.transformTemplate = void 0;\n  }\n  useMeasureLayout(props, ref);\n  const backgroundImage = backgroundImageFromProps(props);\n  const inCodeComponent = Boolean(useContext5(ComponentContainerContext));\n  const parentSize = resolveParentSize(propsWithOverrides, unwrappedProps, rect, inCodeComponent);\n  const wrappedContent = useProvideParentSize(\n    /* @__PURE__ */ jsxs3(Fragment4, { children: [\n      backgroundImage ? /* @__PURE__ */ jsx13(\n        BackgroundImageComponent,\n        {\n          alt: props.alt ?? \"\",\n          image: backgroundImage,\n          containerSize: rect ?? void 0,\n          nodeId: props.id && nodeIdFromString(props.id),\n          layoutId\n        }\n      ) : null,\n      children,\n      /* @__PURE__ */ jsx13(Border, { ..._border, border, layoutId })\n    ] }),\n    parentSize\n  );\n  const MotionComponent = htmlElementAsMotionComponent(props.as);\n  const { size, radius, shadow } = currentStyle;\n  if (size !== void 0) {\n    delete currentStyle.size;\n    if (currentStyle.height === void 0) {\n      currentStyle.height = size;\n    }\n    if (currentStyle.width === void 0) {\n      currentStyle.width = size;\n    }\n  }\n  if (radius !== void 0) {\n    delete currentStyle.radius;\n    currentStyle.borderRadius = radius;\n  }\n  if (shadow !== void 0) {\n    delete currentStyle.shadow;\n    currentStyle.boxShadow = shadow;\n  }\n  return /* @__PURE__ */ jsxs3(MotionComponent, { ...dataProps, ...motionProps, layoutId, style: currentStyle, ref, children: [\n    wrappedContent,\n    __portal\n  ] });\n});\nvar FrameWithMotion = /* @__PURE__ */ forwardRef(\n  function FrameWithMotion2(props, ref) {\n    countNodeRender();\n    const { visible = true } = props;\n    if (!visible)\n      return null;\n    return /* @__PURE__ */ jsx13(VisibleFrame, { ...props, ref });\n  }\n);\nfunction resolveParentSize(props, unwrappedProps, rect, inCodeComponent) {\n  if (inCodeComponent) {\n    const parentSize = rect ? { width: rect.width, height: rect.height } : 1 /* Disabled */;\n    return parentSize;\n  }\n  const { _usesDOMRect } = props;\n  const {\n    widthType = 0 /* FixedNumber */,\n    heightType = 0 /* FixedNumber */,\n    width,\n    height\n  } = unwrappedProps;\n  if (rect && !_usesDOMRect) {\n    return rect;\n  }\n  if (widthType === 0 /* FixedNumber */ && heightType === 0 /* FixedNumber */ && typeof width === \"number\" && typeof height === \"number\") {\n    return { width, height };\n  }\n  if (_usesDOMRect || props.positionFixed || props.positionAbsolute) {\n    return 2 /* DisabledForCurrentLevel */;\n  }\n  return 0 /* Unknown */;\n}\n\n// ../../library/src/components/EmptyState.tsx\nimport { jsx as jsx14, jsxs as jsxs4 } from \"react/jsx-runtime\";\nfunction EmptyState({\n  title = \"\",\n  description = \"Click and drag the connector to any frame on the canvas \\u2192\",\n  children,\n  size,\n  hide,\n  insideUserCodeComponent = false,\n  position = \"absolute\"\n}) {\n  const { target } = RenderEnvironment;\n  const childCount = React22.Children.count(children);\n  if (insideUserCodeComponent && childCount === 0) {\n    return /* @__PURE__ */ jsx14(FrameWithMotion, { ...size, \"data-name\": \"placeholder\" });\n  }\n  if (target !== RenderTarget.canvas)\n    return null;\n  if (hide)\n    return null;\n  if (childCount !== 0)\n    return null;\n  return /* @__PURE__ */ jsx14(\n    FrameWithMotion,\n    {\n      className: \"framerInternalUI-canvasPlaceholder\",\n      top: 0,\n      left: 0,\n      bottom: 0,\n      right: 0,\n      style: { position, ...size },\n      children: /* @__PURE__ */ jsx14(\n        \"div\",\n        {\n          style: {\n            display: \"flex\",\n            alignItems: \"center\",\n            lineHeight: \"1.4\",\n            height: \"100%\",\n            width: \"100%\"\n          },\n          children: /* @__PURE__ */ jsxs4(\n            \"div\",\n            {\n              style: {\n                display: \"flex\",\n                alignItems: \"center\",\n                justifyContent: \"center\",\n                flexDirection: \"column\",\n                width: \"100%\",\n                // Use a mask to fade out the right edge of the content as it gets cropped.\n                WebkitMaskImage: `linear-gradient(90deg, black, black calc(100% - 12px * ${scaleFactor}), transparent)`\n              },\n              children: [\n                /* @__PURE__ */ jsx14(Title, { children: title }),\n                /* @__PURE__ */ jsx14(Description, { children: description })\n              ]\n            }\n          )\n        }\n      )\n    },\n    \"empty-state\"\n  );\n}\nvar scaleFactor = \"var(--framerInternalCanvas-canvasPlaceholderContentScaleFactor, 1)\";\nfunction Title({ children }) {\n  return /* @__PURE__ */ jsx14(\n    \"span\",\n    {\n      style: {\n        display: \"flex\",\n        flexDirection: \"column\",\n        textAlign: \"center\",\n        flexGrow: 1,\n        flexShrink: 0,\n        fontWeight: 600,\n        marginBottom: \"5px\"\n      },\n      children\n    }\n  );\n}\nfunction Description({ children }) {\n  return /* @__PURE__ */ jsx14(\n    \"span\",\n    {\n      style: {\n        display: \"flex\",\n        flexDirection: \"column\",\n        textAlign: \"center\",\n        flexGrow: 1,\n        flexShrink: 0,\n        fontWeight: 400,\n        maxWidth: \"200px\"\n      },\n      children\n    }\n  );\n}\n\n// ../../library/src/components/Navigation.tsx\nimport React31, { Component as Component6 } from \"react\";\n\n// ../../library/src/components/AnimateLayout/SharedLayoutRoot.tsx\nimport React23, { Component as Component4 } from \"react\";\nimport { jsx as jsx15 } from \"react/jsx-runtime\";\nvar TREE_ROOT_ID = \"__LAYOUT_TREE_ROOT\";\nvar SharedLayoutContext = /* @__PURE__ */ React23.createContext({\n  schedulePromoteTree: () => {\n  },\n  scheduleProjectionDidUpdate: () => {\n  },\n  initLead: () => {\n  }\n});\nvar SharedLayoutRoot = class extends Component4 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"shouldAnimate\", false);\n    __publicField(this, \"transition\");\n    __publicField(this, \"lead\");\n    __publicField(this, \"follow\");\n    __publicField(this, \"scheduledPromotion\", false);\n    __publicField(this, \"scheduledDidUpdate\", false);\n    __publicField(this, \"scheduleProjectionDidUpdate\", () => {\n      this.scheduledDidUpdate = true;\n    });\n    // schedule a promotion to run later in getSnapshotBeforeUpdate\n    __publicField(this, \"schedulePromoteTree\", (tree, transition, shouldAnimate) => {\n      this.follow = this.lead;\n      this.shouldAnimate = shouldAnimate;\n      this.lead = tree;\n      this.transition = transition;\n      this.scheduledPromotion = true;\n    });\n    __publicField(this, \"initLead\", (tree, shouldAnimate) => {\n      this.follow = this.lead;\n      this.lead = tree;\n      if (this.follow && shouldAnimate) {\n        this.follow.layoutMaybeMutated = true;\n      }\n    });\n    __publicField(this, \"sharedLayoutContext\", {\n      schedulePromoteTree: this.schedulePromoteTree,\n      scheduleProjectionDidUpdate: this.scheduleProjectionDidUpdate,\n      initLead: this.initLead\n    });\n  }\n  // Runs after all descendent SharedLayoutTree finish taking snapshots in\n  // their getSnapshotBeforeUpdate lifecycle method.\n  getSnapshotBeforeUpdate() {\n    var _a;\n    if (!this.scheduledPromotion || !this.lead || !this.follow)\n      return null;\n    const needsReset = !!((_a = this.lead) == null ? void 0 : _a.layoutMaybeMutated) && !this.shouldAnimate;\n    this.lead.projectionNodes.forEach((projectionNode) => {\n      var _a2;\n      projectionNode == null ? void 0 : projectionNode.promote({\n        needsReset,\n        transition: this.shouldAnimate ? this.transition : void 0,\n        preserveFollowOpacity: projectionNode.options.layoutId === TREE_ROOT_ID && !((_a2 = this.follow) == null ? void 0 : _a2.isExiting)\n      });\n    });\n    if (this.shouldAnimate) {\n      this.follow.layoutMaybeMutated = true;\n    } else {\n      this.scheduleProjectionDidUpdate();\n    }\n    this.lead.layoutMaybeMutated = false;\n    this.transition = void 0;\n    this.scheduledPromotion = false;\n    return null;\n  }\n  componentDidUpdate() {\n    var _a, _b;\n    if (!this.lead)\n      return null;\n    if (this.scheduledDidUpdate) {\n      (_b = (_a = this.lead.rootProjectionNode) == null ? void 0 : _a.root) == null ? void 0 : _b.didUpdate();\n      this.scheduledDidUpdate = false;\n    }\n  }\n  render() {\n    return /* @__PURE__ */ jsx15(SharedLayoutContext.Provider, { value: this.sharedLayoutContext, children: this.props.children });\n  }\n};\n\n// ../../library/src/components/MagicMotionCrossfadeRoot.tsx\nimport { jsx as jsx16 } from \"react/jsx-runtime\";\nvar rootStyles = {\n  width: \"100%\",\n  height: \"100%\",\n  backgroundColor: \"none\"\n};\nfunction MagicMotionCrossfadeRoot(props) {\n  return /* @__PURE__ */ jsx16(motion.div, { layoutId: TREE_ROOT_ID, style: rootStyles, children: props.children });\n}\n\n// ../../library/src/components/NavigationContainer.tsx\nimport React30, { useContext as useContext9, useEffect as useEffect11, useRef as useRef11 } from \"react\";\n\n// ../../library/src/modules/useAppearEffect.ts\nimport React24 from \"react\";\n\n// ../../library/src/modules/useSharedIntersectionObserver.ts\nimport { createContext, useContext as useContext6 } from \"react\";\n\n// ../../library/src/components/utils/refHelper.ts\nimport { useMemo as useMemo3, useRef as useRef9 } from \"react\";\nfunction setRef(ref, value) {\n  if (isFunction(ref)) {\n    ref(value);\n  } else if (isMutableRef(ref)) {\n    ref.current = value;\n  }\n}\nfunction isMutableRef(ref) {\n  return isObject(ref) && \"current\" in ref;\n}\nfunction refHasValue(ref) {\n  return isMutableRef(ref) && ref.current !== null;\n}\nfunction useStableRefWithObserver() {\n  const callbacks = useConstant(() => /* @__PURE__ */ new Set());\n  const cleanups = useConstant(() => /* @__PURE__ */ new Map());\n  return useConstant(\n    () => (ref, refCallback) => {\n      return {\n        get current() {\n          return ref.current;\n        },\n        set current(value) {\n          if (refCallback)\n            refCallback(value);\n          ref.current = value;\n          const needsCleanup = value === null;\n          callbacks.forEach((callback) => {\n            if (needsCleanup && cleanups.has(callback))\n              return;\n            const cleanup = callback(value);\n            if (cleanup)\n              cleanups.set(callback, cleanup);\n          });\n          if (needsCleanup) {\n            cleanups.forEach((cleanup) => cleanup());\n            cleanups.clear();\n          }\n        },\n        observe(fn, skipCall = false) {\n          if (callbacks.has(fn))\n            return;\n          callbacks.add(fn);\n          if (!skipCall && ref.current)\n            fn(ref.current);\n        },\n        unobserve(fn) {\n          if (fn)\n            callbacks.delete(fn);\n        },\n        cleanup(fn) {\n          var _a;\n          if (!fn || !cleanups.has(fn))\n            return false;\n          (_a = cleanups.get(fn)) == null ? void 0 : _a();\n          return true;\n        }\n      };\n    }\n  );\n}\nfunction useObserverRef(forwardedRef) {\n  const fallbackRef = useRef9(null);\n  const createStableRefWithObserver = useStableRefWithObserver();\n  return useConstant(() => {\n    if (isMutableRef(forwardedRef))\n      return createStableRefWithObserver(forwardedRef);\n    if (isFunction(forwardedRef))\n      return createStableRefWithObserver(fallbackRef, forwardedRef);\n    return createStableRefWithObserver(fallbackRef);\n  });\n}\nfunction useRefEffect(ref, effect, deps) {\n  var _a;\n  const effectRef = useRef9();\n  const depsChangedRef = useRef9();\n  useMemo3(() => {\n    if (depsChangedRef.current !== void 0)\n      depsChangedRef.current = true;\n  }, deps ?? [{}]);\n  if (!ref)\n    return;\n  const depsChanged = depsChangedRef.current;\n  if (depsChanged) {\n    depsChangedRef.current = false;\n    if (!ref.cleanup(effectRef.current)) {\n      (_a = effectRef.current) == null ? void 0 : _a.call(effectRef, null);\n    }\n    const value = ref.current;\n    if (value)\n      effect == null ? void 0 : effect(value);\n  }\n  if (effectRef.current === effect)\n    return;\n  ref.unobserve(effectRef.current);\n  effectRef.current = effect;\n  ref.observe(effect, depsChanged);\n  if (depsChangedRef.current === void 0)\n    depsChangedRef.current = false;\n}\n\n// ../../library/src/modules/useSharedIntersectionObserver.ts\nvar SharedIntersectionObserver = class {\n  constructor(options) {\n    // Note: we don\u2019t want to use #-style private fields here because (as of esbuild 0.17)\n    // they leave non-tree-shakeable symbols in the bundle: https://framer-team.slack.com/archives/C05V49Q4NJ2/p1715653184830179\n    __publicField(this, \"sharedIntersectionObserver\");\n    __publicField(this, \"callbacks\", /* @__PURE__ */ new WeakMap());\n    this.sharedIntersectionObserver = new IntersectionObserver(\n      this.intersectionObserverCallback.bind(this),\n      options\n    );\n  }\n  intersectionObserverCallback(entries, observer) {\n    for (const entry of entries) {\n      const callbackForElement = this.callbacks.get(entry.target);\n      if (callbackForElement)\n        callbackForElement(entry, observer);\n    }\n  }\n  observeElementWithCallback(element, callback) {\n    if (!this.sharedIntersectionObserver)\n      return;\n    this.sharedIntersectionObserver.observe(element);\n    this.callbacks.set(element, callback);\n  }\n  unobserve(element) {\n    if (!this.sharedIntersectionObserver)\n      return;\n    this.sharedIntersectionObserver.unobserve(element);\n    this.callbacks.delete(element);\n  }\n  get root() {\n    var _a;\n    return (_a = this.sharedIntersectionObserver) == null ? void 0 : _a.root;\n  }\n};\nvar SharedIntersectionObserverContext = /* @__PURE__ */ createContext(/* @__PURE__ */ new Map());\nfunction _useSharedIntersectionObserver(ref, callback, options) {\n  const key7 = useConstant(() => `${options.rootMargin}`);\n  const observers = useContext6(SharedIntersectionObserverContext);\n  const { enabled, root, rootMargin, threshold } = options;\n  useRefEffect(\n    ref,\n    (element) => {\n      if (!enabled)\n        return;\n      if (element === null)\n        return;\n      let observer = observers.get(key7);\n      if (!observer || observer.root !== (root == null ? void 0 : root.current)) {\n        observer = new SharedIntersectionObserver({ root: root == null ? void 0 : root.current, rootMargin, threshold });\n        observers.set(key7, observer);\n      }\n      observer.observeElementWithCallback(element, callback);\n      return () => {\n        observer == null ? void 0 : observer.unobserve(element);\n      };\n    },\n    [enabled, callback, root, rootMargin, threshold]\n  );\n}\nvar useSharedIntersectionObserver = typeof IntersectionObserver === \"undefined\" ? noop : _useSharedIntersectionObserver;\n\n// ../../library/src/modules/useAppearEffect.ts\nvar thresholds = /* @__PURE__ */ new Array(100).fill(void 0).map((_, i) => i * 0.01);\nvar ViewportContext = /* @__PURE__ */ React24.createContext(null);\nfunction useAppearEffect(ref, appearCallback, options) {\n  const internalState = React24.useRef({\n    isInView: false,\n    hasAnimatedOnce: false\n  });\n  const { enabled, animateOnce, threshold, rootMargin = `0px 0px 0px 0px` } = options;\n  const callback = React24.useCallback(\n    (entry) => {\n      const { isInView, hasAnimatedOnce } = internalState.current;\n      const isIntersecting = isIntersectingWithThreshold(entry, (threshold == null ? void 0 : threshold.y) ?? 0);\n      if (isIntersecting && !isInView) {\n        if (animateOnce && hasAnimatedOnce)\n          return;\n        internalState.current.hasAnimatedOnce = true;\n        internalState.current.isInView = true;\n        appearCallback(true);\n        return;\n      }\n      if (!isIntersecting && isInView) {\n        internalState.current.isInView = false;\n        if (animateOnce)\n          return;\n        appearCallback(false);\n        return;\n      }\n    },\n    [animateOnce, threshold == null ? void 0 : threshold.y, appearCallback]\n  );\n  useSharedIntersectionObserver(ref, callback, {\n    threshold: thresholds,\n    rootMargin,\n    enabled: enabled ?? true\n  });\n}\nfunction calculatedIntersection(intersectionRect, boundingClientRect) {\n  if (boundingClientRect.height === 0)\n    return 0;\n  return intersectionRect.height / Math.min(boundingClientRect.height, safeWindow.innerHeight);\n}\nfunction isIntersectingWithThreshold({ boundingClientRect, intersectionRect, isIntersecting }, threshold) {\n  if (boundingClientRect.height === 0)\n    return isIntersecting;\n  return isIntersecting && calculatedIntersection(intersectionRect, boundingClientRect) >= threshold;\n}\n\n// ../../library/src/render/presentation/Frame/index.tsx\nimport { forwardRef as forwardRef2 } from \"react\";\n\n// ../../library/src/components/hoc/WithEvents.tsx\nvar import_hoist_non_react_statics2 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React26 from \"react\";\n\n// ../../library/src/utils/events.ts\nfunction pointForEvent(event, customTarget = null) {\n  let target;\n  if (customTarget instanceof HTMLElement) {\n    target = customTarget;\n  }\n  if (!target && event.target instanceof HTMLElement) {\n    target = event.target;\n  }\n  if (!target) {\n    return { x: event.pageX, y: event.pageY };\n  }\n  if (\"webkitConvertPointFromPageToNode\" in safeWindow) {\n    let webkitPoint = new safeWindow.WebKitPoint(event.pageX, event.pageY);\n    webkitPoint = safeWindow.webkitConvertPointFromPageToNode(target, webkitPoint);\n    return { x: webkitPoint.x, y: webkitPoint.y };\n  }\n  const rect = target.getBoundingClientRect();\n  const width = parseFloat(target.style.width);\n  const height = parseFloat(target.style.height);\n  const scale = {\n    x: width ? width / rect.width : 1,\n    y: height ? height / rect.height : 1\n  };\n  const point = {\n    x: scale.x * (event.pageX - rect.left - target.clientLeft + target.scrollLeft),\n    y: scale.y * (event.pageY - rect.top - target.clientTop + target.scrollTop)\n  };\n  return point;\n}\n\n// ../../library/src/events/FramerEvent.ts\nvar FramerEvent = class {\n  /**\n   * @internal\n   */\n  constructor(originalEvent, session) {\n    this.originalEvent = originalEvent;\n    this.session = session;\n    /**\n     * @internal\n     */\n    __publicField(this, \"time\", Date.now());\n    /**\n     * @internal\n     */\n    __publicField(this, \"loopTime\", MainLoop.time);\n    /**\n     * @internal\n     */\n    __publicField(this, \"point\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"devicePoint\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"target\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"delta\");\n    const customTarget = session && session.startEvent && session.startEvent.target || originalEvent.target;\n    const eventLike = FramerEvent.eventLikeFromOriginalEvent(originalEvent);\n    this.point = pointForEvent(eventLike, customTarget);\n    const deviceTarget = session && session.originElement ? session.originElement : document.body;\n    this.devicePoint = pointForEvent(eventLike, deviceTarget);\n    this.target = originalEvent.target || null;\n    const lastEvent = session && session.lastEvent;\n    if (originalEvent instanceof WheelEvent) {\n      this.delta = { x: originalEvent.deltaX, y: originalEvent.deltaY };\n    } else if (lastEvent && this.devicePoint && lastEvent.devicePoint) {\n      this.delta = Point.subtract(this.devicePoint, lastEvent.devicePoint);\n    } else {\n      this.delta = { x: 0, y: 0 };\n    }\n  }\n  static eventLikeFromOriginalEvent(originalEvent) {\n    if (\"touches\" in originalEvent) {\n      let touches = originalEvent.touches;\n      if (!touches || !touches.length) {\n        if (originalEvent.changedTouches && originalEvent.changedTouches.length) {\n          touches = originalEvent.changedTouches;\n        }\n      }\n      const firstTouch = touches[0];\n      if (!touches || !firstTouch) {\n        return { pageX: 0, pageY: 0, target: null };\n      }\n      const pageX = firstTouch.clientX || firstTouch.screenX || firstTouch.pageX;\n      const pageY = firstTouch.clientY || firstTouch.screenY || firstTouch.pageY;\n      return {\n        pageX,\n        pageY,\n        target: originalEvent.target\n      };\n    }\n    return originalEvent;\n  }\n  /**\n   * @internal\n   */\n  velocity(t) {\n    return this.session ? this.session.velocity(t) : { x: 0, y: 0 };\n  }\n  /**\n   * @internal\n   */\n  get offset() {\n    return this.session ? this.session.offset(this) : { x: 0, y: 0 };\n  }\n  /**\n   * @internal\n   */\n  get isLeftMouseClick() {\n    if (environment.isTouch()) {\n      return void 0;\n    }\n    if (\"button\" in this.originalEvent && \"buttons\" in this.originalEvent && \"ctrlKey\" in this.originalEvent) {\n      return (this.originalEvent.button === 0 || this.originalEvent.buttons === 1) && !this.originalEvent.ctrlKey;\n    }\n    return false;\n  }\n};\n\n// ../../library/src/components/hoc/WithDragging.tsx\nvar import_hoist_non_react_statics = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React25 from \"react\";\n\n// ../../library/src/utils/math.ts\nvar clamp2 = (value, a, b) => {\n  const min = Math.min(a, b);\n  const max = Math.max(a, b);\n  if (value < min) {\n    value = min;\n  }\n  if (value > max) {\n    value = max;\n  }\n  return value;\n};\n\n// ../../library/src/components/hoc/WithDragging.tsx\nimport { jsx as jsx17 } from \"react/jsx-runtime\";\nvar DraggingContext = /* @__PURE__ */ React25.createContext({ dragging: false });\nfunction WithDragging(Component18) {\n  const _WithDraggingHOC = class extends React25.Component {\n    constructor(props, defaultProps) {\n      super(props, defaultProps);\n      __publicField(this, \"state\", {\n        isDragging: false\n      });\n      __publicField(this, \"x\", Animatable(0));\n      __publicField(this, \"y\", Animatable(0));\n      __publicField(this, \"onChangePosition\", (change, transaction) => {\n        if (change.value === change.oldValue) {\n          return;\n        }\n        if (this.props.onMove) {\n          this.props.onMove(this.point, this);\n        }\n      });\n      __publicField(this, \"isMoving\", false);\n      __publicField(this, \"isAnimating\", false);\n      __publicField(this, \"directionLockAxis\", null);\n      __publicField(this, \"layerStartPoint\");\n      __publicField(this, \"correctedLayerStartPoint\");\n      __publicField(this, \"previousPoint\");\n      __publicField(this, \"_constraints\", null);\n      __publicField(this, \"animation\");\n      __publicField(this, \"panStart\", (event) => {\n        if (!this.props.enabled) {\n          return;\n        }\n        this.isMoving = this.isAnimating;\n        this.stopAnimation();\n        this.resetdirectionLock();\n        this.layerStartPoint = this.point;\n        this.correctedLayerStartPoint = this.point;\n        if (this._constraints && this.props.bounce) {\n          this.correctedLayerStartPoint = this.constrainPosition(\n            this.correctedLayerStartPoint,\n            this._constraints,\n            1 / this.props.overdragScale\n          );\n        }\n        this.previousPoint = this.correctedLayerStartPoint;\n        if (!this.state.isDragging) {\n          this.setState({ isDragging: true });\n        }\n        if (this.props.onDragSessionStart) {\n          this.props.onDragSessionStart(event, this);\n        }\n      });\n      __publicField(this, \"pan\", (event) => {\n        const {\n          enabled,\n          speedX,\n          speedY,\n          directionLock,\n          overdragScale,\n          vertical,\n          horizontal,\n          pixelAlign,\n          onDragStart,\n          onDragWillMove,\n          onDragDidMove,\n          onDragSessionMove\n        } = this.props;\n        if (!enabled) {\n          return;\n        }\n        let point = { ...this.previousPoint };\n        point.x += event.delta.x * speedX;\n        point.y += event.delta.y * speedY;\n        this.previousPoint = { ...point };\n        if (this._constraints) {\n          point = this.constrainPosition(point, this._constraints, overdragScale);\n        }\n        if (directionLock) {\n          if (this.directionLockAxis === null) {\n            const offset = event.offset;\n            offset.x = offset.x * speedX;\n            offset.y = offset.y * speedY;\n            this.updatedirectionLock(offset);\n            return;\n          } else {\n            if (this.directionLockAxis === \"y\") {\n              point.x = this.layerStartPoint.x;\n            }\n            if (this.directionLockAxis === \"x\") {\n              point.y = this.layerStartPoint.y;\n            }\n          }\n        }\n        if (!this.state.isDragging) {\n          this.setState({ isDragging: true });\n          this.isMoving = true;\n          if (onDragStart) {\n            onDragStart(event, this);\n          }\n        }\n        if (onDragWillMove) {\n          onDragWillMove(event, this);\n        }\n        if (pixelAlign) {\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n        }\n        if (!horizontal && !vertical) {\n          return;\n        }\n        let axis = null;\n        if (horizontal && !vertical) {\n          axis = \"x\";\n        } else if (vertical && !horizontal) {\n          axis = \"y\";\n        }\n        this.setPoint(point, axis);\n        if (onDragDidMove) {\n          onDragDidMove(event, this);\n        }\n        if (onDragSessionMove) {\n          onDragSessionMove(event, this);\n        }\n      });\n      __publicField(this, \"panEnd\", (event) => {\n        if (!this.props.enabled) {\n          return;\n        }\n        this.startAnimation(event);\n        const { onDragSessionEnd, onDragEnd } = this.props;\n        if (this.state.isDragging) {\n          if (onDragEnd) {\n            onDragEnd(event, this);\n          }\n        }\n        if (onDragSessionEnd) {\n          onDragSessionEnd(event, this);\n        }\n        if (this.state.isDragging) {\n          this.setState({ isDragging: false });\n        }\n        this.isMoving = this.isAnimating;\n      });\n      // Mouse Wheel\n      __publicField(this, \"mouseWheelStart\", (event) => {\n        this.correctedLayerStartPoint = this.point;\n        this.previousPoint = this.correctedLayerStartPoint;\n        this.stopAnimation();\n      });\n      __publicField(this, \"mouseWheel\", (event) => {\n        const {\n          enabled,\n          speedX,\n          speedY,\n          vertical,\n          horizontal,\n          pixelAlign,\n          onDragWillMove,\n          onDragDidMove,\n          mouseWheel\n        } = this.props;\n        if (!mouseWheel || !enabled) {\n          return;\n        }\n        let point = { ...this.point };\n        point.x -= event.delta.x * speedX;\n        point.y -= event.delta.y * speedY;\n        if (this._constraints) {\n          point = this.constrainPosition(point, this._constraints, 0, false);\n        }\n        if (onDragWillMove) {\n          onDragWillMove(event, this);\n        }\n        if (pixelAlign) {\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n        }\n        if (!horizontal && !vertical) {\n          return;\n        }\n        let axis = null;\n        if (horizontal && !vertical) {\n          axis = \"x\";\n        } else if (vertical && !horizontal) {\n          axis = \"y\";\n        }\n        this.setPoint(point, axis);\n        if (onDragDidMove) {\n          onDragDidMove(event, this);\n        }\n      });\n      __publicField(this, \"mouseWheelEnd\", (event) => {\n      });\n      __publicField(this, \"onAnimationStep\", (axis, value) => {\n        if (axis === \"x\" && this.props.horizontal === false) {\n          return;\n        }\n        if (axis === \"y\" && this.props.vertical === false) {\n          return;\n        }\n        let delta = 0;\n        if (this.constraints) {\n          if (this.props.bounce) {\n            delta = value - this.getValue(axis);\n          } else {\n            const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n            if (axis === \"x\") {\n              delta = clamp2(value, minX, maxX) - this.getValue(axis);\n            }\n            if (axis === \"y\") {\n              delta = clamp2(value, minY, maxY) - this.getValue(axis);\n            }\n          }\n        } else {\n          delta = value - this.getValue(axis);\n        }\n        const updatePoint = this.point;\n        if (axis === \"x\") {\n          updatePoint[axis] = updatePoint[axis] + delta;\n        }\n        if (axis === \"y\") {\n          updatePoint[axis] = updatePoint[axis] + delta;\n        }\n        this.setPoint(updatePoint, axis);\n      });\n      __publicField(this, \"onAnimationStop\", (axis) => {\n        if (axis === \"x\" && this.props.horizontal === false) {\n          return;\n        }\n        if (axis === \"y\" && this.props.vertical === false) {\n          return;\n        }\n        if (!this.animation) {\n          return;\n        }\n        if (this.props.pixelAlign) {\n          const point = this.point;\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n          this.setPoint(point, axis);\n        }\n        if (this.animation.x.isFinished() && this.animation.y.isFinished()) {\n          return this.stopAnimation();\n        }\n      });\n      __publicField(this, \"stopAnimation\", () => {\n        this.isAnimating = false;\n        this.isMoving = false;\n        if (!this.animation) {\n          return;\n        }\n        this.animation.x.cancel();\n        this.animation.y.cancel();\n        if (this.props.onDragAnimationEnd) {\n          this.props.onDragAnimationEnd(this.animation, this);\n        }\n        this.animation = null;\n      });\n      const x = this.props.left;\n      const y = this.props.top;\n      if (!x) {\n        this.x = Animatable(0);\n      } else if (isAnimatable(x)) {\n        this.x = x;\n      } else {\n        this.x = Animatable(x);\n      }\n      if (!y) {\n        this.y = Animatable(0);\n      } else if (isAnimatable(y)) {\n        this.y = y;\n      } else {\n        this.y = Animatable(y);\n      }\n      this.x.onUpdate(this.onChangePosition);\n      this.y.onUpdate(this.onChangePosition);\n      const constraints = this.props.constraints;\n      if (constraints) {\n        this.constraints = constraints;\n      }\n    }\n    UNSAFE_componentWillReceiveProps(props) {\n      if (this.props.left !== props.left && isFiniteNumber(props.left)) {\n        this.x.set(props.left);\n      }\n      if (this.props.top !== props.top && isFiniteNumber(props.top)) {\n        this.y.set(props.top);\n      }\n      const constraints = props.constraints;\n      if (constraints) {\n        this.constraints = constraints;\n      }\n    }\n    get point() {\n      return { x: this.x.get(), y: this.y.get() };\n    }\n    setPoint(point, axis = null) {\n      switch (axis) {\n        case \"x\":\n          this.x.set(point.x);\n          break;\n        case \"y\":\n          this.y.set(point.y);\n          break;\n        case null:\n          this.x.set(point.x);\n          this.y.set(point.y);\n          break;\n      }\n    }\n    getValue(axis) {\n      switch (axis) {\n        case \"x\":\n          return this.x.get();\n        case \"y\":\n          return this.y.get();\n      }\n    }\n    get width() {\n      const width = this.props.width;\n      if (!width) {\n        return 100;\n      }\n      if (isAnimatable(width)) {\n        return width.get();\n      }\n      if (typeof width === \"string\") {\n        return parseFloat(width);\n      }\n      return width;\n    }\n    get height() {\n      const height = this.props.height;\n      if (!height) {\n        return 100;\n      }\n      if (isAnimatable(height)) {\n        return height.get();\n      }\n      if (typeof height === \"string\") {\n        return parseFloat(height);\n      }\n      return height;\n    }\n    get constraints() {\n      return this._constraints;\n    }\n    set constraints(value) {\n      if (value !== null && typeof value === \"object\") {\n        this._constraints = {\n          x: value.x || 0,\n          y: value.y || 0,\n          width: value.width || 0,\n          height: value.height || 0\n        };\n      } else {\n        this._constraints = null;\n      }\n      if (this._constraints) {\n        this.updateAnimationConstraints(this._constraints);\n      }\n    }\n    get constraintsOffset() {\n      if (!this.constraints) {\n        return { x: 0, y: 0 };\n      }\n      const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n      const point = this.point;\n      const constrainedPoint = { x: clamp2(point.x, minX, maxX), y: clamp2(point.y, minY, maxY) };\n      const offset = { x: point.x - constrainedPoint.x, y: point.y - constrainedPoint.y };\n      return offset;\n    }\n    get isBeyondConstraints() {\n      const constraintsOffset = this.constraintsOffset;\n      if (constraintsOffset.x !== 0) {\n        return true;\n      }\n      if (constraintsOffset.y !== 0) {\n        return true;\n      }\n      return false;\n    }\n    clampAndScale(value, min, max, scale, scaleAllowed) {\n      if (!scaleAllowed) {\n        return clamp2(value, min, max);\n      }\n      if (value < min) {\n        value = min + (value - min) * scale;\n      }\n      if (value > max) {\n        value = max + (value - max) * scale;\n      }\n      return value;\n    }\n    calculateConstraints(bounds) {\n      if (!bounds) {\n        return { minX: Infinity, maxX: Infinity, minY: Infinity, maxY: Infinity };\n      }\n      if (bounds.width < this.width) {\n        bounds.width = this.width;\n      }\n      if (bounds.height < this.height) {\n        bounds.height = this.height;\n      }\n      const constraints = {\n        minX: Rect.minX(bounds),\n        maxX: Rect.maxX(bounds),\n        minY: Rect.minY(bounds),\n        maxY: Rect.maxY(bounds)\n      };\n      constraints.maxX -= this.width;\n      constraints.maxY -= this.height;\n      return constraints;\n    }\n    constrainPosition(proposedPoint, bounds, scale, overdrag = this.props.overdrag) {\n      const { maxX, maxY, minX, minY } = this.calculateConstraints(this._constraints);\n      const point = {\n        x: this.clampAndScale(proposedPoint.x, minX, maxX, scale, overdrag),\n        y: this.clampAndScale(proposedPoint.y, minY, maxY, scale, overdrag)\n      };\n      if (this.props.speedX === 0 || this.props.horizontal === false) {\n        point.x = proposedPoint.x;\n      }\n      if (this.props.speedY === 0 || this.props.vertical === false) {\n        point.y = proposedPoint.y;\n      }\n      return point;\n    }\n    /* private */\n    updatedirectionLock(correctedDelta) {\n      if (Math.abs(correctedDelta.y) > this.props.directionLockThreshold.y) {\n        this.directionLockAxis = \"y\";\n      } else if (Math.abs(correctedDelta.x) > this.props.directionLockThreshold.x) {\n        this.directionLockAxis = \"x\";\n      }\n      if (this.directionLockAxis !== null) {\n        if (this.props.onDragDirectionLockStart) {\n          this.props.onDragDirectionLockStart(this.directionLockAxis, this);\n        }\n      }\n    }\n    resetdirectionLock() {\n      this.directionLockAxis = null;\n    }\n    // Inertial scroll animation\n    setupAnimation() {\n      if (this.animation) {\n        return;\n      }\n      this.animation = { x: this.setupAnimationForAxis(\"x\"), y: this.setupAnimationForAxis(\"y\") };\n      this.updateAnimationConstraints(this._constraints);\n    }\n    setupAnimationForAxis(axis) {\n      const animator = new InertialScrollAnimator({\n        momentum: this.props.momentumOptions,\n        bounce: this.props.bounceOptions\n      });\n      const updateCallback = (value) => {\n        this.onAnimationStep(axis, value);\n      };\n      const doneCallback = () => {\n        this.onAnimationStop(axis);\n      };\n      return new MainLoopAnimationDriver(animator, updateCallback, doneCallback);\n    }\n    updateAnimationConstraints(constraints) {\n      if (!this.animation) {\n        return;\n      }\n      if (constraints) {\n        const { minX, minY, maxX, maxY } = this.calculateConstraints(constraints);\n        this.animation.x.animator.setLimits(minX, maxX);\n        this.animation.y.animator.setLimits(minY, maxY);\n      } else {\n        this.animation.x.animator.setLimits(-Infinity, Infinity);\n        this.animation.y.animator.setLimits(-Infinity, Infinity);\n      }\n    }\n    startAnimation(event) {\n      const { momentum, bounce, momentumVelocityMultiplier, speedX, speedY, overdrag, onDragAnimationStart } = this.props;\n      if (!(momentum || bounce)) {\n        return;\n      }\n      if (this.isBeyondConstraints === false && momentum === false) {\n        return;\n      }\n      if (this.isBeyondConstraints === false && this.state.isDragging === false) {\n        return;\n      }\n      const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n      const startAnimationX = overdrag === true || this.point.x > minX && this.point.x < maxX;\n      const startAnimationY = overdrag === true || this.point.y > minY && this.point.y < maxY;\n      if (startAnimationX === startAnimationY && startAnimationY === false) {\n        return;\n      }\n      const velocity = event.velocity(0.1);\n      let velocityX = velocity.x * momentumVelocityMultiplier * speedX;\n      let velocityY = velocity.y * momentumVelocityMultiplier * speedY;\n      if (this.directionLockAxis === \"x\") {\n        velocityY = 0;\n      }\n      if (this.directionLockAxis === \"y\") {\n        velocityX = 0;\n      }\n      this.setupAnimation();\n      this.isAnimating = true;\n      this.isMoving = true;\n      if (!this.animation) {\n        return;\n      }\n      this.animation.x.animator.setState({ x: this.point.x, v: velocityX });\n      if (startAnimationX) {\n        this.animation.x.play();\n      }\n      this.animation.y.animator.setState({ x: this.point.y, v: velocityY });\n      if (startAnimationY) {\n        this.animation.y.play();\n      }\n      if (onDragAnimationStart) {\n        onDragAnimationStart(this.animation, this);\n      }\n    }\n    wrapHandler(ownHandler, originalHandler) {\n      if (!originalHandler) {\n        return ownHandler;\n      }\n      return (event) => {\n        ownHandler(event);\n        originalHandler(event);\n      };\n    }\n    render() {\n      const { onPanStart, onPan, onPanEnd, onMouseWheelStart, onMouseWheel, onMouseWheelEnd, ...attributes } = this.props;\n      const originalProps = { ...attributes };\n      Object.keys(_WithDraggingHOC.draggingDefaultProps).forEach((key7) => {\n        delete asRecord(originalProps)[key7];\n      });\n      originalProps.onPanStart = this.wrapHandler(this.panStart, onPanStart);\n      originalProps.onPan = this.wrapHandler(this.pan, onPan);\n      originalProps.onPanEnd = this.wrapHandler(this.panEnd, onPanEnd);\n      originalProps.onMouseWheelStart = this.wrapHandler(this.mouseWheelStart, onMouseWheelStart);\n      originalProps.onMouseWheel = this.wrapHandler(this.mouseWheel, onMouseWheel);\n      originalProps.onMouseWheelEnd = this.wrapHandler(this.mouseWheelEnd, onMouseWheelEnd);\n      originalProps.left = this.x;\n      originalProps.top = this.y;\n      return /* @__PURE__ */ jsx17(DraggingContext.Provider, { value: { dragging: this.state.isDragging }, children: /* @__PURE__ */ jsx17(Component18, { ...originalProps }) });\n    }\n  };\n  let WithDraggingHOC = _WithDraggingHOC;\n  __publicField(WithDraggingHOC, \"draggingDefaultProps\", {\n    momentum: true,\n    momentumOptions: { friction: 2.1, tolerance: 1 },\n    momentumVelocityMultiplier: 800,\n    speedX: 1,\n    speedY: 1,\n    bounce: true,\n    bounceOptions: { friction: 40, tension: 200, tolerance: 1 },\n    directionLock: false,\n    directionLockThreshold: { x: 10, y: 10 },\n    overdrag: true,\n    overdragScale: 0.5,\n    pixelAlign: true,\n    velocityTimeout: 100,\n    velocityScale: 890,\n    horizontal: true,\n    vertical: true,\n    enabled: true,\n    constraints: {},\n    mouseWheel: false\n  });\n  __publicField(WithDraggingHOC, \"defaultProps\", Object.assign(\n    {},\n    Component18.defaultProps,\n    _WithDraggingHOC.draggingDefaultProps\n  ));\n  const withDragging = WithDraggingHOC;\n  (0, import_hoist_non_react_statics.default)(withDragging, Component18);\n  return withDragging;\n}\n\n// ../../library/src/components/hoc/WithEvents.tsx\nimport { jsx as jsx18 } from \"react/jsx-runtime\";\nvar hoverProps = {\n  onMouseEnter: \"mouseenter\",\n  onMouseLeave: \"mouseleave\"\n};\nvar hoverEventKeys = /* @__PURE__ */ Object.keys(hoverProps);\nvar eventHandlerMapping = {\n  panstart: [\"onPanStart\"],\n  pan: [\"onPan\"],\n  panend: [\"onPanEnd\"],\n  tapstart: [\"onTapStart\", \"onMouseDown\"],\n  tap: [\"onTap\", \"onClick\"],\n  tapend: [\"onTapEnd\", \"onMouseUp\"],\n  mousewheelstart: [\"onMouseWheelStart\"],\n  mousewheel: [\"onMouseWheel\"],\n  mousewheelend: [\"onMouseWheelEnd\"]\n};\nvar tapEventKeys = /* @__PURE__ */ new Set([\"tapstart\", \"tap\", \"tapend\"]);\nfunction WithEvents(BaseComponent) {\n  var _a;\n  const withEvents = (_a = class extends React26.Component {\n    constructor() {\n      super(...arguments);\n      // This local variable is used to track if we should ignore a tap after a drag\n      // It's not in a state because we want to change it from the render function (so not cause a render)\n      __publicField(this, \"shouldCancelTap\", false);\n      __publicField(this, \"activeEventListeners\", /* @__PURE__ */ new Map());\n      __publicField(this, \"hasFramerEventListener\", false);\n      __publicField(this, \"component\", React26.createRef());\n    }\n    get element() {\n      return this.component.current && this.component.current.element;\n    }\n    componentDidMount() {\n      this.addEventListeners();\n    }\n    componentDidUpdate(prevProps) {\n      this.addEventListeners(prevProps);\n    }\n    componentWillUnmount() {\n      this.removeEventListeners();\n    }\n    addEventListeners(prevProps) {\n      if (this.element && !this.hasFramerEventListener) {\n        this.element.addEventListener(\"FramerEvent\", ({ detail }) => {\n          const type = detail.type;\n          const framerEvent = detail.event;\n          this.handleEvent(type, framerEvent);\n        });\n        hoverEventKeys.forEach((eventName) => this.addHoverEvent(eventName));\n        this.hasFramerEventListener = true;\n      } else if (this.element && prevProps) {\n        hoverEventKeys.forEach((eventName) => this.checkHoverEvent(eventName, prevProps));\n      } else if (!this.element) {\n        this.hasFramerEventListener = false;\n      }\n    }\n    removeEventListeners() {\n      hoverEventKeys.forEach((eventName) => this.removeHoverEvent(eventName));\n    }\n    addHoverEvent(eventName) {\n      const originalEventListener = this.props[eventName];\n      if (this.element && originalEventListener) {\n        const eventListener = (e) => {\n          const framerEvent = new FramerEvent(e);\n          originalEventListener(framerEvent);\n        };\n        this.activeEventListeners.set(eventName, eventListener);\n        const domEventName = hoverProps[eventName];\n        this.element.addEventListener(domEventName, eventListener);\n      }\n    }\n    removeHoverEvent(eventName) {\n      const eventListener = this.activeEventListeners.get(eventName);\n      if (this.element && eventListener) {\n        const domEventName = hoverProps[eventName];\n        this.element.removeEventListener(domEventName, eventListener);\n        this.activeEventListeners.delete(eventName);\n      }\n    }\n    checkHoverEvent(eventName, prevProps) {\n      if (prevProps[eventName] !== this.props[eventName]) {\n        this.removeHoverEvent(eventName);\n        this.addHoverEvent(eventName);\n      }\n    }\n    handleEvent(type, framerEvent) {\n      const eventListenerKeys = eventHandlerMapping[type];\n      if (!eventListenerKeys)\n        return;\n      eventListenerKeys.forEach((eventKey) => {\n        const eventListener = this.props[eventKey];\n        const cancelEvent = this.shouldCancelTap && tapEventKeys.has(eventKey);\n        if (eventListener && !cancelEvent) {\n          eventListener(framerEvent);\n        }\n      });\n    }\n    render() {\n      return /* @__PURE__ */ jsx18(DraggingContext.Consumer, { children: (value) => {\n        this.shouldCancelTap = value.dragging;\n        return /* @__PURE__ */ jsx18(BaseComponent, { ...this.props, ref: this.component });\n      } });\n    }\n  }, __publicField(_a, \"defaultProps\", Object.assign({}, BaseComponent.defaultProps)), _a);\n  (0, import_hoist_non_react_statics2.default)(withEvents, BaseComponent);\n  return withEvents;\n}\n\n// ../../library/src/render/presentation/Frame/DeprecatedFrame.tsx\nimport React27 from \"react\";\n\n// ../../library/src/data/ObservableObject.ts\nvar hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nvar $private = /* @__PURE__ */ Symbol(\"private\");\nvar ObservableObject = /* @__PURE__ */ (() => {\n  function ObservableObject2(initial = {}, makeAnimatables = false, observeAnimatables = true) {\n    const unproxiedState = {\n      [$private]: {\n        makeAnimatables,\n        observeAnimatables,\n        observers: new Observers(),\n        reset() {\n          for (const key7 in state) {\n            if (hasOwnProperty(state, key7)) {\n              const value = hasOwnProperty(initial, key7) ? asRecord(initial)[key7] : void 0;\n              if (value !== void 0) {\n                state[key7] = value;\n              } else {\n                delete state[key7];\n              }\n            }\n          }\n        },\n        transactions: /* @__PURE__ */ new Set()\n      }\n    };\n    const state = new Proxy(unproxiedState, sharedProxyHandler);\n    Object.assign(state, initial);\n    return state;\n  }\n  ObservableObject2.resetObject = (target) => {\n    return target[$private].reset();\n  };\n  ObservableObject2.addObserver = (target, observer) => {\n    return target[$private].observers.add(observer);\n  };\n  return ObservableObject2;\n})();\nvar ObservableObjectProxyHandler = class {\n  constructor() {\n    __publicField(this, \"set\", (target, key7, value, receiver) => {\n      if (key7 === $private) {\n        return false;\n      }\n      const privateObject = target[$private];\n      let animatable;\n      let rawValue;\n      if (isAnimatable(value)) {\n        animatable = value;\n        rawValue = animatable.get();\n      } else {\n        rawValue = value;\n      }\n      if (privateObject.makeAnimatables && typeof value !== \"function\" && typeof value !== \"object\" && !animatable) {\n        animatable = Animatable(value);\n      }\n      if (privateObject.observeAnimatables && animatable) {\n        const transactions = privateObject.transactions;\n        animatable.onUpdate({\n          update: (change, transaction) => {\n            if (transaction) {\n              transactions.add(transaction);\n            }\n            privateObject.observers.notify({ value: receiver }, transaction);\n          },\n          finish: (transaction) => {\n            if (transactions.delete(transaction)) {\n              privateObject.observers.finishTransaction(transaction);\n            }\n          }\n        });\n      }\n      let result = false;\n      let changed = true;\n      const targetValue = asRecord(target)[key7];\n      if (targetValue !== void 0) {\n        if (isAnimatable(targetValue)) {\n          changed = targetValue.get() !== rawValue;\n          targetValue.set(rawValue);\n        } else {\n          changed = targetValue !== rawValue;\n          asRecord(target)[key7] = rawValue;\n        }\n        const rawValueIsObject = rawValue !== null && typeof rawValue === \"object\";\n        if (Array.isArray(rawValue) || rawValueIsObject)\n          changed = true;\n        result = true;\n      } else {\n        if (animatable) {\n          value = animatable;\n        }\n        result = Reflect.set(target, key7, value);\n      }\n      if (changed) {\n        privateObject.observers.notify({ value: receiver });\n      }\n      return result;\n    });\n    __publicField(this, \"get\", (target, key7, receiver) => {\n      if (key7 === $private) {\n        return asRecord(target)[key7];\n      }\n      const value = Reflect.get(target, key7, receiver);\n      return typeof value === \"function\" ? value.bind(receiver) : value;\n    });\n  }\n  deleteProperty(target, key7) {\n    const result = Reflect.deleteProperty(target, key7);\n    target[$private].observers.notify({ value: target });\n    return result;\n  }\n  ownKeys(target) {\n    const keys3 = Reflect.ownKeys(target);\n    const privateIndex = keys3.indexOf($private);\n    if (privateIndex !== -1) {\n      keys3.splice(privateIndex, 1);\n    }\n    return keys3;\n  }\n  getOwnPropertyDescriptor(target, key7) {\n    if (key7 === $private) {\n      return void 0;\n    }\n    return Reflect.getOwnPropertyDescriptor(target, key7);\n  }\n};\nvar sharedProxyHandler = /* @__PURE__ */ new ObservableObjectProxyHandler();\n\n// ../../library/src/render/traits/Blending.ts\nfunction collectBlendingFromProps(node, style) {\n  if (!node.blendingMode || node.blendingMode === \"normal\")\n    return;\n  style.mixBlendMode = node.blendingMode;\n}\n\n// ../../library/src/render/traits/Opacity.ts\nvar key2 = \"opacity\";\nfunction withOpacity(target) {\n  return key2 in target;\n}\nfunction collectOpacityFromProps(props, style) {\n  if (!withOpacity(props))\n    return;\n  const opacity = Animatable.getNumber(props.opacity);\n  if (opacity === 1)\n    return;\n  style.opacity = opacity;\n}\n\n// ../../library/src/render/traits/Overflow.ts\nfunction collectOverflowFromProps(props, style) {\n  if (props.overflow) {\n    style.overflow = props.overflow;\n  }\n}\n\n// ../../library/src/render/traits/Radius.ts\nvar key3 = \"radius\";\nfunction hasRadius(props) {\n  return key3 in props;\n}\nfunction getRadiusValue(value) {\n  let num = Number(value);\n  if (typeof value === \"string\" && Number.isNaN(Number(num))) {\n    return value;\n  } else if (isAnimatable(value)) {\n    num = Animatable.getNumber(value);\n  }\n  return num ? `${num}px` : \"0\";\n}\nfunction hasRadiusValue(value) {\n  return value && value !== \"0\";\n}\nfunction collectRadiusFromProps(props, style) {\n  if (!hasRadius(props))\n    return;\n  const { radius } = props;\n  if (typeof radius === \"string\" || isAnimatable(radius) || isFiniteNumber(radius)) {\n    const radiusValue = getRadiusValue(radius);\n    if (hasRadiusValue(radiusValue)) {\n      style.borderTopLeftRadius = style.borderTopRightRadius = style.borderBottomRightRadius = style.borderBottomLeftRadius = radiusValue;\n    }\n  } else if (radius) {\n    const topLeft = getRadiusValue(radius.topLeft);\n    const topRight = getRadiusValue(radius.topRight);\n    const bottomRight = getRadiusValue(radius.bottomRight);\n    const bottomLeft = getRadiusValue(radius.bottomLeft);\n    if (hasRadiusValue(topLeft) || hasRadiusValue(topRight) || hasRadiusValue(bottomRight) || hasRadiusValue(bottomLeft)) {\n      style.borderTopLeftRadius = topLeft;\n      style.borderTopRightRadius = topRight;\n      style.borderBottomRightRadius = bottomRight;\n      style.borderBottomLeftRadius = bottomLeft;\n    }\n  }\n}\n\n// ../../library/src/render/traits/TextColor.ts\nfunction collectTextColorFromProps(props, style) {\n  const { color: color2 } = props;\n  if (typeof color2 === \"string\") {\n    style.color = color2;\n  } else if (Color.isColorObject(color2)) {\n    style.color = color2.initialValue || Color.toRgbString(color2);\n  }\n}\n\n// ../../library/src/render/types/Shadow.ts\nvar shadowKeys = [\"color\", \"x\", \"y\", \"blur\"];\nvar Shadow = {\n  is: (shadow) => {\n    return shadow && shadowKeys.every((key7) => key7 in shadow);\n  }\n};\nvar boxShadowKeys = [\"x\", \"y\", \"color\", \"inset\", \"blur\", \"spread\"];\nvar BoxShadow = {\n  is: (shadow) => {\n    return shadow && boxShadowKeys.every((key7) => key7 in shadow);\n  },\n  toCSS: (shadow) => {\n    const inset2 = shadow.inset ? \"inset \" : \"\";\n    return `${inset2}${shadow.x}px ${shadow.y}px ${shadow.blur}px ${shadow.spread}px ${shadow.color}`;\n  }\n};\n\n// ../../library/src/render/style/shadow.tsx\nimport { Fragment as Fragment5, jsx as jsx19, jsxs as jsxs5 } from \"react/jsx-runtime\";\nfunction shadowsAsFilter(shadows) {\n  const filters = [];\n  if (shadows && shadows.length) {\n    const dropShadows = shadows.map((shadowItem) => {\n      return `drop-shadow(${shadowItem.x}px ${shadowItem.y}px ${shadowItem.blur}px ${shadowItem.color})`;\n    });\n    filters.push(...dropShadows);\n  }\n  return filters;\n}\nfunction collectTextShadowsForProps(props, style) {\n  if (!props.shadows || props.shadows.length === 0)\n    return;\n  const textShadow = props.shadows.map((shadow) => {\n    return `${shadow.x}px ${shadow.y}px ${shadow.blur}px ${shadow.color}`;\n  }).join(\", \");\n  if (!textShadow)\n    return;\n  style.textShadow = textShadow;\n}\nfunction collectBoxShadowsForProps(props, style) {\n  if (!props.shadows || props.shadows.length === 0)\n    return;\n  const boxShadow = props.shadows.map((shadowItem) => BoxShadow.toCSS(shadowItem)).join(\", \");\n  if (!boxShadow)\n    return;\n  style.boxShadow = boxShadow;\n}\nfunction shadowForShape(boxShadows, rect, shapeId, fillAlpha, strokeAlpha, strokeWidth, strokeClipId, svgStrokeAttributes) {\n  const definition = [];\n  let outsetElement = null;\n  let insetElement = null;\n  let maskElement = null;\n  const needsStrokeClip = false;\n  const shadows = [];\n  const insetShadows = [];\n  const svgShadowClass = \"svg-shadow\";\n  const svgShadowProps = RenderTarget.current() === RenderTarget.canvas ? { className: svgShadowClass } : {};\n  for (const shadow of boxShadows) {\n    shadow.inset ? insetShadows.push(shadow) : shadows.push(shadow);\n  }\n  if (shadows.length > 0) {\n    shadows.reverse();\n    const outsideShadowId = shapeId.add(\"_shadow_out\");\n    const normalizedFrame = Rect.atOrigin(rect);\n    const shadowRects = [normalizedFrame];\n    for (const shadow of shadows) {\n      const shadowFrame = localShadowFrame(shadow, normalizedFrame, true);\n      if (shadowFrame === null) {\n        continue;\n      }\n      shadowRects.push(shadowFrame);\n    }\n    let maxBlur = 0;\n    const filterElements = [];\n    const mergeElements = [];\n    for (let i = 0, il = shadows.length; i < il; i++) {\n      const shadow = shadows[i];\n      if (!shadow)\n        continue;\n      const shadowElements = outerShadowElements(shapeId, shadow, i);\n      maxBlur = Math.max(maxBlur, shadow.blur);\n      filterElements.push(shadowElements.filterElements);\n      mergeElements.push(shadowElements.mergeElement);\n    }\n    let expandStrokeWidth = strokeWidth;\n    if (!isFiniteNumber(expandStrokeWidth))\n      expandStrokeWidth = 0;\n    let miter = svgStrokeAttributes.strokeMiterlimit;\n    if (!isFiniteNumber(miter))\n      miter = 4;\n    let shadowRect = Rect.merge(...shadowRects);\n    shadowRect = Rect.inflate(shadowRect, (expandStrokeWidth * miter / 2 + maxBlur) * 1.1);\n    const width = rect.width + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const height = rect.height + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const filterX = shadowRect.x / width * 100;\n    const filterY = shadowRect.y / height * 100;\n    const filterWidth = shadowRect.width / width * 100;\n    const filterHeight = shadowRect.height / height * 100;\n    const svgRect = {\n      x: `${filterX.toFixed(1)}%`,\n      y: `${filterY.toFixed(1)}%`,\n      width: `${filterWidth.toFixed(1)}%`,\n      height: `${filterHeight.toFixed(1)}%`\n    };\n    definition.push(\n      /* @__PURE__ */ jsxs5(\n        \"filter\",\n        {\n          id: outsideShadowId.id,\n          filterUnits: \"objectBoundingBox\",\n          ...svgRect,\n          ...svgShadowProps,\n          children: [\n            filterElements,\n            shadows.length > 1 ? /* @__PURE__ */ jsx19(\"feMerge\", { children: mergeElements }) : null\n          ]\n        },\n        outsideShadowId.id\n      )\n    );\n    const maskId = shapeId.add(\"mask\");\n    maskElement = /* @__PURE__ */ jsxs5(\"mask\", { id: maskId.id, ...svgRect, children: [\n      /* @__PURE__ */ jsx19(\"rect\", { ...svgRect, fill: \"white\" }),\n      /* @__PURE__ */ jsx19(\"use\", { href: shapeId.link, fill: \"black\" })\n    ] });\n    outsetElement = /* @__PURE__ */ jsx19(\"g\", { filter: outsideShadowId.urlLink, ...svgShadowProps, mask: maskId.urlLink, children: /* @__PURE__ */ jsx19(\n      \"use\",\n      {\n        ...svgStrokeAttributes,\n        fill: \"black\",\n        fillOpacity: fillAlpha <= 0 ? 0 : 1,\n        stroke: \"black\",\n        strokeOpacity: strokeAlpha <= 0 ? 0 : 1,\n        strokeWidth: strokeAlpha > 0 ? strokeWidth : 0,\n        xlinkHref: shapeId.link,\n        clipPath: strokeClipId.urlLink\n      }\n    ) });\n  }\n  if (insetShadows.length) {\n    insetShadows.reverse();\n    const insideShadowId = shapeId.add(\"_shadow_inside\");\n    const normalizedFrame = Rect.atOrigin(rect);\n    const shadowFrames = [normalizedFrame];\n    for (const shadow of insetShadows) {\n      const shadowFrame = localShadowFrame(shadow, normalizedFrame, true);\n      if (shadowFrame === null) {\n        continue;\n      }\n      shadowFrames.push(shadowFrame);\n    }\n    const shadowRect = Rect.merge(...shadowFrames);\n    const width = rect.width + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const height = rect.height + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const filterX = shadowRect.x / width * 100;\n    const filterY = shadowRect.y / height * 100;\n    const filterWidth = shadowRect.width / width * 100;\n    const filterHeight = shadowRect.height / height * 100;\n    const filterElements = [];\n    const mergeElements = [];\n    for (let i = 0, il = insetShadows.length; i < il; i++) {\n      const shadow = insetShadows[i];\n      if (!shadow)\n        continue;\n      const shadowElements = innerShadowElements(shapeId, shadow, i);\n      filterElements.push(shadowElements.filterElements);\n      mergeElements.push(shadowElements.mergeElement);\n    }\n    definition.push(\n      /* @__PURE__ */ jsxs5(\n        \"filter\",\n        {\n          id: insideShadowId.id,\n          x: `${filterX.toFixed(1)}%`,\n          y: `${filterY.toFixed(1)}%`,\n          width: `${filterWidth.toFixed(1)}%`,\n          height: `${filterHeight.toFixed(1)}%`,\n          filterUnits: \"objectBoundingBox\",\n          ...svgShadowProps,\n          children: [\n            filterElements,\n            insetShadows.length > 1 ? /* @__PURE__ */ jsx19(\"feMerge\", { children: mergeElements }) : null\n          ]\n        },\n        insideShadowId.id\n      )\n    );\n    let clipPath;\n    if (needsStrokeClip) {\n      clipPath = strokeClipId.urlLink;\n    }\n    insetElement = /* @__PURE__ */ jsx19(\n      \"use\",\n      {\n        fill: \"black\",\n        fillOpacity: \"1\",\n        filter: insideShadowId.urlLink,\n        xlinkHref: shapeId.link,\n        clipPath,\n        ...svgShadowProps\n      }\n    );\n  }\n  return { definition, outsetElement, insetElement, needsStrokeClip, maskElement };\n}\nfunction outerShadowElements(shapeID, shadow, index) {\n  const shadowKey = shapeID.add(\"_outer_shadow\" + index);\n  const offsetResultId = shadowKey.add(\"offset\").id;\n  const blurResultId = shadowKey.add(\"blur\").id;\n  const matrixResultId = shadowKey.add(\"matrix\").id;\n  const filterElements = /* @__PURE__ */ jsx19(\n    OuterShadowFilterElements,\n    {\n      shadow,\n      blurId: blurResultId,\n      offsetId: offsetResultId,\n      matrixId: matrixResultId\n    },\n    shadowKey.id + \"-filters\"\n  );\n  const mergeElement = /* @__PURE__ */ jsx19(\"feMergeNode\", { in: matrixResultId }, shadowKey.id + \"-merge\");\n  return { filterElements, mergeElement };\n}\nvar OuterShadowFilterElements = (props) => {\n  const { shadow, blurId, offsetId, matrixId } = props;\n  const color2 = shadow.color;\n  const rgb = ConvertColor.toRgb(color2);\n  const r = roundedNumberString(rgb.r / 255, 3);\n  const g = roundedNumberString(rgb.g / 255, 3);\n  const b = roundedNumberString(rgb.b / 255, 3);\n  const matrixValues = `0 0 0 0 ${r}   0 0 0 0 ${g}   0 0 0 0 ${b}  0 0 0 ${rgb.a} 0`;\n  return /* @__PURE__ */ jsxs5(Fragment5, { children: [\n    /* @__PURE__ */ jsx19(\"feOffset\", { dx: shadow.x, dy: shadow.y, in: \"SourceAlpha\", result: offsetId }),\n    /* @__PURE__ */ jsx19(\"feGaussianBlur\", { stdDeviation: shadow.blur / 2, in: offsetId, result: blurId }),\n    /* @__PURE__ */ jsx19(\n      \"feColorMatrix\",\n      {\n        colorInterpolationFilters: \"sRGB\",\n        values: matrixValues,\n        type: \"matrix\",\n        in: blurId,\n        result: matrixId\n      }\n    )\n  ] });\n};\nfunction innerShadowElements(shapeID, shadow, index) {\n  const shadowKey = shapeID.add(\"_inside_shadow\" + index);\n  const blurId = shadowKey.add(\"blur\").id;\n  const offsetId = shadowKey.add(\"offset\").id;\n  const compositeId = shadowKey.add(\"composite\").id;\n  const matrixId = shadowKey.add(\"matrix\").id;\n  const filterElements = /* @__PURE__ */ jsx19(\n    InnerShadowFilterElements,\n    {\n      shadow,\n      blurId,\n      offsetId,\n      compositeId,\n      matrixId\n    },\n    shadowKey.id + \"-filters\"\n  );\n  const mergeElement = /* @__PURE__ */ jsx19(\"feMergeNode\", { in: matrixId }, shadowKey.id + \"-merge\");\n  return { filterElements, mergeElement };\n}\nvar InnerShadowFilterElements = (props) => {\n  const { shadow, blurId, offsetId, compositeId, matrixId } = props;\n  const color2 = shadow.color;\n  const rgb = ConvertColor.toRgb(color2);\n  const r = rgb.r / 255;\n  const g = rgb.g / 255;\n  const b = rgb.b / 255;\n  const matrixValues = `0 0 0 0 ${r}   0 0 0 0 ${g}   0 0 0 0 ${b}  0 0 0 ${rgb.a} 0`;\n  return /* @__PURE__ */ jsxs5(Fragment5, { children: [\n    /* @__PURE__ */ jsx19(\"feGaussianBlur\", { stdDeviation: shadow.blur / 2, in: \"SourceAlpha\", result: blurId }),\n    /* @__PURE__ */ jsx19(\"feOffset\", { dx: shadow.x, dy: shadow.y, in: blurId, result: offsetId }),\n    /* @__PURE__ */ jsx19(\"feComposite\", { in: offsetId, in2: \"SourceAlpha\", operator: \"arithmetic\", k2: \"-1\", k3: \"1\", result: compositeId }),\n    /* @__PURE__ */ jsx19(\n      \"feColorMatrix\",\n      {\n        colorInterpolationFilters: \"sRGB\",\n        values: matrixValues,\n        type: \"matrix\",\n        in: compositeId,\n        result: matrixId\n      }\n    )\n  ] });\n};\nfunction calcMaxRealisticShadowBlur(distance2, focus) {\n  return interpolate([0, 0.5, 1], [distance2 * 5, distance2, 0])(focus);\n}\nvar maxSpread = 5;\nfunction calcRealisticShadowSpread(diffusion) {\n  return mix(-maxSpread, 0, diffusion);\n}\nfunction localShadowFrame(shadow, frame2, isSVG = false) {\n  if (!isSVG && asRecord(shadow)[\"inset\"])\n    return null;\n  let growth = shadow.blur;\n  let minX;\n  let maxX;\n  let minY;\n  let maxY;\n  if (isSVG) {\n    minX = -Math.abs(shadow.x) - growth;\n    maxX = Math.abs(shadow.x) + frame2.width + growth;\n    minY = -Math.abs(shadow.y) - growth;\n    maxY = Math.abs(shadow.y) + frame2.height + growth;\n  } else if (BoxShadow.is(shadow) && shadow.type === \"realistic\") {\n    growth = \"focus\" in shadow && \"diffusion\" in shadow ? calcMaxRealisticShadowBlur(distance(shadow.x, shadow.y), shadow.focus) + calcRealisticShadowSpread(shadow.diffusion) : 0;\n    if (shadow.x >= 0) {\n      minX = 0 - growth;\n      maxX = shadow.x + frame2.width + growth;\n    } else {\n      minX = shadow.x - growth;\n      maxX = frame2.width + growth;\n    }\n    if (shadow.y >= 0) {\n      minY = 0 - growth;\n      maxY = shadow.y + frame2.height + growth;\n    } else {\n      minY = shadow.y - growth;\n      maxY = frame2.height + growth;\n    }\n  } else {\n    if (\"spread\" in shadow) {\n      growth += shadow.spread;\n    }\n    minX = shadow.x - growth;\n    maxX = shadow.x + frame2.width + growth;\n    minY = shadow.y - growth;\n    maxY = shadow.y + frame2.height + growth;\n  }\n  if (maxX <= minX || maxY <= minY)\n    return null;\n  return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n}\n\n// ../../library/src/render/utils/filtersForNode.ts\nfunction collectLayerFilters(props, style) {\n  const filters = [];\n  if (isFiniteNumber(props.brightness)) {\n    filters.push(`brightness(${props.brightness / 100})`);\n  }\n  if (isFiniteNumber(props.contrast)) {\n    filters.push(`contrast(${props.contrast / 100})`);\n  }\n  if (isFiniteNumber(props.grayscale)) {\n    filters.push(`grayscale(${props.grayscale / 100})`);\n  }\n  if (isFiniteNumber(props.hueRotate)) {\n    filters.push(`hue-rotate(${props.hueRotate}deg)`);\n  }\n  if (isFiniteNumber(props.invert)) {\n    filters.push(`invert(${props.invert / 100})`);\n  }\n  if (isFiniteNumber(props.saturate)) {\n    filters.push(`saturate(${props.saturate / 100})`);\n  }\n  if (isFiniteNumber(props.sepia)) {\n    filters.push(`sepia(${props.sepia / 100})`);\n  }\n  if (isFiniteNumber(props.blur)) {\n    filters.push(`blur(${props.blur}px)`);\n  }\n  if (props.dropShadows) {\n    filters.push(...shadowsAsFilter(props.dropShadows));\n  }\n  if (filters.length === 0)\n    return;\n  style.filter = style.WebkitFilter = filters.join(\" \");\n}\nfunction collectBackgroundFilters(props, style) {\n  if (isFiniteNumber(props.backgroundBlur)) {\n    style.backdropFilter = style.WebkitBackdropFilter = `blur(${props.backgroundBlur}px)`;\n  }\n}\nfunction collectFiltersFromProps(props, style) {\n  collectBackgroundFilters(props, style);\n  collectLayerFilters(props, style);\n}\n\n// ../../library/src/render/style/collectVisualStyleFromProps.ts\nfunction collectVisualStyleFromProps(props, style, isTextNode = false) {\n  collectBackgroundFromProps(props, style);\n  collectRadiusFromProps(props, style);\n  collectFiltersFromProps(props, style);\n  collectBlendingFromProps(props, style);\n  collectOverflowFromProps(props, style);\n  collectOpacityFromProps(props, style);\n  collectTextColorFromProps(props, style);\n  if (isTextNode) {\n    collectTextShadowsForProps(props, style);\n  } else {\n    collectBoxShadowsForProps(props, style);\n  }\n}\n\n// ../../library/src/render/traits/Transform.ts\nvar getNumber = /* @__PURE__ */ (() => Animatable.getNumber)();\nvar transformDefaults = {\n  z: 0,\n  rotation: 0,\n  rotationX: 0,\n  rotationY: 0,\n  rotationZ: 0,\n  scale: 1,\n  scaleX: 1,\n  scaleY: 1,\n  scaleZ: 1,\n  skew: 0,\n  skewX: 0,\n  skewY: 0,\n  originX: 0.5,\n  originY: 0.5,\n  originZ: 0\n};\nfunction getRotation(rotation, rotate) {\n  if (typeof rotate === \"string\") {\n    rotate = parseFloat(rotate);\n  }\n  return isFiniteNumber(rotate) ? rotate : getNumber(rotation);\n}\nfunction collectTransformFromProps(props, rect, style) {\n  const motionStyle = style;\n  const x = typeof rect.x === \"number\" ? `${rect.x}px` : rect.x;\n  const y = typeof rect.y === \"number\" ? `${rect.y}px` : rect.y;\n  const z = getNumber(props.z);\n  const scaleZ = getNumber(props.scaleZ);\n  const originZ = getNumber(props.originZ);\n  const rotationZ = getRotation(props.rotationZ, resolveMotionValue(motionStyle.rotateZ));\n  const rotationX = getRotation(props.rotationX, resolveMotionValue(motionStyle.rotateX));\n  const rotationY = getRotation(props.rotationY, resolveMotionValue(motionStyle.rotateY));\n  const scale = getNumber(props.scale);\n  const scaleX = getNumber(props.scaleX);\n  const scaleY = getNumber(props.scaleY);\n  const skew = getNumber(props.skew);\n  const skewX = getNumber(props.skewX);\n  const skewY = getNumber(props.skewY);\n  const rotation = getRotation(props.rotation, resolveMotionValue(motionStyle.rotate));\n  const force3d = RenderEnvironment.target === RenderTarget.export;\n  if (force3d || z !== 0 || scaleZ !== 1 || originZ !== 0 || rotationZ !== 0 || rotationX !== 0 || rotationY !== 0) {\n    style.transform = `\n            ${`translate3d(${x}, ${y}, ${z}px)`}\n            scale3d(${scaleX * scale}, ${scaleY * scale}, ${scaleZ})\n            skew(${skew}deg,${skew}deg)\n            skewX(${skewX}deg)\n            skewY(${skewY}deg)\n            translateZ(${originZ}px)\n            rotateX(${rotationX}deg)\n            rotateY(${rotationY}deg)\n            rotateZ(${(rotation + rotationZ).toFixed(4)}deg)\n            translateZ(${-originZ}px)`;\n  } else {\n    style.transform = `\n            ${`translate(${x}, ${y})`}\n            scale(${scaleX * scale}, ${scaleY * scale})\n            skew(${skew}deg,${skew}deg)\n            skewX(${skewX}deg)\n            skewY(${skewY}deg)\n            rotate(${rotation.toFixed(4)}deg)`;\n  }\n  const transformOrigin = `${getNumber(props.originX) * 100}% ${getNumber(props.originY) * 100}%`;\n  style.transformOrigin = transformOrigin;\n  style.WebkitTransformOrigin = transformOrigin;\n}\n\n// ../../library/src/render/presentation/Frame/DeprecatedFrame.tsx\nimport { jsx as jsx20, jsxs as jsxs6 } from \"react/jsx-runtime\";\nfunction cssBackgroundSize(size) {\n  switch (size) {\n    case \"fit\":\n      return \"contain\";\n    case \"stretch\":\n      return \"100% 100%\";\n    default:\n      return \"cover\";\n  }\n}\nfunction collectBackgroundImageFromProps(props, style) {\n  const image = backgroundImageFromProps(props);\n  if (image) {\n    style.backgroundImage = `url(\"${image.src}\")`;\n    style.backgroundSize = cssBackgroundSize(image.fit);\n    style.backgroundRepeat = \"no-repeat\";\n    style.backgroundPosition = \"center\";\n  }\n}\nfunction toPixelString(value) {\n  return isFiniteNumber(value) ? `${value}px` : value;\n}\nfunction applyLayoutProp(style, props, key7) {\n  if (props[key7] !== void 0) {\n    const value = Animatable.get(props[key7], void 0);\n    asRecord(style)[key7] = toPixelString(value);\n  }\n}\nvar DeprecatedFrame = /* @__PURE__ */ (() => {\n  const _DeprecatedFrameInner = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"element\", null);\n      __publicField(this, \"imageDidChange\", false);\n      __publicField(this, \"state\", {\n        size: null\n      });\n      __publicField(this, \"updateStyle\", () => {\n        if (!this.element) {\n          return;\n        }\n        Object.assign(this.element.style, this.getStyle());\n      });\n      __publicField(this, \"setElement\", (element) => {\n        this.element = element;\n        this.setLayerElement(element);\n      });\n      // XXX internal state\n      __publicField(this, \"propsObserver\");\n      __publicField(this, \"propsObserverCancel\");\n      __publicField(this, \"sizeObserver\");\n      __publicField(this, \"sizeObserverCancel\");\n      __publicField(this, \"onPropsChange\", (props) => {\n        const rect = _DeprecatedFrameInner.rect(Animatable.objectToValues(props.value));\n        if (this.state.size && isAnimatable(this.state.size.width) && isAnimatable(props.value.width)) {\n          this.state.size.width.set(rect.width);\n        }\n        if (this.state.size && isAnimatable(this.state.size.height) && isAnimatable(props.value.height)) {\n          this.state.size.height.set(rect.height);\n        }\n        this.updateStyle();\n      });\n      __publicField(this, \"onSizeChange\", () => {\n        this.updateStyle();\n      });\n    }\n    static rect(props) {\n      const constraintValues = ConstraintValues.fromProperties(props);\n      const parentSizeInfo = props.parentSize ? {\n        sizing: props.parentSize,\n        positioning: props.parentSize,\n        viewport: null\n      } : null;\n      return ConstraintValues.toRect(constraintValues, parentSizeInfo, null, true);\n    }\n    get rect() {\n      return _DeprecatedFrameInner.rect(this.props);\n    }\n    static getDerivedStateFromProps(nextProps, prevState) {\n      const size = _DeprecatedFrameInner.updatedSize(nextProps, prevState);\n      const { target } = RenderEnvironment;\n      const nextBackgroundImageSrc = nextProps.background && BackgroundImage.isImageObject(nextProps.background) ? nextProps.background.src : null;\n      if (nextBackgroundImageSrc) {\n        return {\n          size\n        };\n      }\n      if (prevState.size) {\n        if (target === RenderTarget.preview) {\n          return null;\n        }\n        if (prevState.size.width === size.width && prevState.size.height === size.height) {\n          return null;\n        }\n      }\n      return {\n        size\n      };\n    }\n    static updatedSize(props, state) {\n      const rect = _DeprecatedFrameInner.rect(props);\n      let size = state.size;\n      const newSize = { width: rect.width, height: rect.height };\n      const { target } = RenderEnvironment;\n      if (!size) {\n        if (target === RenderTarget.preview) {\n          size = ObservableObject(newSize, true);\n        } else {\n          size = newSize;\n        }\n      } else {\n        if (isAnimatable(size.width) && isAnimatable(size.height)) {\n          size.width.set(newSize.width);\n          size.height.set(newSize.height);\n        } else {\n          size = newSize;\n        }\n      }\n      return size;\n    }\n    getStyle() {\n      const rect = this.rect;\n      const style = {\n        display: \"block\",\n        position: \"absolute\",\n        width: `${rect.width}px`,\n        height: `${rect.height}px`,\n        pointerEvents: void 0,\n        // TODO: this should be \"none\" for non-event consuming instances, for performance.\n        userSelect: \"none\"\n      };\n      let left = Animatable.get(this.props.left, void 0);\n      let top = Animatable.get(this.props.top, void 0);\n      Object.assign(style, this.props._initialStyle);\n      const hasParentSize = this.context.parentSize !== 1 /* Disabled */;\n      const perspective = Animatable.get(this.props.perspective, void 0);\n      style.perspective = perspective;\n      style.WebkitPerspective = perspective;\n      let backfaceVisibility = void 0;\n      const backfaceVisible = Animatable.get(this.props.backfaceVisible, void 0);\n      if (backfaceVisible === true) {\n        backfaceVisibility = \"visible\";\n      } else if (backfaceVisible === false) {\n        backfaceVisibility = \"hidden\";\n      }\n      style.backfaceVisibility = backfaceVisibility;\n      style.WebkitBackfaceVisibility = backfaceVisibility;\n      const preserve3d = Animatable.get(this.props.preserve3d, void 0);\n      if (preserve3d === true) {\n        style.transformStyle = \"preserve-3d\";\n      } else if (preserve3d === false) {\n        style.transformStyle = \"flat\";\n      }\n      if (!hasParentSize) {\n        applyLayoutProp(style, this.props, \"right\");\n        applyLayoutProp(style, this.props, \"bottom\");\n        const width = Animatable.get(this.props.width, void 0);\n        const stringWidth = toPixelString(width);\n        const height = Animatable.get(this.props.height, void 0);\n        const stringHeight = toPixelString(height);\n        if (typeof left === \"string\" && left.endsWith(\"%\") && this.props.right === null) {\n          left = `calc(${left} - calc(${stringWidth}} / 2))`;\n          style.width = stringWidth;\n        }\n        if (typeof top === \"string\" && top.endsWith(\"%\") && this.props.bottom === null) {\n          top = `calc(${top} - calc(${stringHeight} / 2))`;\n          style.height = stringHeight;\n        }\n        if (top !== void 0 && style.bottom !== void 0) {\n          style.height = void 0;\n          top = toPixelString(Animatable.get(this.props.top, void 0));\n        } else {\n          style.height = stringHeight;\n        }\n        if (left !== void 0 && style.right !== void 0) {\n          style.width = void 0;\n          left = toPixelString(Animatable.get(this.props.left, void 0));\n        } else {\n          style.width = stringWidth;\n        }\n      }\n      const transformRect = { ...rect };\n      if (typeof left !== \"undefined\") {\n        transformRect.x = left;\n      }\n      if (typeof top !== \"undefined\") {\n        transformRect.y = top;\n      }\n      collectTransformFromProps(this.props, transformRect, style);\n      collectVisualStyleFromProps(this.props, style);\n      collectBackgroundImageFromProps(this.props, style);\n      Layer.applyWillChange(this.props, style, false);\n      if (this.props.style) {\n        Object.assign(style, this.props.style);\n      }\n      return style;\n    }\n    componentDidMount() {\n      const { target } = RenderEnvironment;\n      if (target === RenderTarget.preview) {\n        this.propsObserver = ObservableObject(this.props, true);\n        this.propsObserverCancel = ObservableObject.addObserver(this.propsObserver, this.onPropsChange);\n        if (this.props.parentSize && isAnimatable(this.props.parentSize.width) && isAnimatable(this.props.parentSize.height)) {\n          this.sizeObserver = ObservableObject(this.props.parentSize, true);\n          this.sizeObserverCancel = ObservableObject.addObserver(this.sizeObserver, this.onSizeChange);\n        }\n      }\n    }\n    componentDidUpdate() {\n      const { target } = RenderEnvironment;\n      this.propsObserverCancel && this.propsObserverCancel();\n      this.sizeObserverCancel && this.sizeObserverCancel();\n      if (target === RenderTarget.preview) {\n        this.propsObserver = ObservableObject(this.props, true);\n        this.propsObserverCancel = ObservableObject.addObserver(this.propsObserver, this.onPropsChange);\n        if (this.props.parentSize && isAnimatable(this.props.parentSize.width) && isAnimatable(this.props.parentSize.height)) {\n          this.sizeObserver = ObservableObject(this.props.parentSize, true);\n          this.sizeObserverCancel = ObservableObject.addObserver(this.sizeObserver, this.onSizeChange);\n        }\n      }\n    }\n    componentWillUnmount() {\n      this.propsObserverCancel && this.propsObserverCancel();\n      this.propsObserverCancel = void 0;\n      this.sizeObserverCancel && this.sizeObserverCancel();\n      this.sizeObserverCancel = void 0;\n    }\n    render() {\n      countNodeRender();\n      const { visible, id, className: className2 } = this.props;\n      if (!visible) {\n        return null;\n      }\n      const style = this.getStyle();\n      const rect = this.rect;\n      const parentSize = { width: rect.width, height: rect.height };\n      return /* @__PURE__ */ jsxs6(\"div\", { id, style, ref: this.setElement, className: className2, children: [\n        /* @__PURE__ */ jsx20(ProvideParentSize, { parentSize, children: this.layoutChildren() }),\n        /* @__PURE__ */ jsx20(Border, { ...this.props })\n      ] });\n    }\n    layoutChildren() {\n      const _forwardedOverrides = this.props._forwardedOverrides;\n      let children = React27.Children.map(this.props.children, (child) => {\n        if (isConstraintSupportingChild(child)) {\n          return React27.cloneElement(child, {\n            parentSize: this.state.size,\n            _forwardedOverrides\n          });\n        } else if (_forwardedOverrides && child) {\n          return React27.cloneElement(child, { _forwardedOverrides });\n        } else {\n          return child;\n        }\n      });\n      if (children && children.length === 1 && typeof children[0] === \"string\") {\n        children = [/* @__PURE__ */ jsx20(Center, { children }, \"0\")];\n      }\n      return children;\n    }\n  };\n  let DeprecatedFrameInner = _DeprecatedFrameInner;\n  __publicField(DeprecatedFrameInner, \"supportsConstraints\", true);\n  __publicField(DeprecatedFrameInner, \"defaultFrameSpecificProps\", {\n    ...constraintDefaults,\n    ...transformDefaults,\n    opacity: 1,\n    background: Color(\"rgba(0, 170, 255, 0.3)\"),\n    visible: true,\n    borderWidth: 0,\n    borderColor: \"#222\",\n    borderStyle: \"solid\"\n  });\n  __publicField(DeprecatedFrameInner, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._DeprecatedFrameInner.defaultFrameSpecificProps\n  });\n  DeprecatedFrameInner.contextType = ConstraintsContext;\n  return DeprecatedFrameInner;\n})();\nfunction Center(props) {\n  const style = Object.assign(\n    {},\n    {\n      height: \"100%\",\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      fontFamily: \"Helvetica\"\n    },\n    props.style || {}\n  );\n  return /* @__PURE__ */ jsx20(\"div\", { style, children: props.children });\n}\n\n// ../../library/src/render/presentation/Frame/isDeprecatedFrameProps.ts\nvar frameWithMotionPropsFields = [\n  \"_border\",\n  \"_constraints\",\n  \"animate\",\n  \"initial\",\n  \"variants\",\n  \"transition\",\n  \"inherit\",\n  \"center\",\n  \"initial\",\n  \"transformTemplate\",\n  \"animate\",\n  \"variants\",\n  \"transition\",\n  \"onUpdate\",\n  \"onAnimationComplete\",\n  \"onPanSessionStart\",\n  \"onTapCancel\",\n  \"whileTap\",\n  \"whileHover\",\n  \"onHoverStart\",\n  \"onHoverEnd\",\n  \"drag\",\n  \"dragDirectionLock\",\n  \"dragPropagation\",\n  \"dragConstraints\",\n  \"dragElastic\",\n  \"dragMomentum\",\n  \"dragTransition\",\n  \"onDragStart\",\n  \"onDragEnd\",\n  \"onDrag\",\n  \"onDirectionLock\",\n  \"onDragTransitionEnd\",\n  \"x\",\n  \"y\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"position\",\n  \"border\",\n  \"borderRadius\",\n  \"shadow\",\n  \"size\"\n];\nvar deprecatedFramePropsFields = [\n  \"autoSize\",\n  \"aspectRatio\",\n  \"borderWidth\",\n  \"borderStyle\",\n  \"borderColor\",\n  \"centerX\",\n  \"centerY\"\n];\nfunction isDeprecatedFrameProps(props) {\n  let field;\n  for (const propKey in props) {\n    if (isAnimatable(props[propKey]))\n      return true;\n  }\n  for (field of frameWithMotionPropsFields) {\n    if (props.hasOwnProperty(field))\n      return false;\n  }\n  for (field of deprecatedFramePropsFields) {\n    if (props.hasOwnProperty(field))\n      return true;\n  }\n  return false;\n}\n\n// ../../library/src/render/presentation/Frame/index.tsx\nimport { jsx as jsx21 } from \"react/jsx-runtime\";\nvar DeprecatedFrameWithEvents = /* @__PURE__ */ WithEvents(DeprecatedFrame);\nvar Frame = /* @__PURE__ */ (() => {\n  const FrameInner = forwardRef2(function FrameInner2(props, ref) {\n    const parentSize = useParentSize();\n    if (isDeprecatedFrameProps(props)) {\n      const currentParentSize = props.parentSize || deprecatedParentSize(parentSize);\n      return /* @__PURE__ */ jsx21(DeprecatedFrameWithEvents, { ...props, parentSize: currentParentSize });\n    }\n    return /* @__PURE__ */ jsx21(FrameWithMotion, { ...props, ref });\n  });\n  FrameInner[\"displayName\"] = \"Frame\";\n  return FrameInner;\n})();\n\n// ../../library/src/components/AnimateLayout/SharedLayoutTree.tsx\nimport React28, { Component as Component5 } from \"react\";\nimport { jsx as jsx22 } from \"react/jsx-runtime\";\nvar LayoutTree = class extends Component5 {\n  constructor() {\n    super(...arguments);\n    /**\n     * SharedLayoutTrees need to reset the projections styles previously applied\n     * on their boxes if they are becoming lead but not animating.\n     */\n    __publicField(this, \"layoutMaybeMutated\");\n    /**\n     * A list of projection nodes in the tree\n     */\n    __publicField(this, \"projectionNodes\", /* @__PURE__ */ new Map());\n    /**\n     * The projection node with the smallest depth in the tree's children.\n     */\n    __publicField(this, \"rootProjectionNode\");\n    /**\n     * When a tree is tagged as being removed, either by usePresence, or by\n     * Navigation, we set it on `this` in shouldComponentUpdate so that it's\n     * accessible by SharedLayoutRoot before the LayoutTree has updated.\n     */\n    __publicField(this, \"isExiting\");\n    __publicField(this, \"shouldPreserveFollowOpacity\", (child) => {\n      return child.options.layoutId === TREE_ROOT_ID && !this.props.isExiting;\n    });\n    __publicField(this, \"switchLayoutGroupContext\", {\n      register: (child) => this.addChild(child),\n      deregister: (child) => this.removeChild(child),\n      // Configs to use for the initial promotion on mount in Motion\n      transition: this.props.isLead !== void 0 && this.props.animatesLayout ? this.props.transition : void 0,\n      shouldPreserveFollowOpacity: this.shouldPreserveFollowOpacity\n    });\n  }\n  componentDidMount() {\n    if (this.props.isLead) {\n      this.props.sharedLayoutContext.initLead(this, !!this.props.animatesLayout);\n    }\n  }\n  shouldComponentUpdate(nextProps) {\n    const { isLead, isExiting, isOverlayed, animatesLayout, transition, sharedLayoutContext } = nextProps;\n    this.isExiting = isExiting;\n    if (isLead === void 0)\n      return true;\n    const hasBecomeLead = !this.props.isLead && !!isLead;\n    const hasExitBeenCancelled = this.props.isExiting && !isExiting;\n    const shouldPromote = hasBecomeLead || hasExitBeenCancelled;\n    const shouldDemote = !!this.props.isLead && !isLead;\n    const overlayChanged = this.props.isOverlayed !== isOverlayed;\n    if (shouldPromote || shouldDemote) {\n      this.projectionNodes.forEach((projection) => projection == null ? void 0 : projection.willUpdate());\n    }\n    if (shouldPromote) {\n      sharedLayoutContext.schedulePromoteTree(this, transition, !!animatesLayout);\n    } else if (overlayChanged) {\n      sharedLayoutContext.scheduleProjectionDidUpdate();\n    }\n    return !!shouldPromote && !!animatesLayout;\n  }\n  addChild(child) {\n    const layoutId = child.options.layoutId;\n    if (layoutId) {\n      this.projectionNodes.set(layoutId, child);\n      this.setRootChild(child);\n    }\n  }\n  /**\n   * As children are added, make sure that `this.rootProjectionNode` is always the\n   * child with the smallest depth.\n   */\n  setRootChild(child) {\n    if (!this.rootProjectionNode)\n      return this.rootProjectionNode = child;\n    this.rootProjectionNode = this.rootProjectionNode.depth < child.depth ? this.rootProjectionNode : child;\n  }\n  removeChild(child) {\n    const layoutId = child.options.layoutId;\n    if (layoutId) {\n      this.projectionNodes.delete(layoutId);\n    }\n  }\n  render() {\n    return /* @__PURE__ */ jsx22(SwitchLayoutGroupContext.Provider, { value: this.switchLayoutGroupContext, children: this.props.children });\n  }\n};\nvar SharedLayoutTree = (props) => {\n  const sharedLayoutContext = React28.useContext(SharedLayoutContext);\n  return /* @__PURE__ */ jsx22(LayoutTree, { ...props, sharedLayoutContext });\n};\n\n// ../../library/src/components/NavigationContainerContext.tsx\nimport React29, { useContext as useContext7 } from \"react\";\nvar NavigationContainerContext = /* @__PURE__ */ React29.createContext(true);\nfunction useIsInCurrentNavigationTarget() {\n  const isInCurrentNavigationTarget = useContext7(NavigationContainerContext);\n  return isInCurrentNavigationTarget;\n}\n\n// ../../library/src/components/NavigationTargetContext.tsx\nimport { createContext as createContext2, useCallback as useCallback5, useContext as useContext8, useEffect as useEffect10, useRef as useRef10 } from \"react\";\n\n// ../../library/src/components/utils/useMap.ts\nfunction newMap() {\n  return /* @__PURE__ */ new Map();\n}\nfunction useMap() {\n  return useConstant(newMap);\n}\n\n// ../../library/src/components/NavigationTargetContext.tsx\nimport { jsx as jsx23 } from \"react/jsx-runtime\";\nvar NavigationTargetContext = /* @__PURE__ */ createContext2({ register: () => {\n}, deregister: () => {\n} });\nvar NavigationTargetWrapper = ({ isCurrent, isOverlayed, children }) => {\n  const callbacks = useMap();\n  const register = useCallback5(\n    (fn) => {\n      if (callbacks.has(fn)) {\n        console.warn(\"NavigationTargetWrapper: already registered\");\n        return;\n      }\n      callbacks.set(fn, void 0);\n    },\n    [\n      callbacks\n      /* constant, so should never change */\n    ]\n  );\n  const deregister = useCallback5(\n    (fn) => {\n      const cleanup = callbacks.get(fn);\n      cleanup == null ? void 0 : cleanup();\n      callbacks.delete(fn);\n    },\n    [\n      callbacks\n      /* constant, so should never change */\n    ]\n  );\n  const value = useRef10({ register, deregister }).current;\n  useEffect10(() => {\n    callbacks.forEach((_, cb) => {\n      const newCleanup = cb(isCurrent, isOverlayed);\n      callbacks.set(cb, isFunction(newCleanup) ? newCleanup : void 0);\n    });\n    return () => {\n      callbacks.forEach((cleanup, cb) => {\n        if (!cleanup)\n          return;\n        cleanup();\n        callbacks.set(cb, void 0);\n      });\n    };\n  }, [\n    isCurrent,\n    isOverlayed,\n    callbacks\n    /* constant, so should never change */\n  ]);\n  return /* @__PURE__ */ jsx23(NavigationTargetContext.Provider, { value, children });\n};\nfunction useOnCurrentTargetChange(callback, deps = []) {\n  const { register, deregister } = useContext8(NavigationTargetContext);\n  useEffect10(() => {\n    if (!callback)\n      return;\n    register(callback);\n    return () => deregister(callback);\n  }, [register, deregister, ...deps]);\n}\n\n// ../../library/src/components/NavigationContainer.tsx\nimport { jsx as jsx24, jsxs as jsxs7 } from \"react/jsx-runtime\";\nvar NavigationContainer = /* @__PURE__ */ React30.memo(function NavigationContainer2({\n  isLayeredContainer,\n  isCurrent,\n  isPrevious,\n  isOverlayed = false,\n  visible,\n  transitionProps,\n  children,\n  backdropColor,\n  onTapBackdrop,\n  backfaceVisible,\n  exitBackfaceVisible,\n  animation,\n  exitAnimation,\n  instant,\n  initialProps,\n  exitProps,\n  position = { top: 0, right: 0, bottom: 0, left: 0 },\n  withMagicMotion,\n  index,\n  areMagicMotionLayersPresent,\n  id,\n  isInitial\n}) {\n  const animate3 = useAnimation();\n  const presence = useContext9(PresenceContext);\n  const { persistLayoutIdCache } = useContext9(LayoutIdContext);\n  const previousState = useRef11({\n    wasCurrent: void 0,\n    wasPrevious: false,\n    wasBeingRemoved: false,\n    wasReset: true,\n    origins: getOriginProps({}, initialProps, transitionProps)\n  });\n  const viewportRef = useRef11(null);\n  const isBeingRemoved = presence !== null && !presence.isPresent;\n  if (isCurrent && previousState.current.wasCurrent === void 0)\n    persistLayoutIdCache();\n  useEffect11(() => {\n    if (isLayeredContainer || !animate3)\n      return;\n    if (isBeingRemoved) {\n      previousState.current = {\n        ...previousState.current,\n        wasBeingRemoved: isBeingRemoved\n      };\n      return;\n    }\n    const { wasPrevious, wasCurrent } = previousState.current;\n    const shouldAnimateIn = isCurrent && !wasCurrent || // If the screen was being removed as a result of a \"go back\" transition, but that removal is interrupted,\n    // resulting in this screen being restored to the current screen, we need to trigger an animation.\n    !isBeingRemoved && previousState.current.wasBeingRemoved && isCurrent;\n    const shouldAnimateOut = isPrevious && !wasPrevious;\n    const origins = getOriginProps(previousState.current.origins, initialProps, transitionProps);\n    let wasReset = previousState.current.wasReset;\n    if (shouldAnimateIn || shouldAnimateOut) {\n      animate3.stop();\n      animate3.start({\n        zIndex: index,\n        ...origins,\n        ...transitionProps\n      });\n      wasReset = false;\n    } else if (wasReset === false) {\n      animate3.stop();\n      animate3.set({ zIndex: index, ...allAnimatableProperties, opacity: 0 });\n      wasReset = true;\n    }\n    previousState.current = {\n      wasCurrent: !!isCurrent,\n      wasPrevious: !!isPrevious,\n      wasBeingRemoved: false,\n      wasReset,\n      origins\n    };\n  }, [isCurrent, isPrevious, isBeingRemoved]);\n  const transition = instant ? { type: false } : \"velocity\" in animation ? { ...animation, velocity: 0 } : animation;\n  const exitTransition = instant ? { type: false } : exitAnimation || animation;\n  const layout = { ...position };\n  if (layout.left === void 0 || layout.right === void 0)\n    layout.width = \"auto\";\n  if (layout.top === void 0 || layout.bottom === void 0)\n    layout.height = \"auto\";\n  const needsPerspective = contains3Dprops(transitionProps) || contains3Dprops(initialProps);\n  const perspective = needsPerspective && (isLayeredContainer || isCurrent || isPrevious) ? 1200 : void 0;\n  const identity = { ...allAnimatableProperties, ...previousState.current.origins };\n  const animations2 = isLayeredContainer ? {\n    initial: { ...identity, ...initialProps },\n    animate: { ...identity, ...transitionProps, transition },\n    // Overlay animations are sometimes instant\n    exit: { ...identity, ...exitProps, transition: animation }\n    // Overlay exits are always animated\n  } : {\n    animate: animate3,\n    exit: { ...identity, ...exitProps, transition: exitTransition }\n  };\n  const isPresent = isBeingRemoved || areMagicMotionLayersPresent === false ? false : true;\n  const isCurrentTarget = !!isCurrent && isPresent;\n  const forceOpacity = isCurrent && isInitial;\n  return /* @__PURE__ */ jsxs7(\n    FrameWithMotion,\n    {\n      \"data-framer-component-type\": \"NavigationContainerWrapper\",\n      width: \"100%\",\n      height: \"100%\",\n      style: {\n        position: \"absolute\",\n        transformStyle: \"flat\",\n        backgroundColor: \"transparent\",\n        overflow: \"hidden\",\n        // Unlike Overlays, Screens set zIndex via animation controls to ensure it's set in parallel with the animation being played.\n        // However, when a screen exits, it needs to preserve it's zIndex, which can't be applied through an `exit` animation,\n        // and might be impacted by the layer created by `perspective`.\n        zIndex: isLayeredContainer || isBeingRemoved || isCurrent && withMagicMotion ? index : void 0,\n        pointerEvents: void 0,\n        visibility: visible ? \"visible\" : \"hidden\",\n        perspective\n      },\n      children: [\n        isLayeredContainer && /* @__PURE__ */ jsx24(\n          FrameWithMotion,\n          {\n            width: \"100%\",\n            height: \"100%\",\n            \"data-framer-component-type\": \"NavigationContainerBackdrop\",\n            transition: animation,\n            initial: { opacity: instant && visible ? 1 : 0 },\n            animate: { opacity: 1 },\n            exit: { opacity: 0 },\n            backgroundColor: backdropColor ? backdropColor : \"transparent\",\n            onTap: !isBeingRemoved ? onTapBackdrop : void 0\n          }\n        ),\n        /* @__PURE__ */ jsx24(\n          FrameWithMotion,\n          {\n            ...layout,\n            ...animations2,\n            transition: {\n              default: transition,\n              originX: { type: false },\n              originY: { type: false },\n              originZ: { type: false }\n            },\n            backgroundColor: \"transparent\",\n            backfaceVisible: !isBeingRemoved ? backfaceVisible : exitBackfaceVisible,\n            \"data-framer-component-type\": \"NavigationContainer\",\n            \"data-framer-is-current-navigation-target\": !!isCurrent,\n            style: {\n              pointerEvents: void 0,\n              // When we mount a new screen that is going to be animated in with animation controls,\n              // we need to ensure that the screen is hidden until the animation starts.\n              opacity: forceOpacity || isLayeredContainer || isCurrent && withMagicMotion ? 1 : 0\n            },\n            \"data-is-present\": isPresent ? void 0 : false,\n            ref: viewportRef,\n            children: /* @__PURE__ */ jsx24(ViewportContext.Provider, { value: viewportRef, children: /* @__PURE__ */ jsx24(NavigationContainerContext.Provider, { value: isCurrentTarget, children: /* @__PURE__ */ jsx24(NavigationTargetWrapper, { isCurrent: isCurrentTarget, isOverlayed, children: /* @__PURE__ */ jsx24(\n              SharedLayoutTree,\n              {\n                isLead: isCurrent,\n                animatesLayout: !!withMagicMotion,\n                transition,\n                isExiting: !isPresent,\n                isOverlayed,\n                id,\n                children\n              }\n            ) }) }) })\n          }\n        )\n      ]\n    }\n  );\n}, shouldUsePreviousValue);\nfunction shouldUsePreviousValue(prevProps, nextProps) {\n  if (nextProps.isCurrent === void 0)\n    return false;\n  if (prevProps.isCurrent !== nextProps.isCurrent)\n    return false;\n  if (prevProps.isPrevious !== nextProps.isPrevious)\n    return false;\n  if (nextProps.isCurrent && prevProps.isOverlayed !== nextProps.isOverlayed)\n    return false;\n  return true;\n}\nfunction getOriginProps(currentOriginProps, initialProps, transitionProps) {\n  const result = { ...currentOriginProps };\n  if (initialProps) {\n    if (isFiniteNumber(initialProps.originX))\n      result.originX = initialProps.originX;\n    if (isFiniteNumber(initialProps.originY))\n      result.originY = initialProps.originY;\n    if (isFiniteNumber(initialProps.originZ))\n      result.originZ = initialProps.originZ;\n  }\n  if (transitionProps) {\n    if (isFiniteNumber(transitionProps.originX))\n      result.originX = transitionProps.originX;\n    if (isFiniteNumber(transitionProps.originY))\n      result.originY = transitionProps.originY;\n    if (isFiniteNumber(transitionProps.originZ))\n      result.originZ = transitionProps.originZ;\n  }\n  return result;\n}\nfunction contains3Dprops(containerProps) {\n  var _a, _b, _c;\n  if (!containerProps)\n    return false;\n  const containsProps = \"rotateX\" in containerProps || \"rotateY\" in containerProps || \"z\" in containerProps;\n  if (!containsProps)\n    return false;\n  const toPropsContain3d = containerProps.rotateX !== 0 || containerProps.rotateY !== 0 || containerProps.z !== 0;\n  const fromPropsContain3d = ((_a = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _a.rotateX.from) !== 0 || ((_b = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _b.rotateY.from) !== 0 || ((_c = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _c.z.from) !== 0;\n  return toPropsContain3d || fromPropsContain3d;\n}\nvar allAnimatableProperties = {\n  x: 0,\n  y: 0,\n  z: 0,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  rotateZ: 0,\n  scale: 1,\n  scaleX: 1,\n  scaleY: 1,\n  scaleZ: 1,\n  skew: 0,\n  skewX: 0,\n  skewY: 0,\n  originX: 0.5,\n  originY: 0.5,\n  originZ: 0,\n  opacity: 1\n};\n\n// ../../library/src/components/NavigationContext.ts\nimport { createContext as createContext3 } from \"react\";\n\n// ../../library/src/components/NavigatorMock.tsx\nvar NavigatorMock = class {\n  constructor() {\n    __publicField(this, \"warning\", () => {\n      warnOnce(\"The Navigator API is only available inside of Framer: https://www.framer.com/\");\n    });\n    __publicField(this, \"goBack\", () => this.warning());\n    __publicField(this, \"instant\", () => this.warning());\n    __publicField(this, \"fade\", () => this.warning());\n    __publicField(this, \"push\", () => this.warning());\n    __publicField(this, \"modal\", () => this.warning());\n    __publicField(this, \"overlay\", () => this.warning());\n    __publicField(this, \"flip\", () => this.warning());\n    __publicField(this, \"customTransition\", () => this.warning());\n    __publicField(this, \"magicMotion\", () => this.warning());\n  }\n};\nvar navigatorMock = /* @__PURE__ */ new NavigatorMock();\n\n// ../../library/src/components/NavigationContext.ts\nvar NavigationContext = /* @__PURE__ */ createContext3(navigatorMock);\n\n// ../../library/src/components/NavigationTransitions.ts\nvar TransitionDefaults = {\n  Fade: {\n    exit: { opacity: 0 },\n    enter: { opacity: 0 }\n  },\n  PushLeft: {\n    exit: { x: \"-30%\" },\n    enter: { x: \"100%\" }\n  },\n  PushRight: {\n    exit: { x: \"30%\" },\n    enter: { x: \"-100%\" }\n  },\n  PushUp: {\n    exit: { y: \"-30%\" },\n    enter: { y: \"100%\" }\n  },\n  PushDown: {\n    exit: { y: \"30%\" },\n    enter: { y: \"-100%\" }\n  },\n  Instant: {\n    animation: { type: false },\n    enter: { opacity: 0 }\n  },\n  Modal: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { center: true },\n    enter: { opacity: 0, scale: 1.2 }\n  },\n  OverlayLeft: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { right: 0, top: 0, bottom: 0 },\n    enter: { x: \"100%\" }\n  },\n  OverlayRight: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { left: 0, top: 0, bottom: 0 },\n    enter: { x: \"-100%\" }\n  },\n  OverlayUp: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { bottom: 0, left: 0, right: 0 },\n    enter: { y: \"100%\" }\n  },\n  OverlayDown: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { top: 0, left: 0, right: 0 },\n    enter: { y: \"-100%\" }\n  },\n  FlipLeft: {\n    backfaceVisible: false,\n    exit: { rotateY: -180 },\n    enter: { rotateY: 180 }\n  },\n  FlipRight: {\n    backfaceVisible: false,\n    exit: { rotateY: 180 },\n    enter: { rotateY: -180 }\n  },\n  FlipUp: {\n    backfaceVisible: false,\n    exit: { rotateX: 180 },\n    enter: { rotateX: -180 }\n  },\n  FlipDown: {\n    backfaceVisible: false,\n    exit: { rotateX: -180 },\n    enter: { rotateX: 180 }\n  },\n  MagicMotion: {\n    withMagicMotion: true\n  }\n};\nfunction pushTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"right\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.PushLeft;\n    case \"left\":\n      return TransitionDefaults.PushRight;\n    case \"bottom\":\n      return TransitionDefaults.PushUp;\n    case \"top\":\n      return TransitionDefaults.PushDown;\n  }\n}\nfunction overlayTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"bottom\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.OverlayLeft;\n    case \"left\":\n      return TransitionDefaults.OverlayRight;\n    case \"bottom\":\n      return TransitionDefaults.OverlayUp;\n    case \"top\":\n      return TransitionDefaults.OverlayDown;\n  }\n}\nfunction flipTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"bottom\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.FlipLeft;\n    case \"left\":\n      return TransitionDefaults.FlipRight;\n    case \"bottom\":\n      return TransitionDefaults.FlipUp;\n    case \"top\":\n      return TransitionDefaults.FlipDown;\n  }\n}\n\n// ../../library/src/components/reduceNavigationStateForAction.ts\nvar defaultState = () => ({\n  current: -1,\n  previous: -1,\n  currentOverlay: -1,\n  previousOverlay: -1,\n  visualIndex: 0,\n  overlayItemId: 0,\n  historyItemId: 0,\n  history: [],\n  overlayStack: [],\n  containers: {},\n  containerIndex: {},\n  containerVisualIndex: {},\n  containerIsRemoved: {},\n  transitionForContainer: {},\n  previousTransition: null\n});\nfunction reduceNavigationStateForAction(state, action) {\n  switch (action.type) {\n    case \"addOverlay\":\n      return addOverlay(state, action.transition, action.component);\n    case \"removeOverlay\":\n      return removeOverlay(state);\n    case \"add\":\n      return add(state, action.key, action.transition, action.component);\n    case \"remove\":\n      return remove(state);\n    case \"update\":\n      return updateComponent(state, action.key, action.component);\n    case \"back\":\n      return back(state);\n    case \"forward\":\n      return forward(state);\n    default:\n      return;\n  }\n}\nfunction updateComponent(currentState, key7, component) {\n  return {\n    ...currentState,\n    containers: {\n      ...currentState.containers,\n      [key7]: component\n    }\n  };\n}\nfunction addOverlay(currentState, transition, component) {\n  const currentOverlay = currentState.overlayStack[currentState.currentOverlay];\n  if (currentOverlay && currentOverlay.component === component)\n    return;\n  const overlayItemId = currentState.overlayItemId + 1;\n  const overlayStack = [\n    ...currentState.overlayStack,\n    {\n      key: `stack-${overlayItemId}`,\n      component,\n      transition\n    }\n  ];\n  return {\n    ...currentState,\n    overlayStack,\n    overlayItemId,\n    currentOverlay: Math.max(0, Math.min(currentState.currentOverlay + 1, overlayStack.length - 1)),\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction removeOverlay(currentState) {\n  return {\n    ...currentState,\n    overlayStack: [],\n    currentOverlay: -1,\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction add(currentState, key7, transition, component) {\n  if (!currentState.containers[key7])\n    currentState.containers[key7] = component;\n  currentState.history = currentState.history.slice(0, currentState.current + 1);\n  currentState.visualIndex = Math.max(currentState.history.length, 0);\n  const currentItem = currentState.history[currentState.history.length - 1];\n  const isCurrentScreen = currentItem && currentItem.key === key7;\n  currentState.overlayStack = [];\n  if (isCurrentScreen && currentState.currentOverlay > -1) {\n    return {\n      ...currentState,\n      currentOverlay: -1,\n      previousOverlay: currentState.currentOverlay\n    };\n  }\n  if (isCurrentScreen)\n    return;\n  const nextIndex = currentState.containerVisualIndex[key7];\n  const removed = currentState.containerIsRemoved[key7];\n  const shouldMoveForward = (currentItem == null ? void 0 : currentItem.key) && transition.withMagicMotion ? isNextTargetForward(key7, nextIndex, removed, currentState.history) : true;\n  currentState.history.push({\n    key: key7,\n    transition,\n    visualIndex: shouldMoveForward ? Math.max(currentState.visualIndex, 0) : currentState.containerVisualIndex[key7]\n  });\n  const current = currentState.current + 1;\n  const previous = currentState.current;\n  for (const containerKey in currentState.containerIndex) {\n    if (currentState.containerIndex[containerKey] === current) {\n      currentState.containerIndex[containerKey] = findLatestHistoryIndex(containerKey, currentState.history);\n    }\n  }\n  currentState.containerIndex[key7] = current;\n  const { containerVisualIndex, containerIsRemoved } = magicMotionPropsForAdd(currentState, key7, shouldMoveForward);\n  const transitionForContainer = updateTransitions(\n    current,\n    previous,\n    currentState.history,\n    currentState.containerIndex,\n    currentState.transitionForContainer\n  );\n  return {\n    ...currentState,\n    current,\n    previous,\n    containerVisualIndex,\n    containerIsRemoved,\n    transitionForContainer,\n    previousTransition: null,\n    currentOverlay: -1,\n    historyItemId: currentState.historyItemId + 1,\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction back(currentState) {\n  const containers = { ...currentState.containers };\n  const nextState = remove(currentState);\n  if (!nextState)\n    return;\n  nextState.containers = containers;\n  return nextState;\n}\nfunction forward(currentState) {\n  const nextItem = currentState.history[currentState.current + 1];\n  if (!nextItem)\n    return;\n  const { key: key7, transition, component } = nextItem;\n  const history = [...currentState.history];\n  const nextState = add(currentState, key7, transition, component);\n  if (!nextState)\n    return;\n  nextState.history = history;\n  return nextState;\n}\nfunction remove(currentState) {\n  const history = [...currentState.history.slice(0, currentState.current + 1)];\n  if (history.length === 1)\n    return;\n  const currentItem = history.pop();\n  if (!currentItem)\n    return;\n  const target = history[history.length - 1];\n  assert(target, \"The navigation history must have at least one component\");\n  currentState.containerIndex[target.key] = history.length - 1;\n  const shouldRemoveContainer = history.every((item) => item.key !== currentItem.key);\n  if (shouldRemoveContainer) {\n    delete currentState.containers[currentItem.key];\n  }\n  const current = currentState.current - 1;\n  const previous = currentState.current;\n  const { containerIsRemoved, containerVisualIndex, previousTransition, visualIndex } = magicMotionPropsForRemove(\n    currentState,\n    target,\n    currentItem\n  );\n  const transitionForContainer = updateTransitions(\n    current,\n    previous,\n    currentState.history,\n    currentState.containerIndex,\n    currentState.transitionForContainer\n  );\n  return {\n    ...currentState,\n    current,\n    previous,\n    containerIsRemoved,\n    containerVisualIndex,\n    previousTransition,\n    visualIndex,\n    transitionForContainer\n  };\n}\nfunction magicMotionPropsForAdd(currentState, nextKey, shouldMoveForward) {\n  const update = {\n    containerVisualIndex: { ...currentState.containerVisualIndex },\n    containerIsRemoved: { ...currentState.containerIsRemoved }\n  };\n  if (shouldMoveForward) {\n    update.containerVisualIndex[nextKey] = currentState.history.length - 1;\n    update.containerIsRemoved[nextKey] = false;\n  } else {\n    const nextVisualIndex = currentState.containerVisualIndex[nextKey];\n    for (const [key7, visualIndex] of Object.entries(currentState.containerVisualIndex)) {\n      if (nextVisualIndex !== void 0 && visualIndex > nextVisualIndex) {\n        update.containerIsRemoved[key7] = true;\n      }\n    }\n  }\n  return update;\n}\nfunction magicMotionPropsForRemove(currentState, target, currentItem) {\n  const validTargets = [target.key, currentItem.key];\n  const nextValidTarget = currentState.history[currentState.history.length - 2];\n  const previousTransition = currentState.previousTransition === null ? null : { ...currentState.previousTransition };\n  const update = {\n    containerIsRemoved: { ...currentState.containerIsRemoved },\n    containerVisualIndex: { ...currentState.containerVisualIndex },\n    previousTransition,\n    visualIndex: currentState.visualIndex\n  };\n  if (nextValidTarget)\n    validTargets.push(nextValidTarget.key);\n  const targetVisualIndex = currentState.containerVisualIndex[target.key];\n  const currentVisualIndex = currentState.containerVisualIndex[currentItem.key];\n  const shouldRemoveLastKey = targetVisualIndex !== void 0 && currentVisualIndex !== void 0 && targetVisualIndex <= currentVisualIndex || target.visualIndex !== void 0 && target.visualIndex < currentState.history.length - 1;\n  const nextIndex = target.visualIndex;\n  if (shouldRemoveLastKey) {\n    update.containerIsRemoved[currentItem.key] = true;\n    update.containerVisualIndex[target.key] = nextIndex !== void 0 ? nextIndex : currentState.history.length - 1;\n  } else {\n    update.visualIndex = currentState.visualIndex + 1;\n    update.containerVisualIndex[target.key] = currentState.visualIndex + 1;\n  }\n  if (currentItem.transition.withMagicMotion)\n    update.previousTransition = currentItem.transition || null;\n  currentState.containerIsRemoved[target.key] = false;\n  return update;\n}\nfunction findLatestHistoryIndex(key7, history) {\n  var _a;\n  for (let index = history.length; index > history.length; index--) {\n    if (((_a = history[index]) == null ? void 0 : _a.key) === key7)\n      return index;\n  }\n  return -1;\n}\nfunction updateTransitions(current, previous, history, containerIndex, transitionForContainer) {\n  const transitions = { ...transitionForContainer };\n  for (const [key7, screenIndex] of Object.entries(containerIndex)) {\n    const transition = transitionForScreen(screenIndex, { current, previous, history });\n    if (transition) {\n      transitions[key7] = transition;\n    }\n  }\n  return transitions;\n}\nfunction isNextTargetForward(key7, index, removed, history) {\n  if (removed || index === void 0)\n    return true;\n  if (index === 0)\n    return false;\n  const forwardHistory = history.slice(index, history.length);\n  if (forwardHistory.findIndex((item) => item.key === key7) > -1)\n    return true;\n  const backwardsHistory = history.slice(0, index - 1);\n  if (backwardsHistory.findIndex((item) => item.key === key7) > -1)\n    return false;\n  return true;\n}\nfunction transitionForScreen(screenIndex, stackState) {\n  const { current, previous, history } = stackState;\n  if (screenIndex !== current && screenIndex !== previous)\n    return void 0;\n  if (screenIndex === current && current > previous) {\n    const item = history[screenIndex];\n    return sequence(\"enter\", item == null ? void 0 : item.transition.enter, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === previous && current > previous) {\n    const item = history[screenIndex + 1];\n    return sequence(\"exit\", item == null ? void 0 : item.transition.exit, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === current && current < previous) {\n    const item = history[screenIndex + 1];\n    return sequence(\"enter\", item == null ? void 0 : item.transition.exit, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === previous && current < previous) {\n    const item = history[screenIndex];\n    return sequence(\"exit\", item == null ? void 0 : item.transition.enter, item == null ? void 0 : item.transition.animation);\n  }\n}\nvar allAnimatableKeys = /* @__PURE__ */ objectKeys(allAnimatableProperties);\nfunction sequence(direction, transition, animation) {\n  const value = {};\n  const from = {};\n  allAnimatableKeys.forEach((property) => {\n    value[property] = allAnimatableProperties[property];\n    from[property] = {\n      ...animation,\n      from: allAnimatableProperties[property]\n    };\n  });\n  if (transition) {\n    Object.keys(transition).forEach((property) => {\n      if (transition[property] === void 0)\n        return;\n      const transitionTo = transition[property];\n      const transitionFrom = typeof transition[property] === \"string\" ? `${asRecord(allAnimatableProperties)[property]}%` : asRecord(allAnimatableProperties)[property];\n      asRecord(value)[property] = direction === \"enter\" ? transitionFrom : transitionTo;\n      from[property] = {\n        ...animation,\n        from: direction === \"enter\" ? transitionTo : transitionFrom,\n        velocity: 0\n      };\n    });\n  }\n  return {\n    ...value,\n    transition: {\n      ...from\n    }\n  };\n}\n\n// ../../library/src/components/Navigation.tsx\nimport { jsx as jsx25, jsxs as jsxs8 } from \"react/jsx-runtime\";\nvar NavigationConsumer = /* @__PURE__ */ (() => NavigationContext.Consumer)();\nvar NavigationCallbackContext = /* @__PURE__ */ React31.createContext(void 0);\nvar NavigationCallbackProvider = /* @__PURE__ */ (() => NavigationCallbackContext.Provider)();\nvar IsInitialNavigationContext = /* @__PURE__ */ React31.createContext(void 0);\nvar Navigation = /* @__PURE__ */ (() => {\n  var _lastEventTimeStamp, _a, _getStackState, getStackState_fn, _isSameEventTransition, isSameEventTransition_fn, _navigationAction, _transition, transition_fn;\n  return _a = class extends Component6 {\n    constructor(props) {\n      var _a2;\n      super(props);\n      __privateAdd(this, _getStackState);\n      /**\n       * To prevent bubbling events from triggering multiple transitions,\n       * we ensure that the current event has a different timestamp then the event that triggered the last transition.\n       * We use Window.event to ensure that even transitions invoked by code components - and may not pass a reference to the event - are caught.\n       * This works better than measuring the time of transition calls with performance.now()\n       * because the time between calls can get longer and longer as more screens are added to the stack,\n       * preventing a deterministic time between transitions to be used to determine if they were triggered at the same time or not.\n       */\n      __privateAdd(this, _isSameEventTransition);\n      __privateAdd(this, _transition);\n      __privateAdd(this, _lastEventTimeStamp, null);\n      __publicField(this, \"state\", defaultState());\n      __privateAdd(this, _navigationAction, (action) => {\n        if (!this.props.enabled && this.state.history.length > 0)\n          return;\n        const newState = reduceNavigationStateForAction(this.state, action);\n        if (!newState)\n          return;\n        const { skipLayoutAnimation } = this.props;\n        const historyItem = newState.history[newState.current];\n        const withMagicMotion = action.type === \"add\" && action.transition.withMagicMotion || action.type === \"forward\" && (historyItem == null ? void 0 : historyItem.transition.withMagicMotion) || action.type === \"remove\" && !!newState.previousTransition;\n        const updateState = () => {\n          var _a2;\n          this.setState(newState);\n          if (historyItem == null ? void 0 : historyItem.key) {\n            (_a2 = this.context) == null ? void 0 : _a2.call(this, historyItem.key);\n          }\n        };\n        if (skipLayoutAnimation && !withMagicMotion) {\n          skipLayoutAnimation(updateState);\n        } else {\n          updateState();\n        }\n      });\n      __publicField(this, \"goBack\", () => {\n        var _a2;\n        if (__privateMethod(this, _isSameEventTransition, isSameEventTransition_fn).call(this))\n          return;\n        __privateSet(this, _lastEventTimeStamp, ((_a2 = globalThis.event) == null ? void 0 : _a2.timeStamp) || null);\n        if (this.state.currentOverlay !== -1)\n          return __privateGet(this, _navigationAction).call(this, { type: \"removeOverlay\" });\n        return __privateGet(this, _navigationAction).call(this, { type: \"remove\" });\n      });\n      const component = this.props.children;\n      if (!component || !isReactChild(component) || !isReactElement(component))\n        return;\n      const transition = { ...TransitionDefaults.Instant };\n      const key7 = ((_a2 = component.key) == null ? void 0 : _a2.toString()) || `stack-${this.state.historyItemId + 1}`;\n      const action = { type: \"add\", key: key7, transition, component };\n      const newState = reduceNavigationStateForAction(this.state, action);\n      if (!newState)\n        return;\n      this.state = newState;\n    }\n    componentDidMount() {\n      var _a2;\n      const historyItem = this.state.history[this.state.current];\n      if (!historyItem)\n        return;\n      (_a2 = this.context) == null ? void 0 : _a2.call(this, historyItem.key);\n    }\n    UNSAFE_componentWillReceiveProps(props) {\n      var _a2;\n      const component = props[\"children\"];\n      if (!isReactChild(component) || !isReactElement(component))\n        return;\n      const key7 = (_a2 = component.key) == null ? void 0 : _a2.toString();\n      if (!key7)\n        return;\n      if (this.state.history.length === 0) {\n        __privateMethod(this, _transition, transition_fn).call(this, component, TransitionDefaults.Instant);\n      } else {\n        __privateGet(this, _navigationAction).call(this, { type: \"update\", key: key7, component });\n      }\n    }\n    componentWillUnmount() {\n      var _a2, _b;\n      (_b = (_a2 = this.props).resetProjection) == null ? void 0 : _b.call(_a2);\n    }\n    instant(component) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, TransitionDefaults.Instant, void 0);\n    }\n    fade(component, options) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, TransitionDefaults.Fade, options);\n    }\n    push(component, options) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, pushTransition(options), options);\n    }\n    modal(component, options) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, TransitionDefaults.Modal, options);\n    }\n    overlay(component, options) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, overlayTransition(options), options);\n    }\n    flip(component, options) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, flipTransition(options), options);\n    }\n    magicMotion(component, options) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, TransitionDefaults.MagicMotion, options);\n    }\n    customTransition(component, transition) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, transition);\n    }\n    render() {\n      var _a2, _b, _c, _d, _e;\n      const stackState = __privateMethod(this, _getStackState, getStackState_fn).call(this, { overCurrentContext: false });\n      const overlayStackState = __privateMethod(this, _getStackState, getStackState_fn).call(this, { overCurrentContext: true });\n      const activeOverlay = activeOverlayItem(overlayStackState);\n      const isOverlayVisible = overlayStackState.current > -1;\n      const isInitial = this.state.history.length === 1;\n      const contentContainers = [];\n      for (const [key7, component] of Object.entries(this.state.containers)) {\n        const index = this.state.containerIndex[key7];\n        assert(index !== void 0, \"Container's index must be registered\");\n        const visualIndex = this.state.containerVisualIndex[key7];\n        assert(visualIndex !== void 0, \"Container's visual index must be registered\");\n        const removed = this.state.containerIsRemoved[key7];\n        const historyItem = this.state.history[index];\n        const transitionProps = this.state.transitionForContainer[key7];\n        const isCurrent = index === this.state.current;\n        const isPrevious = index === this.state.previous;\n        const areMagicMotionLayersPresent = isCurrent ? false : removed;\n        const withMagicMotion = ((_a2 = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _a2.withMagicMotion) || isCurrent && !!this.state.previousTransition;\n        contentContainers.push(\n          /* @__PURE__ */ jsx25(\n            NavigationContainer,\n            {\n              id: key7,\n              index: visualIndex,\n              isInitial,\n              isCurrent,\n              isPrevious,\n              isOverlayed: isOverlayVisible,\n              visible: isCurrent || isPrevious,\n              position: (_b = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _b.position,\n              instant: isInstantContainerTransition(index, stackState),\n              transitionProps,\n              animation: animationPropsForContainer(index, stackState),\n              backfaceVisible: getBackfaceVisibleForScreen(index, stackState),\n              exitAnimation: (_c = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _c.animation,\n              exitBackfaceVisible: (_d = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _d.backfaceVisible,\n              exitProps: (_e = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _e.enter,\n              withMagicMotion,\n              areMagicMotionLayersPresent: areMagicMotionLayersPresent ? false : void 0,\n              children: /* @__PURE__ */ jsx25(MagicMotionCrossfadeRoot, { children: containerContent({\n                component,\n                transition: historyItem == null ? void 0 : historyItem.transition\n              }) })\n            },\n            key7\n          )\n        );\n      }\n      const overlayContainers = this.state.overlayStack.map((item, stackIndex) => {\n        return /* @__PURE__ */ jsx25(\n          NavigationContainer,\n          {\n            isLayeredContainer: true,\n            isCurrent: stackIndex === this.state.currentOverlay,\n            position: item.transition.position,\n            initialProps: initialPropsForOverlay(stackIndex, overlayStackState),\n            transitionProps: transitionPropsForOverlay(stackIndex, overlayStackState),\n            instant: isInstantContainerTransition(stackIndex, overlayStackState, true),\n            animation: animationPropsForContainer(stackIndex, overlayStackState),\n            exitProps: item.transition.enter,\n            visible: containerIsVisible(stackIndex, overlayStackState),\n            backdropColor: backdropColorForTransition(item.transition),\n            backfaceVisible: getBackfaceVisibleForOverlay(stackIndex, overlayStackState),\n            onTapBackdrop: backdropTapAction(item.transition, this.goBack),\n            index: this.state.current + 1 + stackIndex,\n            children: containerContent({\n              component: item.component,\n              transition: item.transition\n            })\n          },\n          item.key\n        );\n      });\n      return /* @__PURE__ */ jsx25(\n        FrameWithMotion,\n        {\n          \"data-framer-component-type\": \"NavigationRoot\",\n          top: 0,\n          left: 0,\n          width: \"100%\",\n          height: \"100%\",\n          position: \"relative\",\n          style: {\n            overflow: \"hidden\",\n            backgroundColor: \"unset\",\n            pointerEvents: void 0,\n            ...this.props.style\n          },\n          children: /* @__PURE__ */ jsx25(NavigationContext.Provider, { value: this, children: /* @__PURE__ */ jsxs8(IsInitialNavigationContext.Provider, { value: isInitial, children: [\n            /* @__PURE__ */ jsx25(\n              NavigationContainer,\n              {\n                isLayeredContainer: true,\n                position: void 0,\n                initialProps: {},\n                instant: false,\n                transitionProps: transitionPropsForStackWrapper(activeOverlay),\n                animation: animationForStackWrapper(activeOverlay),\n                backfaceVisible: backfaceVisibleForStackWrapper(activeOverlay),\n                visible: true,\n                backdropColor: void 0,\n                onTapBackdrop: void 0,\n                index: 0,\n                children: /* @__PURE__ */ jsx25(LayoutIdProvider, { children: /* @__PURE__ */ jsx25(SharedLayoutRoot, { children: /* @__PURE__ */ jsx25(AnimatePresence, { presenceAffectsLayout: false, children: contentContainers }) }) })\n              }\n            ),\n            /* @__PURE__ */ jsx25(AnimatePresence, { children: overlayContainers })\n          ] }) })\n        }\n      );\n    }\n  }, _lastEventTimeStamp = new WeakMap(), _getStackState = new WeakSet(), getStackState_fn = function(options) {\n    const { current, previous, currentOverlay, previousOverlay } = this.state;\n    if (options.overCurrentContext) {\n      return {\n        current: currentOverlay,\n        previous: previousOverlay,\n        history: this.state.overlayStack\n      };\n    }\n    return {\n      current,\n      previous,\n      history: this.state.history\n    };\n  }, _isSameEventTransition = new WeakSet(), isSameEventTransition_fn = function() {\n    if (!globalThis.event)\n      return false;\n    return __privateGet(this, _lastEventTimeStamp) === globalThis.event.timeStamp;\n  }, _navigationAction = new WeakMap(), _transition = new WeakSet(), transition_fn = function(component, transitionTraits, transitionOptions) {\n    var _a2, _b;\n    if (__privateMethod(this, _isSameEventTransition, isSameEventTransition_fn).call(this))\n      return;\n    __privateSet(this, _lastEventTimeStamp, ((_a2 = globalThis.event) == null ? void 0 : _a2.timeStamp) || null);\n    if (!component || !isReactChild(component) || !isReactElement(component))\n      return;\n    const transition = { ...transitionTraits, ...transitionOptions };\n    const overCurrentContext = !!transition.overCurrentContext;\n    if (overCurrentContext)\n      return __privateGet(this, _navigationAction).call(this, { type: \"addOverlay\", transition, component });\n    const key7 = ((_b = component.key) == null ? void 0 : _b.toString()) || `stack-${this.state.historyItemId + 1}`;\n    __privateGet(this, _navigationAction).call(this, { type: \"add\", key: key7, transition, component });\n  }, __publicField(_a, \"defaultProps\", {\n    enabled: true\n  }), __publicField(_a, \"contextType\", NavigationCallbackContext), _a;\n})();\nvar animationDefault = {\n  stiffness: 500,\n  damping: 50,\n  restDelta: 1,\n  type: \"spring\"\n};\nfunction activeOverlayItem(overlayStack) {\n  let currentOverlayItem;\n  let previousOverlayItem;\n  if (overlayStack.current !== -1) {\n    currentOverlayItem = overlayStack.history[overlayStack.current];\n  } else {\n    previousOverlayItem = overlayStack.history[overlayStack.previous];\n  }\n  return { currentOverlayItem, previousOverlayItem };\n}\nfunction transitionPropsForStackWrapper({ currentOverlayItem }) {\n  return currentOverlayItem && currentOverlayItem.transition.exit;\n}\nfunction animationForStackWrapper({ currentOverlayItem, previousOverlayItem }) {\n  if (currentOverlayItem && currentOverlayItem.transition.animation) {\n    return currentOverlayItem.transition.animation;\n  }\n  if (previousOverlayItem && previousOverlayItem.transition.animation) {\n    return previousOverlayItem.transition.animation;\n  }\n  return animationDefault;\n}\nfunction backfaceVisibleForStackWrapper({ currentOverlayItem, previousOverlayItem }) {\n  if (currentOverlayItem)\n    return currentOverlayItem.transition.backfaceVisible;\n  return previousOverlayItem && previousOverlayItem.transition.backfaceVisible;\n}\nfunction backdropColorForTransition(transition) {\n  if (transition.backdropColor)\n    return transition.backdropColor;\n  if (transition.overCurrentContext)\n    return \"rgba(4,4,15,.4)\";\n  return void 0;\n}\nfunction getBackfaceVisibleForOverlay(containerIndex, stackState) {\n  const { current, history } = stackState;\n  if (containerIndex === current) {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  } else if (containerIndex < current) {\n    const navigationItem = history[containerIndex + 1];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  } else {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  }\n}\nfunction initialPropsForOverlay(containerIndex, stackState) {\n  const navigationItem = stackState.history[containerIndex];\n  if (navigationItem)\n    return navigationItem.transition.enter;\n}\nfunction getBackfaceVisibleForScreen(screenIndex, stackState) {\n  var _a, _b, _c, _d;\n  const { current, previous, history } = stackState;\n  if (screenIndex === previous && current > previous || screenIndex === current && current < previous) {\n    return (_b = (_a = history[screenIndex + 1]) == null ? void 0 : _a.transition) == null ? void 0 : _b.backfaceVisible;\n  }\n  return (_d = (_c = history[screenIndex]) == null ? void 0 : _c.transition) == null ? void 0 : _d.backfaceVisible;\n}\nfunction transitionPropsForOverlay(overlayIndex, stackState) {\n  const { current, history } = stackState;\n  if (overlayIndex === current) {\n    return;\n  } else if (overlayIndex < current) {\n    const navigationItem = history[overlayIndex + 1];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.exit;\n    }\n  } else {\n    const navigationItem = history[overlayIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.enter;\n    }\n  }\n}\nfunction animationPropsForContainer(containerIndex, stackState) {\n  const { current, previous, history } = stackState;\n  const containerCurrent = previous > current ? previous : current;\n  if (containerIndex < containerCurrent) {\n    const navigationItem = history[containerIndex + 1];\n    if (navigationItem && navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  } else if (containerIndex !== containerCurrent) {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  } else {\n    const navigationItem = history[containerIndex];\n    if (navigationItem == null ? void 0 : navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  }\n  return animationDefault;\n}\nfunction isInstantContainerTransition(containerIndex, stackState, overCurrentContext) {\n  const { current, previous, history } = stackState;\n  if (overCurrentContext && history.length > 1)\n    return true;\n  if (containerIndex !== previous && containerIndex !== current)\n    return true;\n  if (current === previous)\n    return true;\n  return false;\n}\nfunction containerIsVisible(containerIndex, stackState) {\n  const { current, previous } = stackState;\n  if (containerIndex > current && containerIndex > previous)\n    return false;\n  if (containerIndex === current)\n    return true;\n  return false;\n}\nfunction containerContent(item) {\n  const content = React31.Children.map(\n    item.component,\n    (child) => {\n      var _a;\n      if (!isReactChild(child) || !isReactElement(child) || !child.props) {\n        return child;\n      }\n      const props = {\n        style: child.props.style ?? {}\n      };\n      const position = (_a = item == null ? void 0 : item.transition) == null ? void 0 : _a.position;\n      const shouldStretchWidth = !position || position.left !== void 0 && position.right !== void 0;\n      const shouldStretchHeight = !position || position.top !== void 0 && position.bottom !== void 0;\n      const canStretchStyle = \"style\" in child.props ? isObject(child.props.style) : true;\n      if (shouldStretchWidth) {\n        const canStretchWidth = \"width\" in child.props;\n        if (canStretchWidth)\n          props.width = \"100%\";\n        if (canStretchStyle)\n          props.style.width = \"100%\";\n      }\n      if (shouldStretchHeight) {\n        const canStretchHeight = \"height\" in child.props;\n        if (canStretchHeight)\n          props.height = \"100%\";\n        if (canStretchStyle)\n          props.style.height = \"100%\";\n      }\n      return React31.cloneElement(child, props);\n    }\n  );\n  return content;\n}\nfunction backdropTapAction(transition, goBackAction) {\n  if (transition.goBackOnTapOutside !== false)\n    return goBackAction;\n}\nfunction NavigationWrapper(props) {\n  const resetProjection = useResetProjection();\n  const skipLayoutAnimation = useInstantLayoutTransition();\n  React31.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  return /* @__PURE__ */ jsx25(Navigation, { ...props, resetProjection, skipLayoutAnimation, children: props.children });\n}\n\n// ../../library/src/components/hoc/WithNavigator.tsx\nvar import_hoist_non_react_statics3 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React32 from \"react\";\n\n// ../../library/src/render/types/NavigationLink.ts\nvar NavigateTo = /* @__PURE__ */ ((NavigateTo2) => {\n  NavigateTo2[\"Previous\"] = \"@Previous\";\n  return NavigateTo2;\n})(NavigateTo || {});\nvar NavigationTransitionType = /* @__PURE__ */ ((NavigationTransitionType2) => {\n  NavigationTransitionType2[\"push\"] = \"push\";\n  NavigationTransitionType2[\"instant\"] = \"instant\";\n  NavigationTransitionType2[\"fade\"] = \"fade\";\n  NavigationTransitionType2[\"modal\"] = \"modal\";\n  NavigationTransitionType2[\"overlay\"] = \"overlay\";\n  NavigationTransitionType2[\"flip\"] = \"flip\";\n  NavigationTransitionType2[\"magicMotion\"] = \"magicMotion\";\n  return NavigationTransitionType2;\n})(NavigationTransitionType || {});\n\n// ../../library/src/components/hoc/WithNavigator.tsx\nimport { jsx as jsx26 } from \"react/jsx-runtime\";\nfunction WithNavigator(BaseComponent, navigationTransition, navigationTransitionDirection, NavigationTarget, navigationTransitionOptions) {\n  const InternalWithNavigator = class extends React32.Component {\n    render() {\n      return /* @__PURE__ */ jsx26(NavigationContext.Consumer, { children: (navigation) => {\n        const navigate = () => {\n          if (navigationTransition === \"goBack\") {\n            navigation.goBack();\n            return;\n          }\n          if (!NavigationTarget)\n            return;\n          const component = NavigationTarget();\n          const appearsFrom = transitionDirectionToSide(navigationTransitionDirection);\n          switch (navigationTransition) {\n            case \"instant\" /* instant */:\n              navigation.instant(component);\n              break;\n            case \"fade\" /* fade */:\n              navigation.fade(component);\n              break;\n            case \"modal\" /* modal */:\n              navigation.modal(component, navigationTransitionOptions);\n              break;\n            case \"push\" /* push */:\n              navigation.push(component, { appearsFrom });\n              break;\n            case \"overlay\" /* overlay */:\n              navigation.overlay(component, {\n                ...navigationTransitionOptions,\n                appearsFrom\n              });\n              break;\n            case \"flip\" /* flip */:\n              navigation.flip(component, { appearsFrom });\n              break;\n            case \"magicMotion\" /* magicMotion */:\n              navigation.magicMotion(component, {});\n              break;\n          }\n        };\n        const { onTap, ...props } = this.props;\n        if (onTap) {\n          props.onTap = (...args) => {\n            onTap.apply(this, args);\n            navigate.apply(this, args);\n          };\n        } else {\n          props.onTap = navigate;\n        }\n        return /* @__PURE__ */ jsx26(BaseComponent, { ...props });\n      } });\n    }\n  };\n  (0, import_hoist_non_react_statics3.default)(InternalWithNavigator, BaseComponent);\n  return InternalWithNavigator;\n}\nfunction transitionDirectionToSide(direction) {\n  switch (direction) {\n    case \"left\":\n      return \"right\";\n    case \"right\":\n      return \"left\";\n    case \"up\":\n      return \"bottom\";\n    case \"down\":\n      return \"top\";\n  }\n}\n\n// ../../library/src/components/AnimateLayout/AnimateSharedLayout.tsx\nvar AnimateSharedLayout = (props) => props.children;\n\n// ../../library/src/components/Draggable.ts\nvar Draggable = /* @__PURE__ */ WithDragging(DeprecatedFrameWithEvents);\n\n// ../../library/src/components/Pagination/InfiniteScroll.tsx\nimport React33 from \"react\";\nimport { jsx as jsx27 } from \"react/jsx-runtime\";\nfunction useInfiniteScroll({\n  ref: elementRef,\n  loadMore,\n  rootMargin = \"0px\",\n  threshold,\n  paginationInfo\n}) {\n  const callback = React33.useCallback(\n    (entries) => {\n      for (let i = 0; i < entries.length; ++i) {\n        const entry = entries[i];\n        if (entry.isIntersecting) {\n          loadMore();\n          return;\n        }\n      }\n    },\n    [loadMore]\n  );\n  React33.useEffect(() => {\n    if (!elementRef.current)\n      return;\n    const observer = new IntersectionObserver(callback, {\n      rootMargin,\n      threshold\n    });\n    observer.observe(elementRef.current);\n    return () => {\n      observer.disconnect();\n    };\n  }, [elementRef, callback, rootMargin, threshold, paginationInfo.currentPage]);\n}\nfunction withInfiniteScroll(Component18) {\n  return React33.forwardRef(\n    ({ __paginationInfo, __loadMore, ...props }, ref) => {\n      const backupRef = React33.useRef(null);\n      const infiniteScrollRef = ref ?? backupRef;\n      useInfiniteScroll({\n        rootMargin: \"500px\",\n        loadMore: __loadMore,\n        ref: infiniteScrollRef,\n        paginationInfo: __paginationInfo\n      });\n      return /* @__PURE__ */ jsx27(Component18, { ...props, ref: infiniteScrollRef });\n    }\n  );\n}\n\n// ../../library/src/components/Page/EmulatedPage.tsx\nvar import_process2 = __toESM(require_browser(), 1);\nimport React36 from \"react\";\n\n// ../../library/src/components/Scroll/useWheelScroll.ts\nimport { useCallback as useCallback6, useRef as useRef12 } from \"react\";\n\n// ../../library/src/render/utils/debounce.ts\nfunction debounce(fn, time) {\n  let timeout;\n  const debounced = (...args) => {\n    safeWindow.clearTimeout(timeout);\n    timeout = safeWindow.setTimeout(fn, time, ...args);\n  };\n  const cancel = () => {\n    safeWindow.clearTimeout(timeout);\n  };\n  debounced.cancel = cancel;\n  return debounced;\n}\n\n// ../../library/src/components/Scroll/useWheelScroll.ts\nfunction useWheelScroll(ref, {\n  enabled,\n  initial,\n  prev,\n  direction,\n  constraints,\n  offsetX,\n  offsetY,\n  onScrollStart,\n  onScroll,\n  onScrollEnd\n}) {\n  const isWheelScrollActive = useRef12(false);\n  const getPointData = useCallback6(() => {\n    const point = getPoint(offsetX, offsetY);\n    const data2 = {\n      point,\n      velocity: { x: offsetX.getVelocity(), y: offsetY.getVelocity() },\n      offset: { x: point.x - initial.x, y: point.y - initial.y },\n      delta: { x: point.x - prev.x, y: point.y - prev.y }\n    };\n    prev.x = point.x;\n    prev.y = point.y;\n    return data2;\n  }, []);\n  let handler;\n  if (enabled) {\n    let clampX2 = function(v) {\n      return constraints.current === null ? v : clamp2(v, constraints.current.left, constraints.current.right);\n    }, clampY2 = function(v) {\n      return constraints.current === null ? v : clamp2(v, constraints.current.top, constraints.current.bottom);\n    }, updateX2 = function(delta) {\n      offsetX.stop();\n      offsetX.set(clampX2(offsetX.get() - delta));\n    }, updateY2 = function(delta) {\n      offsetY.stop();\n      offsetY.set(clampY2(offsetY.get() - delta));\n    };\n    var clampX = clampX2, clampY = clampY2, updateX = updateX2, updateY = updateY2;\n    const debouncedOnScrollEnd = debounce(() => {\n      onScrollEnd && onScrollEnd(getPointData());\n      isWheelScrollActive.current = false;\n    }, 200);\n    handler = (e) => {\n      e.preventDefault();\n      if (!isWheelScrollActive.current) {\n        const x = offsetX.get();\n        const y = offsetY.get();\n        initial.x = x;\n        initial.y = y;\n        prev.x = x;\n        prev.y = y;\n        onScrollStart && onScrollStart(getPointData());\n        isWheelScrollActive.current = true;\n      }\n      switch (direction) {\n        case \"horizontal\":\n          updateX2(e.deltaX);\n          break;\n        case \"vertical\":\n          updateY2(e.deltaY);\n          break;\n        default:\n          updateX2(e.deltaX);\n          updateY2(e.deltaY);\n      }\n      onScroll && onScroll(getPointData());\n      debouncedOnScrollEnd();\n    };\n  }\n  useDomEvent(ref, \"wheel\", handler, { passive: false });\n}\nfunction getPoint(x, y) {\n  return { x: x.get(), y: y.get() };\n}\n\n// ../../library/src/components/utils/paddingFromProps.ts\nfunction hasPaddingPerSide(props) {\n  const { paddingPerSide, paddingTop, paddingBottom, paddingLeft, paddingRight } = props;\n  return paddingPerSide !== false && (paddingTop !== void 0 || paddingBottom !== void 0 || paddingLeft !== void 0 || paddingRight !== void 0);\n}\nfunction paddingFromProps(props) {\n  const { padding = 0, paddingTop, paddingBottom, paddingLeft, paddingRight } = props;\n  if (hasPaddingPerSide(props)) {\n    return {\n      top: paddingTop !== void 0 ? paddingTop : padding,\n      bottom: paddingBottom !== void 0 ? paddingBottom : padding,\n      left: paddingLeft !== void 0 ? paddingLeft : padding,\n      right: paddingRight !== void 0 ? paddingRight : padding\n    };\n  }\n  return {\n    top: padding,\n    bottom: padding,\n    left: padding,\n    right: padding\n  };\n}\nfunction makePaddingString({\n  top,\n  left,\n  bottom,\n  right\n}) {\n  if (top === right && right === bottom && bottom === left) {\n    return `${top}px`;\n  }\n  return `${top}px ${right}px ${bottom}px ${left}px`;\n}\n\n// ../../library/src/components/Stack/Stack.tsx\nimport React35 from \"react\";\n\n// ../../library/src/modules/useSafariGapFix.tsx\nimport React34 from \"react\";\nfunction triggerStackReflow(element, display) {\n  if (!element)\n    return;\n  element.style.display = \"none\";\n  void element.offsetHeight;\n  element.style.display = display;\n}\nvar requiresPolyfill = /* @__PURE__ */ (() => Boolean(isSafari() && safariVersion() < 15.4))();\nfunction useSafariGapFix(gap, ref, display) {\n  if (!requiresPolyfill)\n    return void 0;\n  const isInitialRender = React34.useRef(true);\n  const hasTriggeredReflow = React34.useRef(false);\n  const prevGapValue = React34.useRef(gap);\n  hasTriggeredReflow.current = false;\n  React34.useLayoutEffect(() => {\n    prevGapValue.current = gap;\n    if (isInitialRender.current) {\n      isInitialRender.current = false;\n      return;\n    }\n    if (!hasTriggeredReflow.current) {\n      triggerStackReflow(ref.current, display);\n      hasTriggeredReflow.current = true;\n    }\n  }, [gap, ref, prevGapValue, display]);\n  return React34.useCallback(() => {\n    if (prevGapValue.current === gap)\n      return;\n    if (!hasTriggeredReflow.current)\n      triggerStackReflow(ref.current, display);\n    hasTriggeredReflow.current = true;\n  }, [gap, ref]);\n}\n\n// ../../library/src/components/Stack/Stack.tsx\nimport { jsx as jsx28 } from \"react/jsx-runtime\";\nvar Stack = /* @__PURE__ */ (() => {\n  const StackInner = React35.forwardRef(\n    function StackInner2(stackProps, forwardedRef) {\n      const {\n        as = \"div\",\n        direction = \"vertical\",\n        distribution = \"start\",\n        alignment = \"center\",\n        gap = 10,\n        wrap: wrap2 = false,\n        useFlexboxGap: externalUseFlexboxGap = true,\n        children,\n        style: styleProp,\n        className: className2,\n        willChangeTransform,\n        __fromCodeComponentNode,\n        parentSize,\n        __contentWrapperStyle,\n        ...containerProps\n      } = stackProps;\n      const useFlexboxGap = Boolean(externalUseFlexboxGap || wrap2);\n      const stackRef = React35.useRef(null);\n      const onBeforeLayoutMeasure = useSafariGapFix(gap, stackRef, \"flex\");\n      const flexDirection = toFlexDirection(direction);\n      const isReverse = isReverseDirection(flexDirection);\n      const justifyContent = toJustifyOrAlignment(distribution);\n      const padding = hasPaddingPerSide(containerProps) || containerProps.padding ? makePaddingString(paddingFromProps(containerProps)) : void 0;\n      const style = { ...styleProp };\n      Layer.applyWillChange({ willChangeTransform }, style, true);\n      if (__fromCodeComponentNode && !constraintsEnabled(unwrapFrameProps(containerProps))) {\n        containerProps.width = \"100%\";\n        containerProps.height = \"100%\";\n        containerProps._constraints = { enabled: true };\n      }\n      const layoutId = useLayoutId(stackProps);\n      const { children: _children, props } = processOverrideForwarding(containerProps, children);\n      const widthType = containerProps.widthType ?? (containerProps.width === \"auto\" ? 2 /* Auto */ : 0 /* FixedNumber */);\n      const heightType = containerProps.heightType ?? (containerProps.height === \"auto\" ? 2 /* Auto */ : 0 /* FixedNumber */);\n      const fractionChildren = handleFraction(_children, direction, widthType, heightType);\n      const gapChildren = wrapInGapElementForLegacyGap(\n        fractionChildren,\n        gap,\n        flexDirection,\n        justifyContent,\n        useFlexboxGap,\n        wrap2\n      );\n      const content = useProvideParentSize(gapChildren, parentSize ?? 1 /* Disabled */);\n      const attributes = {\n        \"data-framer-component-type\": \"Stack\"\n      };\n      const fromCanvasComponent = containerProps.__fromCanvasComponent;\n      if (fromCanvasComponent)\n        attributes[\"data-framer-generated\"] = true;\n      const alignItems = toJustifyOrAlignment(alignment);\n      const contentWrapperStyle = {\n        display: \"flex\",\n        flexDirection,\n        flexWrap: wrap2 ? \"wrap\" : \"nowrap\",\n        justifyContent,\n        alignItems,\n        alignContent: alignItems,\n        padding,\n        ...__contentWrapperStyle\n      };\n      const gapEnabled = isGapEnabled(gap, justifyContent, wrap2);\n      if (useFlexboxGap && gapEnabled) {\n        const gapSupportedInMainAxis = isGapSupportedInMainAxis(justifyContent);\n        if (gapSupportedInMainAxis || direction !== \"horizontal\") {\n          asRecord(contentWrapperStyle)[\"--stack-native-column-gap\"] = `${gap}px`;\n        }\n        if (gapSupportedInMainAxis || direction !== \"vertical\") {\n          asRecord(contentWrapperStyle)[\"--stack-native-row-gap\"] = `${gap}px`;\n        }\n      }\n      if (contentWrapperStyle.width === void 0) {\n        contentWrapperStyle.width = widthType === 2 /* Auto */ ? \"min-content\" : \"100%\";\n      }\n      if (contentWrapperStyle.height === void 0) {\n        contentWrapperStyle.height = heightType === 2 /* Auto */ ? \"min-content\" : \"100%\";\n      }\n      if (fromCanvasComponent) {\n        if (styleProp == null ? void 0 : styleProp.width)\n          contentWrapperStyle.width = styleProp == null ? void 0 : styleProp.width;\n        if (styleProp == null ? void 0 : styleProp.height)\n          contentWrapperStyle.height = styleProp == null ? void 0 : styleProp.height;\n      }\n      return /* @__PURE__ */ jsx28(\n        FrameWithMotion,\n        {\n          as,\n          background: fromCanvasComponent ? void 0 : \"none\",\n          ...props,\n          layoutId,\n          ref: useForwardedRef(forwardedRef, stackRef),\n          ...attributes,\n          style,\n          className: className2,\n          layoutScroll: true,\n          children: /* @__PURE__ */ jsx28(\n            motion.div,\n            {\n              \"data-framer-stack-content-wrapper\": true,\n              \"data-framer-stack-direction-reverse\": isReverse,\n              \"data-framer-stack-gap-enabled\": gapEnabled,\n              style: contentWrapperStyle,\n              onBeforeLayoutMeasure,\n              children: content\n            }\n          )\n        }\n      );\n    }\n  );\n  StackInner.defaultProps = {\n    distribution: \"start\"\n  };\n  StackInner.displayName = \"Stack\";\n  addPropertyControls(StackInner, {\n    direction: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      options: [\"horizontal\", \"vertical\"],\n      title: \"Direction\",\n      defaultValue: \"vertical\"\n    },\n    distribution: {\n      type: \"enum\" /* Enum */,\n      options: [\"start\", \"center\", \"end\", \"space-between\", \"space-around\", \"space-evenly\"],\n      optionTitles: [\"Start\", \"Center\", \"End\", \"Space Between\", \"Space Around\", \"Space Evenly\"],\n      title: \"Distribute\",\n      defaultValue: \"space-around\"\n    },\n    alignment: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      options: [\"start\", \"center\", \"end\"],\n      title: \"Align\",\n      defaultValue: \"center\"\n    },\n    gap: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Gap\",\n      hidden: (props) => {\n        return props.distribution !== void 0 && [\"space-between\", \"space-around\", \"space-evenly\"].includes(props.distribution);\n      },\n      defaultValue: 10\n    },\n    padding: {\n      type: \"fusednumber\" /* FusedNumber */,\n      toggleKey: \"paddingPerSide\",\n      toggleTitles: [\"Padding\", \"Padding per side\"],\n      valueKeys: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n      valueLabels: [\"t\", \"r\", \"b\", \"l\"],\n      min: 0,\n      title: \"Padding\",\n      defaultValue: 0\n    }\n  });\n  return StackInner;\n})();\nfunction isFractionDimension(dimension) {\n  return typeof dimension === \"string\" && dimension.endsWith(\"fr\");\n}\nfunction fraction(dimension) {\n  const value = parseFloat(dimension);\n  return isFiniteNumber(value) ? value : 0;\n}\nfunction handleFraction(children, direction, widthType, heightType) {\n  return React35.Children.map(children, (child) => {\n    if (!isReactChild(child) || !isReactElement(child))\n      return;\n    const isVertical = direction === \"vertical\";\n    const style = {};\n    let hasFraction = false;\n    const { style: propsStyle, size } = child.props;\n    let { width, height } = child.props;\n    if (size !== void 0) {\n      if (width === void 0)\n        width = size;\n      if (height === void 0)\n        height = size;\n    }\n    let newWidth = width;\n    let newHeight = height;\n    if (isFractionDimension(width)) {\n      hasFraction = true;\n      hasFraction = true;\n      if (isVertical) {\n        if (widthType === 2 /* Auto */) {\n          style.alignSelf = \"stretch\";\n          newWidth = \"auto\";\n        } else {\n          newWidth = `${fraction(width) * 100}%`;\n        }\n      } else {\n        newWidth = 1;\n        style.flexGrow = fraction(width);\n        style.flexBasis = 0;\n      }\n      style.width = newWidth;\n    }\n    if (isFractionDimension(height)) {\n      hasFraction = true;\n      if (isVertical) {\n        newHeight = 1;\n        style.flexGrow = fraction(height);\n        style.flexBasis = 0;\n      } else {\n        if (heightType === 2 /* Auto */) {\n          style.alignSelf = \"stretch\";\n          newHeight = \"auto\";\n        } else {\n          newHeight = `${fraction(height) * 100}%`;\n        }\n      }\n      style.height = newHeight;\n    }\n    if (!hasFraction)\n      return child;\n    const nextStyle = { ...propsStyle, ...style };\n    return React35.cloneElement(child, {\n      width: newWidth,\n      height: newHeight,\n      style: nextStyle\n    });\n  });\n}\nfunction isGapSupportedInMainAxis(justifyContent) {\n  if (!justifyContent)\n    return false;\n  return ![\"space-between\", \"space-around\", \"space-evenly\", \"stretch\"].includes(justifyContent);\n}\nfunction isGapEnabled(gap, justifyContent, wrap2) {\n  if (!gap) {\n    return false;\n  }\n  if (!wrap2 && !isGapSupportedInMainAxis(justifyContent)) {\n    return false;\n  }\n  return true;\n}\nfunction wrapInGapElementForLegacyGap(children, gap, direction, justifyContent, useFlexboxGap, wrap2) {\n  const gapStyle = {\n    // We need the wrapper to have `display: contents` to prevent the child\n    // margins from collapsing when using the fallback gap solution.\n    // https://codesandbox.io/s/dreamy-haslett-01ie5?file=/src/styles.css\n    display: \"contents\"\n  };\n  const gapEnabled = isGapEnabled(gap, justifyContent, wrap2);\n  if (gapEnabled) {\n    const isVertical = isVerticalDirection(direction);\n    asRecord(gapStyle)[\"--stack-gap-x\"] = `${isVertical ? 0 : gap}px`;\n    asRecord(gapStyle)[\"--stack-gap-y\"] = `${isVertical ? gap : 0}px`;\n  }\n  return /* @__PURE__ */ jsx28(\n    \"div\",\n    {\n      \"data-framer-legacy-stack-gap-enabled\": gapEnabled,\n      \"data-framer-stack-flexbox-gap\": useFlexboxGap,\n      style: gapStyle,\n      children\n    }\n  );\n}\nfunction toFlexDirection(direction) {\n  switch (direction) {\n    case \"vertical\":\n      return \"column\";\n    case \"horizontal\":\n      return \"row\";\n    default:\n      return direction;\n  }\n}\nfunction isVerticalDirection(direction) {\n  return direction === \"column\" || direction === \"column-reverse\";\n}\nfunction isReverseDirection(direction) {\n  switch (direction) {\n    case \"column-reverse\":\n    case \"row-reverse\":\n      return true;\n    default:\n      return false;\n  }\n}\nfunction toJustifyOrAlignment(distribution) {\n  switch (distribution) {\n    case \"start\":\n      return \"flex-start\";\n    case \"end\":\n      return \"flex-end\";\n    default:\n      return distribution;\n  }\n}\nfunction useForwardedRef(forwardedRef, innerRef) {\n  return (element) => {\n    innerRef.current = element;\n    if (typeof forwardedRef === \"function\") {\n      forwardedRef(element);\n    } else if (forwardedRef) {\n      forwardedRef.current = element;\n    }\n  };\n}\n\n// ../../library/src/components/Page/PageContainer.tsx\nimport { jsx as jsx29 } from \"react/jsx-runtime\";\nvar pageContentWrapperType = \"PageContentWrapper\";\nfunction PageContainer({\n  children,\n  effect,\n  dragEnabled,\n  direction,\n  contentHeight,\n  contentWidth,\n  alignment,\n  gap,\n  isLastPage,\n  contentOffsetRef,\n  constraintsRef,\n  directionLock,\n  onDragStart,\n  onDrag,\n  onDragEnd,\n  layoutId\n}) {\n  const isHorizontalDirection = direction === \"horizontal\";\n  const dragAxis = isHorizontalDirection ? \"x\" : \"y\";\n  const hasHorizontalGap = isHorizontalDirection && !isLastPage && gap;\n  const hasVerticalGap = !isHorizontalDirection && !isLastPage && gap;\n  const hasAutoWidth = contentWidth !== \"stretch\" && isHorizontalDirection;\n  const hasAutoHeight = contentHeight !== \"stretch\" && !isHorizontalDirection;\n  const wrapperWidth = hasAutoWidth ? \"auto\" : \"100%\";\n  const wrapperHeight = hasAutoHeight ? \"auto\" : \"100%\";\n  const containerWidth = hasHorizontalGap && wrapperWidth === \"100%\" ? `calc(100% + ${gap}px)` : wrapperWidth;\n  const containerHeight = hasVerticalGap && wrapperHeight === \"100%\" ? `calc(100% + ${gap}px)` : wrapperHeight;\n  return /* @__PURE__ */ jsx29(\n    FrameWithMotion,\n    {\n      position: \"relative\",\n      \"data-framer-component-type\": \"PageContainer\",\n      width: containerWidth,\n      height: containerHeight,\n      layoutId: layoutId ? `${layoutId}-container` : void 0,\n      backgroundColor: \"transparent\",\n      drag: dragEnabled ? dragAxis : false,\n      dragDirectionLock: directionLock,\n      _dragX: contentOffsetRef.current.x,\n      _dragY: contentOffsetRef.current.y,\n      dragConstraints: constraintsRef.current,\n      onDrag,\n      onDragStart,\n      onDragEnd,\n      preserve3d: true,\n      style: {\n        pointerEvents: void 0,\n        paddingRight: hasHorizontalGap ? gap : 0,\n        paddingBottom: hasVerticalGap ? gap : 0\n      },\n      children: /* @__PURE__ */ jsx29(\n        FrameWithMotion,\n        {\n          position: \"relative\",\n          \"data-framer-component-type\": pageContentWrapperType,\n          width: wrapperWidth,\n          height: wrapperHeight,\n          preserve3d: false,\n          backgroundColor: \"transparent\",\n          style: {\n            ...effect,\n            pointerEvents: void 0,\n            display: \"flex\",\n            flexDirection: isHorizontalDirection ? \"row\" : \"column\",\n            alignItems: alignment && toJustifyOrAlignment(alignment)\n          },\n          children\n        },\n        effect ? Object.keys(effect).join(\"\") : \"\"\n      )\n    }\n  );\n}\n\n// ../../library/src/components/Page/EmulatedPage.tsx\nimport { jsx as jsx30, jsxs as jsxs9 } from \"react/jsx-runtime\";\nvar Page = /* @__PURE__ */ React36.forwardRef(function Page2(props, forwardedRef) {\n  var _a;\n  const {\n    direction = \"horizontal\",\n    contentWidth = \"stretch\",\n    contentHeight = \"stretch\",\n    alignment = \"start\",\n    currentPage = 0,\n    animateCurrentPageUpdate = true,\n    gap: gapValue = 10,\n    padding: _padding = 0,\n    momentum = false,\n    dragEnabled = true,\n    defaultEffect: _defaultEffect = \"none\",\n    background = \"transparent\",\n    overflow = \"hidden\",\n    __fromCodeComponentNode,\n    effect: _effect,\n    children,\n    contentOffsetX,\n    contentOffsetY,\n    onChangePage,\n    onScrollStart,\n    onScroll,\n    onDragStart,\n    onDrag,\n    onDragEnd,\n    directionLock,\n    onScrollEnd,\n    onDirectionLock: _onDirectionLock,\n    onUpdate: _onUpdate,\n    wheelEnabled = false,\n    layoutId: specificLayoutId,\n    ...rest\n  } = props;\n  const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"page\" });\n  const containerProps = { ...rest, background };\n  const hasMountedRef = React36.useRef(false);\n  const hasFixedSize = RenderTarget.hasRestrictions() && props.__fromCodeComponentNode && isFiniteNumber(containerProps.width) && isFiniteNumber(containerProps.height);\n  if (!hasFixedSize && __fromCodeComponentNode && !containerProps.__fromCanvasComponent) {\n    containerProps.width = \"100%\";\n    containerProps.height = \"100%\";\n    containerProps._constraints = { enabled: true };\n  }\n  const { initial, prev } = React36.useRef({\n    initial: { x: 0, y: 0 },\n    prev: { x: 0, y: 0 }\n  }).current;\n  const isHorizontal = direction === \"horizontal\";\n  let gap = gapValue;\n  if (gap < 0) {\n    warnOnce(`The 'gap' property of Page component can not be negative, but is ${gapValue}.`);\n    gap = 0;\n  }\n  React36.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  const pageCount = React36.Children.count(children);\n  const maxOffsetRef = React36.useRef(0);\n  const constraints = React36.useRef({ top: 0, left: 0, right: 0, bottom: 0 });\n  const fallbackContainerRef = React36.useRef(null);\n  const containerRef = forwardedRef || fallbackContainerRef;\n  const scrollableRef = React36.useRef(null);\n  const pageEffectValuesRef = React36.useRef([]);\n  const pageRectsRef = React36.useRef([]);\n  const internalX = useMotionValue(isMotionValue2(contentOffsetX) ? 0 : contentOffsetX ?? 0);\n  const internalY = useMotionValue(isMotionValue2(contentOffsetY) ? 0 : contentOffsetY ?? 0);\n  const contentOffsetRef = React36.useRef({\n    x: isMotionValue2(contentOffsetX) ? contentOffsetX : internalX,\n    y: isMotionValue2(contentOffsetY) ? contentOffsetY : internalY\n  });\n  const currentContentPageRef = React36.useRef(currentPage);\n  const propsBoundedCurrentPageRef = React36.useRef(currentPage);\n  const latestPropsRef = React36.useRef(props);\n  latestPropsRef.current = props;\n  const lastDirectionRef = React36.useRef(props.direction);\n  const snapToPage = useSnapToPage(currentContentPageRef, contentOffsetRef, isHorizontal);\n  const [_, setForceUpdateCount] = React36.useState(0);\n  const containerSizeRef = React36.useRef({ width: 200, height: 200 });\n  if (hasFixedSize && isFiniteNumber(containerProps.width) && isFiniteNumber(containerProps.height)) {\n    containerSizeRef.current.width = containerProps.width;\n    containerSizeRef.current.height = containerProps.height;\n  }\n  const updateOnResize = React36.useCallback(() => {\n    if (!hasFixedSize)\n      setForceUpdateCount((v) => v + 1);\n  }, [hasFixedSize]);\n  React36.useEffect(() => {\n    if (RenderTarget.current() !== RenderTarget.preview)\n      return;\n    globalThis.addEventListener(\"resize\", updateOnResize);\n    return () => {\n      globalThis.removeEventListener(\"resize\", updateOnResize);\n    };\n  }, [updateOnResize]);\n  const applyEffects = () => {\n    pageEffectValuesRef.current.forEach((effectDictionary, index) => {\n      const values = effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef);\n      if (!effectDictionary || !values)\n        return;\n      for (const [key7, value] of Object.entries(values)) {\n        const effectValue = effectDictionary[key7];\n        if (isMotionValue2(effectValue)) {\n          effectValue.set(value);\n        }\n      }\n    });\n  };\n  const updateMaxOffsetFromPageContents = (containerSize) => {\n    const newPageContentRects = getPageContentRects(containerRef, containerSize, direction, gap);\n    if (newPageContentRects)\n      pageRectsRef.current = newPageContentRects;\n    const newMaxOffset = getMaxOffset(\n      containerSizeRef.current,\n      pageRectsRef.current,\n      direction,\n      latestPropsRef.current\n    );\n    if (newMaxOffset !== maxOffsetRef.current) {\n      maxOffsetRef.current = newMaxOffset;\n      constraints.current.top = -newMaxOffset;\n      constraints.current.left = -newMaxOffset;\n      if (RenderTarget.current() === RenderTarget.canvas)\n        setForceUpdateCount((v) => v + 1);\n    }\n  };\n  const measureContainerSize = () => {\n    const element = containerRef.current;\n    if (!element)\n      return null;\n    const { offsetWidth, offsetHeight } = element;\n    const currentSize = containerSizeRef.current;\n    if (offsetWidth !== currentSize.width || offsetHeight !== currentSize.height) {\n      containerSizeRef.current = {\n        width: offsetWidth,\n        height: offsetHeight\n      };\n      return containerSizeRef.current;\n    }\n    return null;\n  };\n  const updateAndSnapToPage = (newPage, mount = false) => {\n    const newBoundedCurrentPage = getBoundedCurrentPage(newPage, pageCount);\n    const boundedCurrentPageDidChange = newBoundedCurrentPage !== propsBoundedCurrentPageRef.current;\n    if (boundedCurrentPageDidChange) {\n      propsBoundedCurrentPageRef.current = newBoundedCurrentPage;\n      updateCurrentPage(newBoundedCurrentPage, currentContentPageRef, !mount ? onChangePage : void 0);\n    }\n    const offset = offsetForPage(newBoundedCurrentPage, pageCount, pageRectsRef, isHorizontal, maxOffsetRef);\n    const animated = animateCurrentPageUpdate && RenderTarget.current() !== RenderTarget.canvas && !mount;\n    snapToPage(newBoundedCurrentPage, offset, { animated });\n  };\n  useIsomorphicLayoutEffect2(() => {\n    if (hasMountedRef.current)\n      return;\n    requestAnimationFrame(() => {\n      currentContentPageRef.current = currentPage;\n      const contentOffset = contentOffsetRef.current;\n      contentOffset.x.on(\"change\", applyEffects);\n      contentOffset.y.on(\"change\", applyEffects);\n      applyEffects();\n      hasMountedRef.current = true;\n      const containerSize = measureContainerSize() ?? containerSizeRef.current;\n      updateMaxOffsetFromPageContents(containerSize);\n      updateAndSnapToPage(currentContentPageRef.current, true);\n    });\n  }, []);\n  React36.useEffect(() => {\n    if (currentPage !== currentContentPageRef.current)\n      updateAndSnapToPage(currentPage);\n  }, [currentPage]);\n  const handleMeasureLifecycle = () => {\n    const newContainerSize = measureContainerSize();\n    updateMaxOffsetFromPageContents(newContainerSize ?? containerSizeRef.current);\n    updateAndSnapToPage(currentContentPageRef.current);\n    if (newContainerSize || direction !== lastDirectionRef.current) {\n      if (direction === \"horizontal\") {\n        contentOffsetRef.current.y.set(0);\n      } else {\n        contentOffsetRef.current.x.set(0);\n      }\n      lastDirectionRef.current = direction;\n    }\n  };\n  useIsomorphicLayoutEffect2(() => {\n    if (RenderTarget.current() !== RenderTarget.canvas)\n      return;\n    handleMeasureLifecycle();\n  });\n  const onDragStartHandler = (event, info) => {\n    if (onScrollStart)\n      onScrollStart(info);\n    if (onDragStart)\n      onDragStart(event, info);\n    prev.x = initial.x = info.point.x;\n    prev.y = initial.y = info.point.y;\n  };\n  const onDragHandler = (event, info) => {\n    if (onScroll)\n      onScroll(info);\n    if (onDrag)\n      onDrag(event, info);\n    prev.x = info.point.x;\n    prev.y = info.point.y;\n  };\n  const onDragTransitionEnd = () => {\n    if (props.onDragTransitionEnd)\n      props.onDragTransitionEnd();\n    if (onScrollEnd) {\n      const { x, y } = contentOffsetRef.current;\n      const point = { x: x.get(), y: y.get() };\n      onScrollEnd({\n        point,\n        velocity: { x: x.getVelocity(), y: y.getVelocity() },\n        offset: { x: point.x - initial.x, y: point.y - initial.y },\n        delta: { x: point.x - prev.x, y: point.y - prev.y }\n      });\n    }\n  };\n  const onDragEndHandler = async (event, info) => {\n    const contentOffset = isHorizontal ? contentOffsetRef.current.x : contentOffsetRef.current.y;\n    contentOffset.stop();\n    const startPosition = contentOffset.get();\n    const axis = isHorizontal ? \"x\" : \"y\";\n    const velocity = info.velocity[axis];\n    let index = nearestPageIndex(pageRectsRef.current, startPosition, startPosition, isHorizontal, momentum);\n    if (velocity) {\n      animateValue({\n        type: \"inertia\",\n        keyframes: [startPosition],\n        velocity,\n        modifyTarget: (endPosition) => {\n          index = nearestPageIndex(pageRectsRef.current, startPosition, endPosition, isHorizontal, momentum);\n          return endPosition;\n        }\n      }).stop();\n    }\n    updateCurrentPage(index, currentContentPageRef, onChangePage);\n    const offset = offsetForPage(index, pageCount, pageRectsRef, isHorizontal, maxOffsetRef);\n    if (onDragEnd)\n      onDragEnd(event, info);\n    const handler = contentOffsetRef.current[axis];\n    handler.set(startPosition);\n    animate(handler, offset, {\n      type: \"spring\",\n      velocity,\n      stiffness: 500,\n      damping: 50,\n      onComplete: onDragTransitionEnd\n    });\n  };\n  pageEffectValuesRef.current = [];\n  const childComponents = React36.Children.map(children, (child, index) => {\n    if (!isReactChild(child) || !isReactElement(child)) {\n      return child;\n    }\n    const update = {\n      right: void 0,\n      bottom: void 0,\n      top: void 0,\n      left: void 0,\n      _constraints: {\n        enabled: false\n      }\n    };\n    if (containerProps.__fromCanvasComponent) {\n      update.style = child.props.style ?? {};\n      if (contentWidth === \"stretch\")\n        update.style.width = \"100%\";\n      if (contentHeight === \"stretch\")\n        update.style.height = \"100%\";\n    } else {\n      if (contentWidth === \"stretch\")\n        update.width = \"100%\";\n      if (contentHeight === \"stretch\")\n        update.height = \"100%\";\n    }\n    let effectDictionary;\n    const values = effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef);\n    if (values) {\n      effectDictionary = {};\n      for (const key7 in values) {\n        effectDictionary[key7] = motionValue(values[key7]);\n      }\n    }\n    pageEffectValuesRef.current.push(effectDictionary);\n    return /* @__PURE__ */ jsx30(\n      PageContainer,\n      {\n        effect: effectDictionary,\n        dragEnabled,\n        direction,\n        contentHeight,\n        contentWidth,\n        alignment,\n        gap,\n        isLastPage: index === pageCount - 1,\n        contentOffsetRef,\n        constraintsRef: constraints,\n        directionLock,\n        onDragStart: onDragStartHandler,\n        onDrag: onDragHandler,\n        onDragEnd: onDragEndHandler,\n        layoutId: layoutId ? `${layoutId}-${index}` : void 0,\n        children: React36.cloneElement(child, update)\n      },\n      index\n    );\n  });\n  useWheelScroll(scrollableRef, {\n    enabled: wheelEnabled,\n    initial,\n    prev,\n    direction,\n    constraints,\n    offsetX: contentOffsetRef.current.x,\n    offsetY: contentOffsetRef.current.y,\n    onScrollStart,\n    onScroll,\n    onScrollEnd\n  });\n  return /* @__PURE__ */ jsx30(\n    FrameWithMotion,\n    {\n      \"data-framer-component-type\": \"PageWrapper\",\n      preserve3d: false,\n      perspective: hasEffect(props) ? 1200 : void 0,\n      ...containerProps,\n      style: { pointerEvents: void 0, ...containerProps.style, overflow },\n      layoutId,\n      ref: containerRef,\n      onLayoutMeasure: handleMeasureLifecycle,\n      children: /* @__PURE__ */ jsxs9(\n        FrameWithMotion,\n        {\n          \"data-framer-component-type\": \"Page\",\n          ref: scrollableRef,\n          background: null,\n          x: contentOffsetRef.current.x,\n          y: contentOffsetRef.current.y,\n          width: \"100%\",\n          height: \"100%\",\n          preserve3d: true,\n          layout: true,\n          layoutId: layoutId !== void 0 ? layoutId + \"-page\" : void 0,\n          style: {\n            padding: makePaddingString(paddingFromProps(props)),\n            display: \"flex\",\n            flexDirection: isHorizontal ? \"row\" : \"column\",\n            pointerEvents: (_a = props.style) == null ? void 0 : _a.pointerEvents\n          },\n          children: [\n            /* @__PURE__ */ jsx30(\n              EmptyState,\n              {\n                title: \"Page\",\n                description: \"Click and drag the connector to any frame on the canvas \\u2192\",\n                children,\n                size: containerSizeRef.current,\n                insideUserCodeComponent: !__fromCodeComponentNode\n              }\n            ),\n            childComponents\n          ]\n        }\n      )\n    }\n  );\n});\nfunction cubeEffect(info) {\n  const { normalizedOffset, direction } = info;\n  const isHorizontal = direction === \"horizontal\";\n  return {\n    originX: normalizedOffset < 0 ? 1 : 0,\n    originY: normalizedOffset < 0 ? 1 : 0,\n    rotateY: isHorizontal ? Math.min(Math.max(-90, normalizedOffset * 90), 90) : 0,\n    rotateX: isHorizontal ? 0 : Math.min(Math.max(-90, normalizedOffset * -90), 90),\n    backfaceVisibility: \"hidden\",\n    WebkitBackfaceVisibility: \"hidden\"\n  };\n}\nfunction coverflowEffect(info) {\n  const { normalizedOffset, direction } = info;\n  const isHorizontal = direction === \"horizontal\";\n  return {\n    rotateY: isHorizontal ? Math.min(45, Math.max(-45, normalizedOffset * -45)) : 0,\n    rotateX: isHorizontal ? 0 : Math.min(45, Math.max(-45, normalizedOffset * 45)),\n    originX: isHorizontal ? normalizedOffset < 0 ? 0 : 1 : 0.5,\n    originY: isHorizontal ? 0.5 : normalizedOffset < 0 ? 0 : 1,\n    x: isHorizontal ? `${normalizedOffset * -25}%` : 0,\n    y: isHorizontal ? 0 : `${normalizedOffset * -25}%`,\n    z: -Math.abs(normalizedOffset),\n    scale: 1 - Math.abs(normalizedOffset / 10)\n  };\n}\nfunction calcPileAxisOffset(offset, length) {\n  return offset * length - offset * 8;\n}\nfunction pileEffect(info) {\n  const { normalizedOffset, direction, size } = info;\n  const isHorizontal = direction === \"horizontal\";\n  const absoluteOffset = Math.abs(normalizedOffset);\n  return {\n    x: normalizedOffset < 0 && isHorizontal ? calcPileAxisOffset(absoluteOffset, size.width) : 0,\n    y: normalizedOffset < 0 && !isHorizontal ? calcPileAxisOffset(absoluteOffset, size.height) : 0,\n    scale: normalizedOffset < 0 ? 1 - absoluteOffset / 50 : 1\n  };\n}\nfunction wheelEffect(info) {\n  const { normalizedOffset, direction, size } = info;\n  const isHorizontal = direction === \"horizontal\";\n  const originZ = (isHorizontal ? size.width : size.height) * 18 / (2 * Math.PI);\n  const rotateX = isHorizontal ? 0 : normalizedOffset * -20;\n  const rotateY = isHorizontal ? normalizedOffset * 20 : 0;\n  const y = isHorizontal ? 0 : normalizedOffset * -size.height;\n  const x = isHorizontal ? normalizedOffset * -size.width : 0;\n  return {\n    opacity: 1 - Math.abs(normalizedOffset) / 4,\n    transform: `translate(${x}px, ${y}px) translateZ(-${originZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) translateZ(${originZ}px)`\n  };\n}\nfunction getDefaultEffect(type) {\n  switch (type) {\n    case \"cube\":\n      return cubeEffect;\n    case \"coverflow\":\n      return coverflowEffect;\n    case \"pile\":\n      return pileEffect;\n    case \"wheel\":\n      return wheelEffect;\n    default:\n      return null;\n  }\n}\nfunction nearestPageIndex(pageRects, startPosition, endPosition, isHorizontalDirection, allowSkippingPages) {\n  const distanceToStart = function(rect) {\n    const rectPosition = isHorizontalDirection ? rect.x : rect.y;\n    return Math.abs(rectPosition + startPosition);\n  };\n  const distanceToEnd = function(rect) {\n    const rectPosition = isHorizontalDirection ? rect.x : rect.y;\n    return Math.abs(rectPosition + endPosition);\n  };\n  if (allowSkippingPages) {\n    const closestPages = [...pageRects].sort((a, b) => distanceToEnd(a) - distanceToEnd(b));\n    if (!closestPages[0])\n      return -1;\n    return pageRects.indexOf(closestPages[0]);\n  } else {\n    const closestToStart = [...pageRects].sort((a, b) => distanceToStart(a) - distanceToStart(b));\n    if (closestToStart.length === 1 && closestToStart[0])\n      return pageRects.indexOf(closestToStart[0]);\n    const pageA = closestToStart[0];\n    const pageB = closestToStart[1];\n    if (!pageA || !pageB)\n      return -1;\n    const closestPages = [pageA, pageB].sort((a, b) => distanceToEnd(a) - distanceToEnd(b));\n    if (!closestPages[0])\n      return -1;\n    return pageRects.indexOf(closestPages[0]);\n  }\n}\nfunction getPageContentRects(containerRef, containerSize, direction, gap) {\n  var _a;\n  const containerElement = containerRef.current;\n  if (!containerElement)\n    return;\n  const contentWrappers = [];\n  (_a = containerElement.firstChild) == null ? void 0 : _a.childNodes.forEach((node) => {\n    const childNode = node.firstChild;\n    if (!(childNode instanceof HTMLElement))\n      return;\n    const componentType = childNode.getAttribute(\"data-framer-component-type\");\n    if (componentType === pageContentWrapperType) {\n      contentWrappers.push(childNode);\n    }\n  });\n  const sizes = [];\n  contentWrappers.forEach((contentWrapper) => {\n    if (contentWrapper instanceof HTMLElement && contentWrapper.firstChild instanceof HTMLElement) {\n      let width = contentWrapper.firstChild.offsetWidth;\n      let height = contentWrapper.firstChild.offsetHeight;\n      if (import_process2.default.env.NODE_ENV === \"test\") {\n        width = 100;\n        height = 100;\n      }\n      sizes.push({ width, height });\n    } else {\n      sizes.push(null);\n    }\n  });\n  let maxX = 0;\n  let maxY = 0;\n  const isHorizontal = direction === \"horizontal\";\n  return sizes.map((queriedSize) => {\n    const size = queriedSize || containerSize;\n    const x = maxX;\n    const y = maxY;\n    if (isHorizontal) {\n      maxX += size.width + gap;\n    } else {\n      maxY += size.height + gap;\n    }\n    return { ...size, x, y };\n  });\n}\nfunction getMaxOffset(containerSize, pageContentRects, direction, paddingProps) {\n  const lastPageRect = pageContentRects[pageContentRects.length - 1];\n  if (!lastPageRect)\n    return 0;\n  const paddingSides = paddingFromProps(paddingProps);\n  const isHorizontal = direction === \"horizontal\";\n  const paddingStart = isHorizontal ? paddingSides.left : paddingSides.top;\n  const paddingEnd = isHorizontal ? paddingSides.right : paddingSides.bottom;\n  const pageWidth = isHorizontal ? lastPageRect.width : lastPageRect.height;\n  const containerWidth = isHorizontal ? containerSize.width : containerSize.height;\n  const freeSpace = containerWidth - paddingStart - paddingEnd - pageWidth;\n  const target = isHorizontal ? lastPageRect.x : lastPageRect.y;\n  if (freeSpace <= 0)\n    return Math.max(target, 0);\n  return Math.max(target - freeSpace, 0);\n}\nfunction offsetForPage(index, pageCount, pageRectsRef, isHorizontal, maxOffsetRef) {\n  const pageIndex = Math.max(0, Math.min(pageCount - 1, index));\n  const currentPageRect = pageRectsRef.current[pageIndex];\n  if (!currentPageRect) {\n    return 0;\n  }\n  if (isHorizontal) {\n    return -Math.min(currentPageRect.x, maxOffsetRef.current);\n  } else {\n    return -Math.min(currentPageRect.y, maxOffsetRef.current);\n  }\n}\nfunction useSnapToPage(currentContentPageRef, contentOffsetRef, isHorizontal) {\n  return (pageIndex, offset, options) => {\n    currentContentPageRef.current = pageIndex;\n    const contentOffset = isHorizontal ? contentOffsetRef.current.x : contentOffsetRef.current.y;\n    if (!options || !options.animated) {\n      contentOffset.set(offset);\n      return;\n    }\n    const axis = isHorizontal ? \"x\" : \"y\";\n    const value = contentOffsetRef.current[axis];\n    value.set(contentOffset.get());\n    animate(value, offset, {\n      type: \"spring\",\n      velocity: contentOffset.getVelocity(),\n      stiffness: 500,\n      damping: 50\n    });\n  };\n}\nfunction getBoundedCurrentPage(pageIndex, pageCount) {\n  return pageIndex >= 0 ? Math.min(pageIndex, pageCount - 1) : (pageIndex % pageCount + pageCount) % pageCount;\n}\nfunction effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef) {\n  const {\n    direction: latestDirection = \"horizontal\",\n    defaultEffect: latestDefaultEffect,\n    effect: latestEffect,\n    gap: latestGap = 10\n  } = latestPropsRef.current;\n  const latestIsHorizontal = latestDirection === \"horizontal\";\n  const pageRect = pageRectsRef.current[index] || {\n    x: latestIsHorizontal ? index * 200 + latestGap : 0,\n    y: latestIsHorizontal ? 0 : index * 200 + latestGap,\n    width: 200,\n    height: 200\n  };\n  const effectFunction = latestEffect || getDefaultEffect(latestDefaultEffect);\n  if (!effectFunction)\n    return null;\n  let offset;\n  let normalizedOffset;\n  const contentOffset = contentOffsetRef.current;\n  const maxScrollOffset = maxOffsetRef.current;\n  if (latestIsHorizontal) {\n    offset = Math.min(pageRect.x, maxScrollOffset) + (contentOffset ? contentOffset.x.get() : 0);\n    normalizedOffset = offset / (pageRect.width + latestGap);\n  } else {\n    offset = Math.min(pageRect.y, maxScrollOffset) + (contentOffset ? contentOffset.y.get() : 0);\n    normalizedOffset = offset / (pageRect.height + latestGap);\n  }\n  const size = { width: pageRect.width, height: pageRect.height };\n  return effectFunction({\n    offset,\n    normalizedOffset,\n    size,\n    index,\n    direction: latestDirection,\n    gap: latestGap,\n    pageCount: pageRectsRef.current.length\n  });\n}\nfunction hasEffect(props) {\n  return !!props.effect || !!getDefaultEffect(props.defaultEffect);\n}\nfunction updateCurrentPage(newPageIndex, currentContentPageRef, onChangePage) {\n  if (currentContentPageRef.current === newPageIndex)\n    return;\n  if (onChangePage)\n    onChangePage(newPageIndex, currentContentPageRef.current);\n  currentContentPageRef.current = newPageIndex;\n}\n\n// ../../library/src/components/Page/Page.tsx\nvar Page3 = /* @__PURE__ */ (() => {\n  const ContentDimension = {\n    Auto: \"auto\",\n    Stretch: \"stretch\"\n  };\n  const pageContentDimensionOptions = [ContentDimension.Auto, ContentDimension.Stretch];\n  const pageContentDimensionTitles = /* @__PURE__ */ pageContentDimensionOptions.map((option) => {\n    switch (option) {\n      case ContentDimension.Auto:\n        return \"Auto\";\n      case ContentDimension.Stretch:\n        return \"Stretch\";\n    }\n  });\n  const pageEffectOptions = [\"none\", \"cube\", \"coverflow\", \"wheel\", \"pile\"];\n  const pageEffectTitles = /* @__PURE__ */ pageEffectOptions.map((option) => {\n    switch (option) {\n      case \"none\":\n        return \"None\";\n      case \"cube\":\n        return \"Cube\";\n      case \"coverflow\":\n        return \"Cover Flow\";\n      case \"wheel\":\n        return \"Wheel\";\n      case \"pile\":\n        return \"Pile\";\n    }\n  });\n  const pageAlignmentOptions = [\"start\", \"center\", \"end\"];\n  const genericAlignmentTitles = /* @__PURE__ */ pageAlignmentOptions.map((option) => {\n    switch (option) {\n      case \"start\":\n        return \"Start\";\n      case \"center\":\n        return \"Center\";\n      case \"end\":\n        return \"End\";\n    }\n  });\n  Page.defaultProps = {\n    gap: 10,\n    directionLock: false\n  };\n  addPropertyControls(Page, {\n    direction: {\n      type: \"enum\" /* Enum */,\n      options: [\"horizontal\", \"vertical\"],\n      title: \"Direction\",\n      defaultValue: \"horizontal\",\n      displaySegmentedControl: true,\n      optionIcons: [\"direction-horizontal\", \"direction-vertical\"]\n    },\n    directionLock: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Lock\",\n      enabledTitle: \"1 Axis\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    contentWidth: {\n      type: \"enum\" /* Enum */,\n      options: pageContentDimensionOptions,\n      optionTitles: pageContentDimensionTitles,\n      title: \"Width\",\n      defaultValue: ContentDimension.Stretch,\n      displaySegmentedControl: true\n    },\n    contentHeight: {\n      type: \"enum\" /* Enum */,\n      options: pageContentDimensionOptions,\n      optionTitles: pageContentDimensionTitles,\n      title: \"Height\",\n      defaultValue: ContentDimension.Stretch,\n      displaySegmentedControl: true\n    },\n    alignment: {\n      type: \"enum\" /* Enum */,\n      options: pageAlignmentOptions,\n      optionTitles: genericAlignmentTitles,\n      title: \"Align\",\n      hidden(props) {\n        const { direction, contentWidth, contentHeight } = props;\n        const isHorizontalDirection = direction === \"horizontal\";\n        const crossDimension = isHorizontalDirection ? contentHeight : contentWidth;\n        return crossDimension === ContentDimension.Stretch;\n      },\n      defaultValue: \"start\",\n      displaySegmentedControl: true,\n      optionIcons: {\n        direction: {\n          horizontal: [\"align-top\", \"align-middle\", \"align-bottom\"],\n          vertical: [\"align-left\", \"align-center\", \"align-right\"]\n        }\n      }\n    },\n    gap: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Gap\",\n      defaultValue: 0\n    },\n    padding: {\n      type: \"fusednumber\" /* FusedNumber */,\n      toggleKey: \"paddingPerSide\",\n      toggleTitles: [\"Padding\", \"Padding per side\"],\n      valueKeys: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n      valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n      min: 0,\n      title: \"Padding\",\n      defaultValue: 0\n    },\n    overflow: {\n      type: \"enum\" /* Enum */,\n      title: \"Overflow\",\n      defaultValue: \"hidden\",\n      options: [\"visible\", \"hidden\"],\n      optionTitles: [\"Visible\", \"Hidden\"],\n      displaySegmentedControl: true\n    },\n    currentPage: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Current\",\n      displayStepper: true,\n      defaultValue: 0\n    },\n    momentum: {\n      type: \"boolean\" /* Boolean */,\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      title: \"Momentum\",\n      defaultValue: false\n    },\n    dragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Drag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    wheelEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Wheel\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: false\n    },\n    defaultEffect: {\n      type: \"enum\" /* Enum */,\n      options: pageEffectOptions,\n      optionTitles: pageEffectTitles,\n      title: \"Effect\",\n      defaultValue: \"none\"\n    },\n    children: {\n      type: \"array\" /* Array */,\n      title: \"Content\",\n      control: { type: \"componentinstance\" /* ComponentInstance */, title: \"Page\" }\n    }\n  });\n  Page.supportsConstraints = true;\n  return Page;\n})();\n\n// ../../library/src/components/Screen.tsx\nimport React37, { Component as Component9 } from \"react\";\n\n// ../../library/src/events/recognizer/GestureRecognizer.ts\nfunction stateName(state) {\n  switch (state) {\n    case 2 /* Possible */:\n      return \"Possible\";\n    case 4 /* Began */:\n      return \"Began\";\n    case 8 /* Changed */:\n      return \"Changed\";\n    case 16 /* Ended */:\n      return \"Ended\";\n    case 32 /* Failed */:\n      return \"Failed\";\n    case 64 /* Cancelled */:\n      return \"Cancelled\";\n    case 128 /* Recognized */:\n      return \"Recognized\";\n    default:\n      return \"Unknown\";\n  }\n}\nfunction containsBitmask(value, bitmask) {\n  return (value & bitmask) !== 0;\n}\nvar GestureRecognizer = class {\n  constructor() {\n    __publicField(this, \"_state\", 2 /* Possible */);\n    __publicField(this, \"handler\");\n    __publicField(this, \"preventers\", []);\n  }\n  get state() {\n    return this._state;\n  }\n  setState(state) {\n    this._state = state;\n  }\n  get isPrevented() {\n    let prevented = false;\n    for (const recognizer of this.preventers) {\n      if (recognizer.state & (4 /* Began */ | 8 /* Changed */ | 16 /* Ended */)) {\n        prevented = true;\n        break;\n      }\n    }\n    return prevented;\n  }\n  canBePreventedBy(recognizer) {\n    this.preventers.push(recognizer);\n  }\n  hasState(bitmask) {\n    return containsBitmask(this.state, bitmask);\n  }\n  stateSwitch(newState) {\n    let allowedStates;\n    switch (this.state) {\n      case 2 /* Possible */:\n        allowedStates = 4 /* Began */ | 128 /* Recognized */ | 32 /* Failed */;\n        break;\n      case 4 /* Began */:\n        allowedStates = 8 /* Changed */ | 64 /* Cancelled */ | 16 /* Ended */;\n        break;\n      case 8 /* Changed */:\n        allowedStates = 8 /* Changed */ | 64 /* Cancelled */ | 16 /* Ended */;\n        break;\n      case 128 /* Recognized */:\n      case 16 /* Ended */:\n      case 64 /* Cancelled */:\n      case 32 /* Failed */:\n        allowedStates = 2 /* Possible */;\n        break;\n      default:\n        allowedStates = 0;\n    }\n    if (!containsBitmask(newState, allowedStates)) {\n      console.warn(`Unallowed state change from ${stateName(this.state)} to ${stateName(newState)}`);\n      return;\n    }\n    this.setState(newState);\n  }\n  cancel() {\n    if (this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      this.setState(64 /* Cancelled */);\n    }\n    this.reset();\n  }\n  reset() {\n    if (!this.hasState(2 /* Possible */)) {\n      this.stateSwitch(2 /* Possible */);\n    }\n  }\n};\n\n// ../../library/src/events/recognizer/MouseWheelGestureRecognizer.ts\nvar MouseWheelGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"startEvent\");\n    __publicField(this, \"eventType\", \"mousewheel\");\n    __publicField(this, \"onMouseWheelEnd\", debounce((event) => {\n      if (this.handler && this.startEvent) {\n        this.stateSwitch(16 /* Ended */);\n        this.handler.gestureEnded(this.eventType, event, this.startEvent.target);\n        this.startEvent = null;\n        this.reset();\n      }\n    }, 300));\n  }\n  pointerSessionBegan(session, event) {\n  }\n  pointerSessionMoved(session, event) {\n  }\n  pointerSessionEnded(session, event) {\n  }\n  mouseWheel(session, event) {\n    if (!this.handler)\n      return;\n    if (this.hasState(2 /* Possible */)) {\n      this.startEvent = event;\n      this.stateSwitch(4 /* Began */);\n      this.handler.gestureBegan(this.eventType, event, this.startEvent.target);\n      return;\n    }\n    if (this.hasState(4 /* Began */ | 8 /* Changed */) && this.startEvent) {\n      this.stateSwitch(8 /* Changed */);\n      this.handler.gestureChanged(this.eventType, event, this.startEvent.target);\n    }\n    this.onMouseWheelEnd(event);\n  }\n};\n\n// ../../library/src/events/recognizer/PanGestureRecognizer.ts\nvar PanGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"startEvent\");\n    __publicField(this, \"eventType\", \"pan\");\n  }\n  pointerSessionBegan(session, event) {\n    this.recognize(session, event);\n  }\n  pointerSessionMoved(session, event) {\n    this.recognize(session, event);\n  }\n  pointerSessionEnded(session, event) {\n    this.panend(event);\n  }\n  recognize(session, event) {\n    if (Math.abs(event.delta.x) > 0 || Math.abs(event.delta.y) > 0) {\n      if (this.startEvent) {\n        this.pan(event);\n      } else {\n        this.panstart(event);\n      }\n    }\n  }\n  reset() {\n    this.startEvent = null;\n    super.reset();\n  }\n  panstart(event) {\n    if (!this.hasState(2 /* Possible */) || event.isLeftMouseClick !== void 0 && !event.isLeftMouseClick) {\n      return;\n    }\n    this.stateSwitch(4 /* Began */);\n    this.startEvent = event;\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureBegan(this.eventType, event, this.startEvent.target);\n    }\n  }\n  pan(event) {\n    if (!this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      return;\n    }\n    if (!this.startEvent) {\n      return;\n    }\n    this.stateSwitch(8 /* Changed */);\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureChanged(this.eventType, event, this.startEvent.target);\n    }\n  }\n  panend(event) {\n    if (!this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      return;\n    }\n    if (!this.startEvent) {\n      return;\n    }\n    this.stateSwitch(16 /* Ended */);\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureEnded(this.eventType, event, this.startEvent.target);\n    }\n  }\n};\n\n// ../../library/src/events/recognizer/TapGestureRecognizer.ts\nvar TapGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"eventType\", \"tap\");\n  }\n  pointerSessionBegan(session, event) {\n    if (this.handler && (event.isLeftMouseClick === void 0 || event.isLeftMouseClick)) {\n      this.handler.gestureBegan(this.eventType, event, null);\n    }\n  }\n  pointerSessionMoved(session, event) {\n  }\n  pointerSessionEnded(session, event) {\n    if (this.isPrevented) {\n      this.stateSwitch(32 /* Failed */);\n    } else if (!session.startEvent || session.startEvent.target === event.target) {\n      this.stateSwitch(128 /* Recognized */);\n      if (this.handler) {\n        this.handler.gestureChanged(this.eventType, event, null);\n      }\n    } else {\n      this.stateSwitch(32 /* Failed */);\n    }\n    if (this.handler) {\n      this.handler.gestureEnded(this.eventType, event, null);\n    }\n  }\n};\n\n// ../../library/src/events/FramerEventSession.ts\nvar FramerEventSession = class {\n  constructor(dispatcher, customOrigin) {\n    __publicField(this, \"events\", []);\n    __publicField(this, \"recognizers\", []);\n    __publicField(this, \"mouseWheelRecognizer\", new MouseWheelGestureRecognizer());\n    __publicField(this, \"dispatcher\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"originElement\");\n    this.dispatcher = dispatcher;\n    if (customOrigin) {\n      this.originElement = customOrigin;\n    } else {\n      this.originElement = document.body;\n    }\n    const pan = new PanGestureRecognizer();\n    const tap = new TapGestureRecognizer();\n    pan.handler = this;\n    tap.handler = this;\n    this.mouseWheelRecognizer.handler = this;\n    this.recognizers = [tap, pan];\n  }\n  get isStarted() {\n    return this.events.length !== 0;\n  }\n  get startEvent() {\n    return this.isStarted ? this.events[0] : void 0;\n  }\n  get lastEvent() {\n    return this.events[this.events.length - 1];\n  }\n  // Event handling\n  processEvent(event) {\n    this.events.push(event);\n    return event;\n  }\n  pointerDown(event) {\n    if (this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.cancel();\n      r.pointerSessionBegan(this, event);\n    });\n  }\n  pointerMove(event) {\n    if (!this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.pointerSessionMoved(this, event);\n    });\n  }\n  pointerUp(event) {\n    if (!this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.pointerSessionEnded(this, event);\n    });\n    this.clearEvents();\n    this.recognizers.map((r) => {\n      r.reset();\n    });\n  }\n  mouseWheel(event) {\n    this.processEvent(event);\n    this.mouseWheelRecognizer.mouseWheel(this, event);\n    this.clearEvents();\n  }\n  clearEvents() {\n    this.events = [];\n  }\n  dispatch(type, event, target = null) {\n    const dispatchTarget = target || this.startEvent && this.startEvent.target || event.target;\n    if (dispatchTarget) {\n      this.dispatcher(type, event, dispatchTarget);\n    }\n  }\n  // Gesture Handler\n  gestureBegan(type, event, target) {\n    this.dispatch(`${type}start`, event, target);\n  }\n  gestureChanged(type, event, target) {\n    this.dispatch(type, event, target);\n  }\n  gestureEnded(type, event, target) {\n    this.dispatch(`${type}end`, event, target);\n  }\n  // Calculatinos\n  /**\n   * Average velocity over last n seconds in pixels per second.\n   * @param n - number of events to use for calculation\n   */\n  velocity(t = Loop.TimeStep * 2) {\n    if (!this.isStarted || this.events.length < 2) {\n      return { x: 0, y: 0 };\n    }\n    const events = this.events;\n    let i = events.length - 1;\n    let event = null;\n    while (i >= 0) {\n      event = events[i] ?? null;\n      if (!event || MainLoop.time - event.loopTime > t) {\n        break;\n      }\n      i--;\n    }\n    if (!event) {\n      return { x: 0, y: 0 };\n    }\n    const current = events[events.length - 1];\n    if (!current) {\n      return { x: 0, y: 0 };\n    }\n    const time = (MainLoop.time - event.loopTime) * 1e3;\n    if (time === 0) {\n      return { x: 0, y: 0 };\n    }\n    const velocity = {\n      x: (current.devicePoint.x - event.devicePoint.x) / time,\n      y: (current.devicePoint.y - event.devicePoint.y) / time\n    };\n    if (velocity.x === Infinity) {\n      velocity.x = 0;\n    }\n    if (velocity.y === Infinity) {\n      velocity.y = 0;\n    }\n    return velocity;\n  }\n  offset(event) {\n    if (!this.startEvent) {\n      return { x: 0, y: 0 };\n    }\n    const subtract = (pointA, pointB) => {\n      return {\n        x: pointA.x - pointB.x,\n        y: pointA.y - pointB.y\n      };\n    };\n    return subtract(event.devicePoint, this.startEvent.devicePoint);\n  }\n};\n\n// ../../library/src/events/recognizer/MouseEventListener.ts\nimport { Component as Component7 } from \"react\";\nvar MouseEventListener = class extends Component7 {\n  constructor() {\n    super(...arguments);\n    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseDown\", (originalEvent) => {\n      safeWindow.addEventListener(\"mousemove\", this.domMouseMove);\n      safeWindow.addEventListener(\"mouseup\", this.domMouseUp);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerDown(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseMove\", (originalEvent) => {\n      const leftMouseButtonOnlyDown = originalEvent.buttons === void 0 ? originalEvent.which === 1 : originalEvent.buttons === 1;\n      if (!leftMouseButtonOnlyDown) {\n        this.domMouseUp(originalEvent);\n        return;\n      }\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerMove(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseUp\", (originalEvent) => {\n      safeWindow.removeEventListener(\"mousemove\", this.domMouseMove);\n      safeWindow.removeEventListener(\"mouseup\", this.domMouseUp);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerUp(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseWheel\", (originalEvent) => {\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.mouseWheel(event);\n    });\n  }\n  /**\n   * @internal\n   */\n  render() {\n    return this.props.children;\n  }\n  /**\n   * @internal\n   */\n  componentDidMount() {\n    safeWindow.addEventListener(\"mousedown\", this.domMouseDown);\n    safeWindow.addEventListener(\"wheel\", this.domMouseWheel);\n  }\n  /**\n   * @internal\n   */\n  componentWillUnmount() {\n    safeWindow.removeEventListener(\"mousemove\", this.domMouseMove);\n    safeWindow.removeEventListener(\"mousedown\", this.domMouseDown);\n    safeWindow.removeEventListener(\"mouseup\", this.domMouseUp);\n    safeWindow.removeEventListener(\"wheel\", this.domMouseWheel);\n  }\n};\n\n// ../../library/src/events/recognizer/TouchEventListener.ts\nimport { Component as Component8 } from \"react\";\nvar TouchEventListener = class extends Component8 {\n  constructor() {\n    super(...arguments);\n    /**\n     * @internal\n     */\n    __publicField(this, \"domTouchStart\", (originalEvent) => {\n      safeWindow.addEventListener(\"touchmove\", this.domTouchMove);\n      safeWindow.addEventListener(\"touchend\", this.domTouchEnd);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerDown(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domTouchMove\", (originalEvent) => {\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerMove(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domTouchEnd\", (originalEvent) => {\n      safeWindow.removeEventListener(\"touchmove\", this.domTouchMove);\n      safeWindow.removeEventListener(\"touchend\", this.domTouchEnd);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerUp(event);\n    });\n  }\n  /**\n   * @internal\n   */\n  render() {\n    return this.props.children;\n  }\n  /**\n   * @internal\n   */\n  componentDidMount() {\n    safeWindow.addEventListener(\"touchstart\", this.domTouchStart);\n  }\n  /**\n   * @internal\n   */\n  componentWillUnmount() {\n    safeWindow.removeEventListener(\"touchstart\", this.domTouchStart);\n    safeWindow.removeEventListener(\"touchmove\", this.domTouchMove);\n    safeWindow.removeEventListener(\"touchend\", this.domTouchEnd);\n  }\n};\n\n// ../../library/src/events/FramerEventListener.ts\nvar FramerEventListener = /* @__PURE__ */ environment.isTouch() ? TouchEventListener : MouseEventListener;\n\n// ../../library/src/components/Screen.tsx\nimport { jsx as jsx31 } from \"react/jsx-runtime\";\n\n// ../../library/src/components/Scroll/Scroll.tsx\nimport React41 from \"react\";\n\n// ../../library/src/components/Scroll/EmulatedScroll.tsx\nimport React38, { useCallback as useCallback7, useInsertionEffect as useInsertionEffect2, useMemo as useMemo4, useRef as useRef13 } from \"react\";\nimport { jsx as jsx32, jsxs as jsxs10 } from \"react/jsx-runtime\";\nvar directionMap = {\n  horizontal: \"x\",\n  vertical: \"y\",\n  both: true\n};\nfunction convertScrollDirectionToDrag(scrollDirection) {\n  return scrollDirection ? directionMap[scrollDirection] : scrollDirection;\n}\nvar useUpdateChildSize = ({\n  dragDirection,\n  children,\n  fromCanvasComponent\n}) => {\n  return useMemo4(() => {\n    return React38.Children.map(children, (child) => {\n      if (child === null || typeof child !== \"object\" || typeof child.type === \"string\") {\n        return child;\n      }\n      const updatedSize = {};\n      switch (dragDirection) {\n        case \"vertical\":\n          updatedSize.width = \"100%\";\n          break;\n        case \"horizontal\":\n          updatedSize.height = \"100%\";\n          break;\n        default:\n          return child;\n      }\n      const update = fromCanvasComponent ? { style: Object.assign({}, child.props.style, updatedSize) } : updatedSize;\n      return React38.cloneElement(child, update);\n    });\n  }, [dragDirection, children]);\n};\nvar numberFromOptionalMotionValue = (value) => {\n  return typeof value === \"number\" ? value : value.get();\n};\nvar EmulatedScroll = /* @__PURE__ */ React38.forwardRef(\n  function EmulatedScroll2(props, forwardedRef) {\n    const {\n      direction = \"vertical\",\n      directionLock = false,\n      dragEnabled = true,\n      dragElastic,\n      dragMomentum,\n      dragTransition,\n      wheelEnabled = true,\n      contentOffsetX = 0,\n      contentOffsetY = 0,\n      contentWidth,\n      contentHeight,\n      onScrollStart,\n      onScroll,\n      onScrollEnd,\n      onDragStart,\n      onDrag,\n      onDragEnd,\n      onUpdate,\n      onDirectionLock,\n      style,\n      children,\n      scrollAnimate,\n      resetOffset,\n      overdragEnabled = true,\n      layoutId: specificLayoutId,\n      native: _native,\n      ...containerProps\n    } = props;\n    const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"scroll\" });\n    const defaultX = useMotionValue(typeof contentOffsetX === \"number\" ? contentOffsetX : 0);\n    const defaultY = useMotionValue(typeof contentOffsetY === \"number\" ? contentOffsetY : 0);\n    const x = isMotionValue2(contentOffsetX) ? contentOffsetX : defaultX;\n    const y = isMotionValue2(contentOffsetY) ? contentOffsetY : defaultY;\n    const measuredConstraints = useRef13(null);\n    const dragControls = useDragControls();\n    const isInTarget = useIsInCurrentNavigationTarget();\n    const wasInTargetRef = useRef13(true);\n    useInsertionEffect2(() => {\n      injectComponentCSSRules();\n    }, []);\n    function setMeasureDragConstraints(constraints) {\n      constraints = offsetToZero(constraints);\n      if (contentWidth !== void 0)\n        constraints.left = -contentWidth;\n      if (contentHeight !== void 0)\n        constraints.top = -contentHeight;\n      return measuredConstraints.current = constraints;\n    }\n    const { initial, prev } = useRef13({\n      initial: { x: 0, y: 0 },\n      prev: { x: 0, y: 0 }\n    }).current;\n    const isPreview = RenderTarget.current() === RenderTarget.preview;\n    const containerFallbackRef = useRef13(null);\n    const containerRef = forwardedRef || containerFallbackRef;\n    const contentRef = useRef13(null);\n    const lastOffsetRef = useRef13(null);\n    function shouldResetScroll(inTarget) {\n      const hasEnteredTarget = inTarget && wasInTargetRef.current === false;\n      return resetOffset && hasEnteredTarget;\n    }\n    function measureAndUpdateScrollOffset() {\n      if (!contentRef.current || !containerRef.current)\n        return;\n      const mustReset = shouldResetScroll(isInTarget);\n      wasInTargetRef.current = isInTarget;\n      const previous = lastOffsetRef.current;\n      if (previous === null && contentOffsetX === void 0 && contentOffsetY === void 0)\n        return;\n      const shouldUpdateOffset = previous === null || !isMotionValue2(contentOffsetX) && contentOffsetX !== previous.offsetX || !isMotionValue2(contentOffsetY) && contentOffsetY !== previous.offsetY;\n      const currentMaxXOffset = contentRef.current.offsetWidth - containerRef.current.offsetWidth;\n      const currentMaxYOffset = contentRef.current.offsetHeight - containerRef.current.offsetHeight;\n      const hasSizeChanged = currentMaxXOffset !== (previous == null ? void 0 : previous.maxXOffset) || currentMaxYOffset !== (previous == null ? void 0 : previous.maxYOffset);\n      const hasScrollOffsetChanged = (previous == null ? void 0 : previous.x) !== x.get() || (previous == null ? void 0 : previous.y) !== y.get();\n      const shouldStayPinned = hasSizeChanged && !hasScrollOffsetChanged;\n      if (mustReset || shouldUpdateOffset || shouldStayPinned) {\n        const currentOffsetX = direction !== \"vertical\" ? numberFromOptionalMotionValue(contentOffsetX) : 0;\n        const currentOffsetY = direction !== \"horizontal\" ? numberFromOptionalMotionValue(contentOffsetY) : 0;\n        const nextXOffset = -Math.min(currentOffsetX, currentMaxXOffset);\n        const nextYOffset = -Math.min(currentOffsetY, currentMaxYOffset);\n        x.set(nextXOffset);\n        y.set(nextYOffset);\n        lastOffsetRef.current = {\n          maxXOffset: currentMaxXOffset,\n          maxYOffset: currentMaxYOffset,\n          offsetX: currentOffsetX,\n          offsetY: currentOffsetY,\n          x: nextXOffset,\n          y: nextYOffset\n        };\n      }\n    }\n    useIsomorphicLayoutEffect2(() => {\n      if (RenderTarget.current() !== RenderTarget.canvas)\n        return;\n      measureAndUpdateScrollOffset();\n    });\n    useIsomorphicLayoutEffect2(() => {\n      if (RenderTarget.current() === RenderTarget.canvas)\n        return;\n      measureAndUpdateScrollOffset();\n    }, []);\n    React38.useEffect(() => {\n      if (shouldResetScroll(isInTarget))\n        measureAndUpdateScrollOffset();\n      if (isInTarget === false)\n        wasInTargetRef.current = false;\n    }, [isInTarget]);\n    const getLatestPoint = () => ({ x: x.get(), y: y.get() });\n    const resetInitialPoint = useCallback7(() => {\n      const point = getLatestPoint();\n      initial.x = point.x;\n      initial.y = point.y;\n      prev.x = point.x;\n      prev.y = point.y;\n    }, []);\n    const getPointData = useCallback7(() => {\n      const point = getLatestPoint();\n      const data2 = {\n        point,\n        velocity: { x: x.getVelocity(), y: y.getVelocity() },\n        offset: { x: point.x - initial.x, y: point.y - initial.y },\n        delta: { x: point.x - prev.x, y: point.y - prev.y }\n      };\n      prev.x = point.x;\n      prev.y = point.y;\n      return data2;\n    }, [x, y]);\n    const updateScrollListeners = useCallback7(() => {\n      onUpdate && onUpdate({ x: x.get(), y: y.get() });\n      onScroll && onScroll(getPointData());\n    }, [onScroll, onUpdate, getPointData, x, y]);\n    const scheduleUpdateScrollListeners = useCallback7(() => {\n      frame.update(updateScrollListeners, false, true);\n    }, [updateScrollListeners]);\n    const onMotionDragStart = (event, info) => {\n      resetInitialPoint();\n      onDragStart && onDragStart(event, info);\n      onScrollStart && onScrollStart(info);\n    };\n    const onMotionDragTransitionEnd = () => onScrollEnd && onScrollEnd(getPointData());\n    const onWheelScrollStart = (info) => {\n      onScrollStart == null ? void 0 : onScrollStart(info);\n    };\n    useWheelScroll(containerRef, {\n      enabled: wheelEnabled,\n      initial,\n      prev,\n      direction,\n      offsetX: x,\n      offsetY: y,\n      onScrollStart: onWheelScrollStart,\n      onScroll,\n      onScrollEnd,\n      constraints: measuredConstraints\n    });\n    const overdragX = useMotionValue(0);\n    const overdragY = useMotionValue(0);\n    useIsomorphicLayoutEffect2(() => {\n      const setScrollX = (xValue) => {\n        const element = containerRef.current;\n        if (!(element instanceof HTMLDivElement))\n          return;\n        element.scrollLeft = -xValue;\n        const constraints = measuredConstraints.current;\n        if (constraints && overdragEnabled) {\n          let overdragXValue = 0;\n          if (xValue > constraints.right)\n            overdragXValue = xValue;\n          if (xValue < constraints.left)\n            overdragXValue = xValue - constraints.left;\n          overdragX.set(overdragXValue);\n        }\n        scheduleUpdateScrollListeners();\n      };\n      const currentX = x.get();\n      if (currentX !== 0)\n        setScrollX(currentX);\n      return x.on(\"change\", setScrollX);\n    }, [x, overdragX, scheduleUpdateScrollListeners, overdragEnabled]);\n    useIsomorphicLayoutEffect2(() => {\n      const setScrollY = (yValue) => {\n        const element = containerRef.current;\n        if (!(element instanceof HTMLDivElement))\n          return;\n        element.scrollTop = -yValue;\n        const constraints = measuredConstraints.current;\n        if (constraints && overdragEnabled) {\n          let overdragYValue = 0;\n          if (yValue > constraints.bottom)\n            overdragYValue = yValue;\n          if (yValue < constraints.top)\n            overdragYValue = yValue - constraints.top;\n          overdragY.set(overdragYValue);\n        }\n        scheduleUpdateScrollListeners();\n      };\n      const currentY = y.get();\n      if (currentY !== 0)\n        setScrollY(currentY);\n      return y.on(\"change\", setScrollY);\n    }, [y, overdragY, scheduleUpdateScrollListeners, overdragEnabled]);\n    const nativeOnScroll = React38.useCallback(() => {\n      const element = containerRef.current;\n      if (!(element instanceof HTMLDivElement))\n        return;\n      const xDelta = Math.abs(x.get() + element.scrollLeft);\n      const yDelta = Math.abs(y.get() + element.scrollTop);\n      if (xDelta > 1)\n        x.set(-element.scrollLeft);\n      if (yDelta > 1)\n        y.set(-element.scrollTop);\n    }, [x, y]);\n    const isEmpty2 = React38.Children.count(children) === 0;\n    const width = direction !== \"vertical\" && !isEmpty2 ? \"auto\" : \"100%\";\n    const height = direction !== \"horizontal\" && !isEmpty2 ? \"auto\" : \"100%\";\n    const size = !containerProps.__fromCanvasComponent ? {\n      width: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.width,\n      height: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.height\n    } : {};\n    return /* @__PURE__ */ jsx32(\n      FrameWithMotion,\n      {\n        \"data-framer-component-type\": \"Scroll\",\n        background: \"none\",\n        ...containerProps,\n        ...size,\n        style: {\n          ...style,\n          willChange: isPreview ? \"transform\" : void 0,\n          // allows the scroll content to be hardware accelerated\n          overflow: \"hidden\"\n        },\n        onScroll: nativeOnScroll,\n        preserve3d: containerProps.preserve3d,\n        ref: containerRef,\n        layoutId,\n        layoutScroll: true,\n        onBeforeLayoutMeasure: measureAndUpdateScrollOffset,\n        children: /* @__PURE__ */ jsxs10(\n          FrameWithMotion,\n          {\n            \"data-framer-component-type\": \"ScrollContentWrapper\",\n            animate: scrollAnimate,\n            drag: dragEnabled && convertScrollDirectionToDrag(direction),\n            dragDirectionLock: directionLock,\n            dragElastic,\n            dragMomentum,\n            dragTransition,\n            dragConstraints: containerRef,\n            dragControls,\n            onDragStart: onMotionDragStart,\n            onDrag,\n            onDragEnd,\n            onDragTransitionEnd: onMotionDragTransitionEnd,\n            onDirectionLock,\n            onMeasureDragConstraints: setMeasureDragConstraints,\n            width,\n            height,\n            _dragX: x,\n            _dragY: y,\n            position: \"relative\",\n            x: overdragEnabled ? overdragX : void 0,\n            y: overdragEnabled ? overdragY : void 0,\n            ref: contentRef,\n            style: {\n              display: isEmpty2 ? \"block\" : \"inline-block\",\n              willChange: isPreview ? \"transform\" : void 0,\n              // makes the scroll content hardware accelerated\n              backgroundColor: \"transparent\",\n              overflow: \"visible\",\n              minWidth: \"100%\",\n              minHeight: \"100%\"\n            },\n            preserve3d: containerProps.preserve3d,\n            children: [\n              /* @__PURE__ */ jsx32(\n                EmptyState,\n                {\n                  children,\n                  size: {\n                    width: isFiniteNumber(containerProps.width) ? containerProps.width : \"100%\",\n                    height: isFiniteNumber(containerProps.height) ? containerProps.height : \"100%\"\n                  },\n                  insideUserCodeComponent: !containerProps.__fromCodeComponentNode,\n                  title: \"Scroll\",\n                  description: \"Click and drag the connector to any frame on the canvas \\u2192\"\n                }\n              ),\n              useUpdateChildSize({\n                dragDirection: direction,\n                children,\n                fromCanvasComponent: containerProps.__fromCanvasComponent\n              })\n            ]\n          }\n        )\n      }\n    );\n  }\n);\nfunction offsetToZero({ top, left, right, bottom }) {\n  const width = right - left;\n  const height = bottom - top;\n  return {\n    top: -height,\n    left: -width,\n    right: 0,\n    bottom: 0\n  };\n}\n\n// ../../library/src/components/Scroll/NativeScroll.tsx\nimport React40, { useInsertionEffect as useInsertionEffect3 } from \"react\";\n\n// ../../library/src/modules/cx.ts\nfunction cx(...classNames) {\n  return classNames.filter(Boolean).join(\" \");\n}\n\n// ../../library/src/components/utils/useEmulatedTouchScroll.ts\nimport React39, { useEffect as useEffect12 } from \"react\";\n\n// ../../library/src/components/utils/animatePointWithInertia.ts\nfunction isRunningAnimation(...phases) {\n  let runningAny = false;\n  let cancelledAny = false;\n  phases.forEach((phase) => {\n    runningAny = runningAny || phase === 1 /* Running */;\n    cancelledAny = cancelledAny || phase === 3 /* Cancelled */;\n  });\n  return runningAny && !cancelledAny;\n}\nfunction didFinishAnimations(...phases) {\n  return phases.every((phase) => phase === 0 /* None */ || phase === 2 /* Completed */);\n}\nvar timeConstant = 400;\nfunction animatePointWithInertia({\n  from,\n  velocity,\n  onUpdate,\n  onComplete,\n  onStop\n}) {\n  const latest = from;\n  let animationPhaseX = 0 /* None */;\n  let animationPhaseY = 0 /* None */;\n  const animations2 = [];\n  const updateHandler = () => {\n    if (isRunningAnimation(animationPhaseX, animationPhaseY)) {\n      onUpdate(latest);\n    }\n  };\n  const completionHandler = () => {\n    if (didFinishAnimations(animationPhaseX, animationPhaseY)) {\n      onComplete();\n    }\n  };\n  if (velocity.x) {\n    animationPhaseX = 1 /* Running */;\n    animations2.push(\n      animateValue({\n        keyframes: [from.x],\n        velocity: -velocity.x,\n        timeConstant,\n        onUpdate: (value) => {\n          latest.x = value;\n          frame.update(updateHandler, false, true);\n        },\n        onComplete: () => {\n          if (animationPhaseX !== 1 /* Running */) {\n            throw Error(\"animation x should be running when completing\");\n          }\n          animationPhaseX = 2 /* Completed */;\n          completionHandler();\n        }\n      })\n    );\n  }\n  if (velocity.y) {\n    animationPhaseY = 1 /* Running */;\n    animations2.push(\n      animateValue({\n        keyframes: [from.y],\n        velocity: -velocity.y,\n        timeConstant,\n        onUpdate: (value) => {\n          latest.y = value;\n          frame.update(updateHandler, false, true);\n        },\n        onComplete: () => {\n          if (animationPhaseY !== 1 /* Running */) {\n            throw Error(\"animation y should be running when completing\");\n          }\n          animationPhaseY = 2 /* Completed */;\n          completionHandler();\n        }\n      })\n    );\n  }\n  if (!isRunningAnimation(animationPhaseX, animationPhaseY)) {\n    completionHandler();\n  }\n  return {\n    stop: () => {\n      if (!isRunningAnimation(animationPhaseX, animationPhaseY))\n        return;\n      animations2.forEach((animation) => animation.stop());\n      animationPhaseX = animationPhaseX === 1 /* Running */ ? 3 /* Cancelled */ : animationPhaseX;\n      animationPhaseY = animationPhaseY === 1 /* Running */ ? 3 /* Cancelled */ : animationPhaseY;\n      onStop();\n    }\n  };\n}\n\n// ../../library/src/components/utils/useEmulatedTouchScroll.ts\nvar scrollThreshold = 3;\nvar isTouchDevice = /* @__PURE__ */ isTouch();\nvar isSafariBrowser = /* @__PURE__ */ isSafari();\nfunction getTouchAction(element) {\n  if (!(element instanceof HTMLElement))\n    return null;\n  return element.style.touchAction;\n}\nfunction canPanInDirection(element, direction) {\n  switch (direction) {\n    case \"horizontal\":\n      return getTouchAction(element) === \"pan-x\";\n    case \"vertical\":\n      return getTouchAction(element) === \"pan-y\";\n    default:\n      return false;\n  }\n}\nfunction isInteractiveElement(element) {\n  const tag = element.tagName.toLowerCase();\n  if (tag === \"input\")\n    return true;\n  if (tag === \"text\")\n    return true;\n  if (tag === \"textarea\")\n    return true;\n  return false;\n}\nfunction canStartScrollFromElement(element, direction) {\n  if (!(element instanceof Element))\n    return false;\n  if (isInteractiveElement(element))\n    return false;\n  if (element.hasAttribute(\"draggable\")) {\n    if (!canPanInDirection(element, direction)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction getEventPoint(event) {\n  return {\n    x: event.pageX,\n    y: event.pageY\n  };\n}\nfunction setPointerEvents(element, value) {\n  if (element == null ? void 0 : element.style) {\n    element.style[\"pointerEvents\"] = value;\n  }\n}\nfunction getPointerEvents(element) {\n  var _a;\n  return (_a = element == null ? void 0 : element.style) == null ? void 0 : _a[\"pointerEvents\"];\n}\nvar emptyObject = /* @__PURE__ */ Object.freeze({});\nfunction useEmulateTouchScroll(ref, direction, enabled) {\n  if (isTouchDevice)\n    return emptyObject;\n  if (RenderTarget.current() !== RenderTarget.preview)\n    return emptyObject;\n  const scrollAnimationControlsRef = React39.useRef(null);\n  useEffect12(() => {\n    if (!ref.current)\n      return;\n    const element = ref.current;\n    let phase = 0 /* Idle */;\n    let targets = null;\n    let downPoint = null;\n    let scrollOffsetStart = null;\n    let mouseMoveEvents = [];\n    function onMouseMove(event) {\n      var _a;\n      switch (phase) {\n        case 0 /* Idle */:\n        case 4 /* DragAnimation */:\n        case 3 /* DragLocked */:\n          return;\n      }\n      if (event.metaKey)\n        return;\n      const point = getEventPoint(event);\n      if (!downPoint)\n        return;\n      const offset = Point.subtract(point, downPoint);\n      if (phase === 1 /* TouchDown */ || phase === 5 /* Interrupted */) {\n        const deltaX = Math.abs(offset.x);\n        const deltaY = Math.abs(offset.y);\n        if ((deltaX > scrollThreshold || deltaY > scrollThreshold) && deltaX !== deltaY) {\n          const scrollDirection = deltaX > deltaY ? \"horizontal\" : \"vertical\";\n          const shouldIgnoreBecauseOfDirectionLock = direction === \"horizontal\" && scrollDirection === \"vertical\" || direction === \"vertical\" && scrollDirection === \"horizontal\";\n          if (shouldIgnoreBecauseOfDirectionLock) {\n            phase = 3 /* DragLocked */;\n            return;\n          }\n          phase = 2 /* Drag */;\n          targets == null ? void 0 : targets.forEach(([target]) => setPointerEvents(target, \"none\"));\n        }\n      }\n      if (isSafariBrowser)\n        event.preventDefault();\n      if (phase !== 2 /* Drag */)\n        return;\n      (_a = safeWindow.getSelection()) == null ? void 0 : _a.empty();\n      mouseMoveEvents = getRecentEvents([...mouseMoveEvents, event]);\n      if (scrollOffsetStart) {\n        if (direction !== \"vertical\")\n          element.scrollLeft = scrollOffsetStart.x - offset.x;\n        if (direction !== \"horizontal\")\n          element.scrollTop = scrollOffsetStart.y - offset.y;\n      }\n    }\n    function onMouseUp(event) {\n      safeWindow.removeEventListener(\"mousemove\", onMouseMove, false);\n      safeWindow.removeEventListener(\"mouseup\", onMouseUp);\n      if (phase === 2 /* Drag */ && targets) {\n        targets.forEach(\n          ([target, originalPointerEventsValue]) => setPointerEvents(target, originalPointerEventsValue || \"auto\")\n        );\n      }\n      targets = null;\n      const velocity = calculateVelocity({ mouseMoveEvents, mouseUpEvent: event });\n      downPoint = null;\n      if (phase === 2 /* Drag */) {\n        const shouldAnimateY = direction !== \"horizontal\" && velocity.y !== 0;\n        const shouldAnimateX = direction !== \"vertical\" && velocity.x !== 0;\n        if (!shouldAnimateY && !shouldAnimateX) {\n          phase = 0 /* Idle */;\n          return;\n        }\n        phase = 4 /* DragAnimation */;\n        scrollAnimationControlsRef.current = animatePointWithInertia({\n          from: { x: element.scrollLeft, y: element.scrollTop },\n          velocity: {\n            x: shouldAnimateX ? velocity.x : 0,\n            y: shouldAnimateY ? velocity.y : 0\n          },\n          onUpdate: (position) => {\n            if (shouldAnimateX)\n              element.scrollLeft = position.x;\n            if (shouldAnimateY)\n              element.scrollTop = position.y;\n          },\n          onStop: () => {\n            if (phase !== 5 /* Interrupted */) {\n              phase = 0 /* Idle */;\n            }\n            scrollAnimationControlsRef.current = null;\n          },\n          onComplete: () => {\n            if (phase !== 4 /* DragAnimation */) {\n              throw Error(\"On animation completion we should still be in the animation phase\");\n            }\n            phase = 0 /* Idle */;\n            scrollAnimationControlsRef.current = null;\n          }\n        });\n      } else {\n        phase = 0 /* Idle */;\n      }\n    }\n    function onMouseWheel() {\n      var _a;\n      (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n    }\n    function onMouseDown(event) {\n      var _a;\n      if (!enabled)\n        return;\n      if (event.metaKey)\n        return;\n      if (!canStartScrollFromElement(event.target, direction)) {\n        if (phase === 4 /* DragAnimation */) {\n          phase = 0 /* Idle */;\n          (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n        }\n        return;\n      }\n      const previousPhase = phase;\n      phase = previousPhase === 4 /* DragAnimation */ ? 5 /* Interrupted */ : 1 /* TouchDown */;\n      downPoint = getEventPoint(event);\n      targets = document.elementsFromPoint(downPoint.x, downPoint.y).filter(\n        (targetEl) => targetEl instanceof HTMLElement || targetEl instanceof SVGElement\n      ).map((targetEl) => [targetEl, getPointerEvents(targetEl)]);\n      scrollOffsetStart = { x: element.scrollLeft, y: element.scrollTop };\n      mouseMoveEvents = [];\n      if (scrollAnimationControlsRef.current) {\n        if (previousPhase !== 4 /* DragAnimation */) {\n          throw Error(\"When stopping a drag animation we need to be animating\");\n        }\n        scrollAnimationControlsRef.current.stop();\n      }\n      safeWindow.addEventListener(\"mousemove\", onMouseMove);\n      safeWindow.addEventListener(\"mouseup\", onMouseUp);\n      element.addEventListener(\"mousewheel\", onMouseWheel);\n    }\n    element.addEventListener(\"mousedown\", onMouseDown);\n    return () => {\n      var _a;\n      element.removeEventListener(\"mousedown\", onMouseDown);\n      element.removeEventListener(\"mousewheel\", onMouseWheel);\n      safeWindow.removeEventListener(\"mousemove\", onMouseMove);\n      safeWindow.removeEventListener(\"mouseup\", onMouseUp);\n      phase = 5 /* Interrupted */;\n      (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n    };\n  }, [ref, direction, enabled]);\n  return React39.useMemo(() => {\n    return {\n      cancelEmulatedTouchScrollAnimation: () => {\n        var _a;\n        (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n      }\n    };\n  }, []);\n}\nvar timeDelta = /* @__PURE__ */ (() => 4 / 60 * 1e3)();\nfunction getRecentEvents(events) {\n  const currentTime = new CustomEvent(\"getTime\").timeStamp;\n  const maxAge = currentTime - timeDelta;\n  return events.filter((event) => event.timeStamp > maxAge);\n}\nvar zeroPoint = { x: 0, y: 0 };\nfunction calculateVelocity({\n  mouseMoveEvents,\n  mouseUpEvent\n}) {\n  const recentMouseMoveEvents = getRecentEvents(mouseMoveEvents);\n  const oldestMouseMoveEvent = recentMouseMoveEvents[0];\n  if (!oldestMouseMoveEvent)\n    return zeroPoint;\n  const deltaX = mouseUpEvent.clientX - oldestMouseMoveEvent.clientX;\n  const deltaY = mouseUpEvent.clientY - oldestMouseMoveEvent.clientY;\n  const time = mouseUpEvent.timeStamp - oldestMouseMoveEvent.timeStamp;\n  if (time === 0)\n    return zeroPoint;\n  return {\n    x: deltaX / time * 1e3,\n    y: deltaY / time * 1e3\n  };\n}\n\n// ../../library/src/components/utils/useUpdateScrollOffset.ts\nfunction useUpdateScrollOffset(ref, side, offset, cancelEmulatedTouchScrollAnimation) {\n  useIsomorphicLayoutEffect2(() => {\n    if (isMotionValue2(offset)) {\n      const updateScrollLeft = () => {\n        cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n        const element = ref.current;\n        if (element)\n          element[side] = Math.abs(offset.get());\n      };\n      updateScrollLeft();\n      return offset.on(\"change\", updateScrollLeft);\n    } else if (isFiniteNumber(offset)) {\n      const element = ref.current;\n      if (!element)\n        return;\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element[side] = Math.abs(offset);\n    }\n  }, [offset]);\n}\n\n// ../../library/src/components/Scroll/NativeScroll.tsx\nimport { jsx as jsx33, jsxs as jsxs11 } from \"react/jsx-runtime\";\nvar NativeScroll = /* @__PURE__ */ React40.forwardRef(function NativeScroll2(props, forwardedRef) {\n  const {\n    direction = \"vertical\",\n    scrollBarVisible = false,\n    dragEnabled = true,\n    contentOffsetX = 0,\n    contentOffsetY = 0,\n    contentWidth: _contentWidth,\n    contentHeight: _contentHeight,\n    children,\n    resetOffset,\n    onScroll,\n    className: className2,\n    // Not (yet) supported\n    directionLock: _directionLock = false,\n    wheelEnabled: _wheelEnabled = true,\n    scrollAnimate: _scrollAnimate,\n    dragTransition: _dragTransition,\n    dragMomentum: _dragMomentum,\n    dragElastic: _dragElastic,\n    overdragEnabled: _overdragEnabled = true,\n    onScrollStart: _onScrollStart,\n    onScrollEnd: _onScrollEnd,\n    onDragStart: _onDragStart,\n    onDrag: _onDrag,\n    onDragEnd: _onDragEnd,\n    onUpdate: _onUpdate,\n    onDirectionLock: _onDirectionLock,\n    layoutId: specificLayoutId,\n    native: _native,\n    // Rest\n    ...containerProps\n  } = props;\n  const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"scroll\" });\n  const fallbackRef = React40.useRef(null);\n  const ref = forwardedRef || fallbackRef;\n  const { cancelEmulatedTouchScrollAnimation } = useEmulateTouchScroll(ref, direction, dragEnabled);\n  useInsertionEffect3(() => {\n    injectComponentCSSRules();\n  }, []);\n  const isInTarget = useIsInCurrentNavigationTarget();\n  const previousIsInTargetRef = React40.useRef(isInTarget);\n  const updateScrollOffsetHandler = () => {\n    if (!resetOffset)\n      return;\n    const previousIsTarget = previousIsInTargetRef.current;\n    previousIsInTargetRef.current = isInTarget;\n    const shouldResetOffset = isInTarget && !previousIsTarget;\n    if (!shouldResetOffset)\n      return;\n    const element = ref.current;\n    if (!element)\n      return;\n    if (direction !== \"vertical\") {\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element.scrollLeft = Math.abs(isMotionValue2(contentOffsetX) ? contentOffsetX.get() : contentOffsetX);\n    }\n    if (direction !== \"horizontal\") {\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element.scrollTop = Math.abs(isMotionValue2(contentOffsetY) ? contentOffsetY.get() : contentOffsetY);\n    }\n  };\n  useIsomorphicLayoutEffect2(updateScrollOffsetHandler, [isInTarget]);\n  useUpdateScrollOffset(ref, \"scrollLeft\", contentOffsetX, cancelEmulatedTouchScrollAnimation);\n  useUpdateScrollOffset(ref, \"scrollTop\", contentOffsetY, cancelEmulatedTouchScrollAnimation);\n  const size = !containerProps.__fromCanvasComponent ? {\n    width: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.width,\n    height: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.height\n  } : {};\n  return /* @__PURE__ */ jsxs11(\n    FrameWithMotion,\n    {\n      ref,\n      \"data-framer-component-type\": \"NativeScroll\",\n      background: \"none\",\n      ...containerProps,\n      ...size,\n      onScroll,\n      layoutId,\n      onBeforeLayoutMeasure: updateScrollOffsetHandler,\n      layoutScroll: true,\n      className: cx(className2, `direction-${direction}`, !scrollBarVisible && \"scrollbar-hidden\"),\n      children: [\n        /* @__PURE__ */ jsx33(\n          EmptyState,\n          {\n            children,\n            size: {\n              width: isFiniteNumber(containerProps.width) ? containerProps.width : \"100%\",\n              height: isFiniteNumber(containerProps.height) ? containerProps.height : \"100%\"\n            },\n            insideUserCodeComponent: !containerProps.__fromCodeComponentNode,\n            title: \"Scroll\",\n            description: \"Click and drag the connector to any frame on the canvas \\u2192\"\n          }\n        ),\n        children\n      ]\n    }\n  );\n});\n\n// ../../library/src/components/Scroll/Scroll.tsx\nimport { jsx as jsx34 } from \"react/jsx-runtime\";\nvar Scroll = /* @__PURE__ */ (() => {\n  const ScrollInner = React41.forwardRef(function ScrollInner2(props, forwardedRef) {\n    if (props.native) {\n      return /* @__PURE__ */ jsx34(NativeScroll, { ref: forwardedRef, ...props });\n    } else {\n      return /* @__PURE__ */ jsx34(EmulatedScroll, { ref: forwardedRef, ...props });\n    }\n  });\n  ScrollInner.defaultProps = {\n    directionLock: false\n  };\n  addPropertyControls(ScrollInner, {\n    native: {\n      type: \"boolean\" /* Boolean */,\n      defaultValue: false\n    },\n    direction: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      title: \"Direction\",\n      options: [\"vertical\", \"horizontal\", \"both\"],\n      defaultValue: \"vertical\"\n    },\n    contentOffsetX: {\n      type: \"number\" /* Number */,\n      title: \"Offset X\",\n      defaultValue: 0,\n      min: 0,\n      step: 10,\n      displayStepper: true,\n      hidden: ({ direction }) => direction === \"vertical\"\n    },\n    contentOffsetY: {\n      type: \"number\" /* Number */,\n      title: \"Offset Y\",\n      defaultValue: 0,\n      min: 0,\n      step: 10,\n      displayStepper: true,\n      hidden: ({ direction }) => direction === \"horizontal\"\n    },\n    directionLock: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Lock\",\n      enabledTitle: \"1 Axis\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    dragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Drag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    overdragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Overdrag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    wheelEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Wheel\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    scrollBarVisible: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Scroll Bar\",\n      enabledTitle: \"Visible\",\n      disabledTitle: \"Hidden\",\n      defaultValue: false,\n      hidden: ({ native }) => native === false\n    },\n    resetOffset: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Reset\",\n      defaultValue: false\n    }\n  });\n  ScrollInner.supportsConstraints = true;\n  return ScrollInner;\n})();\n\n// ../../library/src/components/useNavigation.ts\nimport { useContext as useContext10 } from \"react\";\nfunction useNavigation() {\n  return useContext10(NavigationContext);\n}\n\n// ../../library/src/data/Data.ts\nvar data = /* @__PURE__ */ (() => {\n  function Data2(initial = {}) {\n    const _data = ObservableObject(initial, false, false);\n    Data2.addData(_data);\n    return _data;\n  }\n  Data2._stores = [];\n  Data2.addData = (_data) => {\n    Data2._stores.push(_data);\n  };\n  Data2.reset = () => {\n    Data2._stores.forEach((target) => ObservableObject.resetObject(target));\n  };\n  Data2.addObserver = (target, observer) => {\n    return ObservableObject.addObserver(target, observer);\n  };\n  return Data2;\n})();\nvar Data = data;\n\n// ../../library/src/data/PropertyStore.ts\nvar PropertyStore = /* @__PURE__ */ (() => {\n  function PropertyStore2(initial = {}, makeAnimatables = false) {\n    deprecationWarning(\"PropertyStore\", \"1.0.0\", \"Data() or ObservableObject()\");\n    return ObservableObject(initial, makeAnimatables);\n  }\n  PropertyStore2.addObserver = (target, observer) => {\n    return ObservableObject.addObserver(target, observer);\n  };\n  return PropertyStore2;\n})();\n\n// ../../library/src/data/useData/index.ts\nimport { createContext as createContext4, useContext as useContext11, useEffect as useEffect13, useMemo as useMemo5, useState as useState2 } from \"react\";\n\n// ../../library/src/data/useData/store.ts\nfunction bindActionsToStore(get, set, actions) {\n  const boundActions = {};\n  for (const key7 in actions) {\n    const action = actions[key7];\n    if (!action)\n      continue;\n    boundActions[key7] = (data2) => set(action(get(), data2));\n  }\n  return boundActions;\n}\nfunction createStore(initialState2, unboundActions) {\n  let state = initialState2;\n  let version2 = 0;\n  const subscribers = /* @__PURE__ */ new Set();\n  const notifySubscriber = (sub) => sub(version2);\n  const get = () => state;\n  const set = (latestState) => {\n    version2++;\n    state = latestState;\n    subscribers.forEach(notifySubscriber);\n  };\n  const actions = unboundActions ? bindActionsToStore(get, set, unboundActions) : set;\n  return {\n    get,\n    set,\n    getVersion: () => version2,\n    getActions: () => actions,\n    subscribe: (sub) => {\n      subscribers.add(sub);\n      return () => subscribers.delete(sub);\n    }\n  };\n}\n\n// ../../library/src/data/useData/index.ts\nvar defaultId = /* @__PURE__ */ Symbol(\"default\");\nvar DataContext = /* @__PURE__ */ createContext4(defaultId);\nfunction createData(defaultState2, actions) {\n  const stores = /* @__PURE__ */ new Map();\n  const useData = (id, initialState2) => {\n    const contextId = useContext11(DataContext);\n    id = id || contextId;\n    const store = useMemo5(() => {\n      if (!stores.has(id)) {\n        stores.set(id, createStore(initialState2 || defaultState2, actions));\n      }\n      return stores.get(id);\n    }, [id]);\n    const [, notifyUpdates] = useState2(store.getVersion());\n    const storeValueAtHookCallTime = useMemo5(() => store.get(), [store]);\n    useEffect13(() => {\n      const unsubscribe = store.subscribe(notifyUpdates);\n      if (storeValueAtHookCallTime !== store.get()) {\n        notifyUpdates(store.getVersion());\n      }\n      return unsubscribe;\n    }, [store, storeValueAtHookCallTime]);\n    return [store.get(), store.getActions()];\n  };\n  return useData;\n}\n\n// ../../library/src/deprecated/DataObserver.tsx\nimport React42, { Component as Component10 } from \"react\";\nimport { jsx as jsx35 } from \"react/jsx-runtime\";\nvar initialState = { update: 0 };\nvar DataObserverContext = /* @__PURE__ */ React42.createContext({ update: NaN });\nfunction useObserveData() {\n  const context = React42.useContext(DataObserverContext);\n  return !Number.isNaN(context.update);\n}\nvar DataObserver = class extends Component10 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"observers\", []);\n    __publicField(this, \"state\", initialState);\n    __publicField(this, \"taskAdded\", false);\n    __publicField(this, \"frameTask\", () => {\n      this.setState({ update: this.state.update + 1 });\n      this.taskAdded = false;\n    });\n    __publicField(this, \"observer\", () => {\n      if (this.taskAdded)\n        return;\n      this.taskAdded = true;\n      MainLoop.addFrameTask(this.frameTask);\n    });\n  }\n  componentWillUnmount() {\n    this.observers.map((cancel) => cancel());\n    Data.reset();\n  }\n  render() {\n    const { children } = this.props;\n    this.observers.map((cancel) => cancel());\n    this.observers = [];\n    Data._stores.forEach((d) => {\n      const observer = Data.addObserver(d, this.observer);\n      this.observers.push(observer);\n    });\n    return /* @__PURE__ */ jsx35(DataObserverContext.Provider, { value: { ...this.state }, children });\n  }\n};\n\n// ../../library/src/deprecated/WithOverride.tsx\nvar import_hoist_non_react_statics4 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport { useContext as useContext12 } from \"react\";\n\n// ../../library/src/deprecated/convertColorProps.ts\nfunction convertColorObject(prop) {\n  if (typeof prop === \"string\" || isMotionValue2(prop)) {\n    return prop;\n  } else if (LinearGradient.isLinearGradient(prop)) {\n    return LinearGradient.toCSS(prop);\n  } else if (RadialGradient.isRadialGradient(prop)) {\n    return RadialGradient.toCSS(prop);\n  } else if (Color.isColorObject(prop)) {\n    return Color.toRgbString(prop);\n  }\n  return prop;\n}\nfunction convertColorProps(props) {\n  if (props.background || props.color) {\n    const converted = Object.assign({}, props);\n    if (props.background) {\n      converted.background = convertColorObject(props.background);\n    }\n    if (props.color) {\n      converted.color = convertColorObject(props.color);\n    }\n    return converted;\n  }\n  return props;\n}\n\n// ../../library/src/deprecated/WithOverride.tsx\nimport { jsx as jsx36 } from \"react/jsx-runtime\";\nfunction WithOverride(Component18, override) {\n  const useOverride = typeof override === \"function\" ? (props) => override(convertColorProps(props)) : () => convertColorProps(override);\n  const ComponentWithOverride = function(props) {\n    useContext12(DataObserverContext);\n    const overrideProps = useOverride(props);\n    const { style, ...rest } = props;\n    return /* @__PURE__ */ jsx36(Component18, { ...rest, ...overrideProps, _initialStyle: style });\n  };\n  (0, import_hoist_non_react_statics4.default)(ComponentWithOverride, Component18);\n  ComponentWithOverride[\"displayName\"] = `WithOverride(${Component18.displayName || Component18.name})`;\n  return ComponentWithOverride;\n}\n\n// ../../library/src/modules/withFX.tsx\nimport React55 from \"react\";\n\n// ../../library/src/modules/hocOptions.ts\nvar prefix = \"__framer__\";\nvar prefixLength = /* @__PURE__ */ (() => prefix.length)();\nfunction extractPrefixedProps(props, keys3) {\n  const result = {};\n  const rest = {};\n  for (const key7 in props) {\n    const strippedKey = stripPrefixFromPrefixedKey(key7);\n    if (strippedKey && keys3.has(strippedKey)) {\n      result[strippedKey] = props[key7];\n      continue;\n    }\n    rest[key7] = props[key7];\n  }\n  return [result, rest];\n}\nfunction stripPrefixFromPrefixedKey(key7) {\n  if (key7.startsWith(prefix)) {\n    return key7.substr(prefixLength);\n  }\n  return void 0;\n}\n\n// ../../library/src/modules/optimizeAppear.tsx\nimport React49 from \"react\";\n\n// ../../library/src/modules/GeneratedComponentContext.ts\nimport React43 from \"react\";\nvar GeneratedComponentContext = /* @__PURE__ */ React43.createContext(\n  void 0\n);\n\n// ../../library/src/modules/PropertyOverrides.tsx\nimport React48 from \"react\";\n\n// ../../library/src/components/utils/cloneChildrenWithProps.tsx\nimport * as React44 from \"react\";\nimport { Fragment as Fragment6, jsx as jsx37 } from \"react/jsx-runtime\";\nfunction cloneChildrenWithProps(children, props, asNode) {\n  const cloned = React44.Children.map(children, (child) => {\n    if (React44.isValidElement(child)) {\n      return React44.cloneElement(child, props);\n    }\n    return child;\n  });\n  if (asNode)\n    return cloned;\n  return /* @__PURE__ */ jsx37(Fragment6, { children: cloned });\n}\n\n// ../../library/src/components/utils/useCloneChildrenWithPropsAndRef.tsx\nimport * as React45 from \"react\";\nimport { Fragment as Fragment7, jsx as jsx38 } from \"react/jsx-runtime\";\nfunction useCloneChildrenWithPropsAndRef(forwardedRef) {\n  const hook = useConstant(() => createHook(forwardedRef));\n  hook.useSetup(forwardedRef);\n  return hook.cloneAsElement;\n}\nfunction createHook(forwardedRef) {\n  const state = {\n    forwardedRef,\n    childRef: null,\n    ref: null\n  };\n  state.ref = createRefFunction(state);\n  const updateIfNeeded = (nextForwardedRef, ref) => {\n    if (!state.forwardedRef && state.forwardedRef === nextForwardedRef) {\n      state.ref = ref;\n      return;\n    }\n    let shouldUpdate = false;\n    if (state.childRef !== ref) {\n      state.childRef = ref;\n      shouldUpdate = true;\n    }\n    if (state.forwardedRef !== nextForwardedRef) {\n      state.forwardedRef = nextForwardedRef;\n      shouldUpdate = true;\n    }\n    if (!shouldUpdate)\n      return;\n    state.ref = createRefFunction(state);\n  };\n  let preventNextCall = false;\n  function cloneChildrenWithPropsAndRef(children, props) {\n    if (preventNextCall) {\n      throw new ReferenceError(\n        \"useCloneChildrenWithPropsAndRef: You should not call cloneChildrenWithPropsAndRef more than once during the render cycle.\"\n      );\n    }\n    preventNextCall = true;\n    if (React45.Children.count(children) > 1 && forwardedRef) {\n      if (false) {\n        throw new ReferenceError(\n          \"useCloneChildrenWithPropsAndRef: You should not have more than one child when using a forwarded ref.\"\n        );\n      }\n      state.forwardedRef = void 0;\n      state.ref = state.childRef;\n    }\n    return React45.Children.map(children, (child) => {\n      if (React45.isValidElement(child)) {\n        const ownRef = \"ref\" in child ? child.ref : void 0;\n        updateIfNeeded(state.forwardedRef, ownRef);\n        const newProps = isFunction(props) ? props(child.props) : props;\n        return React45.cloneElement(child, state.ref !== ownRef ? { ...newProps, ref: state.ref } : newProps);\n      }\n      return child;\n    });\n  }\n  const cloneAsElement = function cloneAsElement2(children, props) {\n    return /* @__PURE__ */ jsx38(Fragment7, { children: cloneChildrenWithPropsAndRef(children, props) });\n  };\n  cloneAsElement.cloneAsArray = cloneChildrenWithPropsAndRef;\n  return {\n    // used during render phase to sync props with state\n    useSetup: (newRef) => {\n      preventNextCall = false;\n      updateIfNeeded(newRef, state.childRef);\n    },\n    /**\n     * Clones children and adds props and refs and returns them as a JSX.Element\n     * Making it easier to use as it wraps them in a Fragment.\n     * */\n    cloneAsElement\n  };\n}\nfunction createRefFunction(state) {\n  if (!state.forwardedRef)\n    return state.childRef;\n  const { forwardedRef: prevForwardedRef, childRef: prevChildRef } = state;\n  return (value) => {\n    setRef(prevChildRef, value);\n    setRef(prevForwardedRef, value);\n  };\n}\n\n// ../../library/src/modules/withCSS.tsx\nimport React47, { useInsertionEffect as useInsertionEffect4 } from \"react\";\n\n// ../../library/src/render/StyleSheetContext.ts\nimport React46 from \"react\";\nvar StyleSheetContext = /* @__PURE__ */ React46.createContext(void 0);\n\n// ../../library/src/modules/withCSS.tsx\nimport { Fragment as Fragment8, jsx as jsx39, jsxs as jsxs12 } from \"react/jsx-runtime\";\nvar framerPostSSRCSSSelector = \"style[data-framer-css-ssr-minified]\";\nvar componentsWithServerRenderedStyles = /* @__PURE__ */ (() => {\n  var _a;\n  if (!isBrowser2())\n    return /* @__PURE__ */ new Set();\n  const componentsWithSSRStylesAttr = (_a = document.querySelector(framerPostSSRCSSSelector)) == null ? void 0 : _a.getAttribute(\"data-framer-components\");\n  if (!componentsWithSSRStylesAttr)\n    return /* @__PURE__ */ new Set();\n  return new Set(componentsWithSSRStylesAttr.split(\" \"));\n})();\nvar framerCSSMarker = \"data-framer-css-ssr\";\nvar withCSS = (Component18, escapedCSS, componentSerializationId) => React47.forwardRef((props, ref) => {\n  const { sheet, cache: cache2 } = React47.useContext(StyleSheetContext) ?? {};\n  const id = componentSerializationId;\n  if (!isBrowser2()) {\n    if (isFunction(escapedCSS))\n      escapedCSS = escapedCSS(RenderTarget.current());\n    const concatenatedCSS = Array.isArray(escapedCSS) ? escapedCSS.join(\"\\n\") : escapedCSS;\n    return /* @__PURE__ */ jsxs12(Fragment8, { children: [\n      /* @__PURE__ */ jsx39(\n        \"style\",\n        {\n          ...{ [framerCSSMarker]: true },\n          \"data-framer-component\": id,\n          dangerouslySetInnerHTML: { __html: concatenatedCSS }\n        }\n      ),\n      /* @__PURE__ */ jsx39(Component18, { ...props, ref })\n    ] });\n  }\n  useInsertionEffect4(() => {\n    if (id && componentsWithServerRenderedStyles.has(id))\n      return;\n    const css2 = isFunction(escapedCSS) ? escapedCSS(RenderTarget.current()) : Array.isArray(escapedCSS) ? escapedCSS : escapedCSS.split(\"\\n\");\n    css2.forEach((rule) => rule && injectCSSRule(rule, sheet, cache2));\n  }, []);\n  return /* @__PURE__ */ jsx39(Component18, { ...props, ref });\n});\n\n// ../../library/src/modules/PropertyOverrides.tsx\nimport { jsx as jsx40 } from \"react/jsx-runtime\";\nvar SSRParentVariantsContext = /* @__PURE__ */ React48.createContext(void 0);\nvar SSRVariantClassName = \"ssr-variant\";\nfunction renderBranchedChildrenFromPropertyOverrides(overrides, children, props, variantClassNames, primaryVariantId, parentVariants, cloneChildren, activeVariantId) {\n  const childrenArray = React48.Children.toArray(children);\n  const child = childrenArray[0];\n  if (childrenArray.length !== 1 || !React48.isValidElement(child)) {\n    console.warn(\"PropertyOverrides: expected exactly one React element for a child\", children);\n    return cloneChildren(children, props);\n  }\n  const branches = [];\n  const nonOverriddenVariants = [];\n  for (const [variantId] of Object.entries(variantClassNames)) {\n    if (variantId === primaryVariantId)\n      continue;\n    const propOverrides = overrides[variantId];\n    if (!propOverrides || !arePropOverridesEffectivelyDifferent(child.props, propOverrides)) {\n      nonOverriddenVariants.push(variantId);\n      continue;\n    }\n    const effectiveVariants = intersection([variantId], parentVariants);\n    if (effectiveVariants.length)\n      branches.push({ variants: effectiveVariants, propOverrides });\n  }\n  if (branches.length === 0)\n    return cloneChildren(child, props);\n  const remainingVariants = [primaryVariantId, ...nonOverriddenVariants];\n  const effectiveRemainingVariants = intersection(remainingVariants, parentVariants);\n  if (effectiveRemainingVariants.length)\n    branches.unshift({ variants: effectiveRemainingVariants });\n  const renderedBranches = [];\n  for (const { variants, propOverrides } of branches) {\n    if (activeVariantId && !variants.includes(activeVariantId)) {\n      continue;\n    }\n    const key7 = variants.join(\"+\");\n    let element = (\n      // We could omit the SSRParentVariantsContext if variants is the same as parentVariants, but that'd require\n      // comparing arrays, so it might not really be an optimization. And since it's just a context, it doesn't\n      // affect the size of the generated HTML.\n      /* @__PURE__ */ jsx40(SSRParentVariantsContext.Provider, { value: new Set(variants), children: cloneChildren(child, propOverrides ? { ...props, ...propOverrides } : props) }, key7)\n    );\n    const hiddenClassNames = generateHiddenClassNames(variants, parentVariants, variantClassNames);\n    if (hiddenClassNames.length) {\n      assert(branches.length > 1, \"Must branch out when there are hiddenClassNames\");\n      element = /* @__PURE__ */ jsx40(\"div\", { className: `${SSRVariantClassName} ${hiddenClassNames.join(\" \")}`, children: element }, key7);\n    } else {\n      assert(branches.length === 1, \"Cannot branch out when hiddenClassNames is empty\");\n    }\n    renderedBranches.push(element);\n  }\n  assert(\n    !activeVariantId || renderedBranches.length === 1,\n    \"Must render exactly one branch when activeVariantId is given\"\n  );\n  return renderedBranches;\n}\nvar SSRVariants = /* @__PURE__ */ React48.forwardRef(\n  function SSRVariants2({ id: _nodeId, children, ...props }, ref) {\n    const cloneWithRefs = useCloneChildrenWithPropsAndRef(ref);\n    if (isBrowser2()) {\n      return cloneWithRefs(children, props);\n    }\n    throw new Error(\"SSRVariants is no longer supported outside canvas and preview\");\n  }\n);\nfunction variantHashFromClassName(className2) {\n  return className2.split(\"-\")[2];\n}\nfunction generateHiddenClassNames(showOnlyInVariantIds, parentVariants, variantClassNames) {\n  const classNames = [];\n  for (const [variantId, variantClassName] of Object.entries(variantClassNames)) {\n    const alreadyHiddenInParent = parentVariants && !parentVariants.has(variantId);\n    if (showOnlyInVariantIds.includes(variantId) || alreadyHiddenInParent)\n      continue;\n    classNames.push(`hidden-${variantHashFromClassName(variantClassName)}`);\n  }\n  return classNames;\n}\nfunction intersection(variants, parentVariants) {\n  if (!parentVariants)\n    return variants;\n  return variants.filter((variant) => parentVariants.has(variant));\n}\nfunction arePropOverridesEffectivelyDifferent(props, propOverrides) {\n  for (const key7 of Object.keys(propOverrides)) {\n    if (!isEqual(props[key7], propOverrides[key7], true)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction propsForBreakpoint(variant, props, overrides) {\n  if (!overrides || !variant)\n    return props;\n  return { ...props, ...overrides[variant] };\n}\nvar PropertyOverridesWithoutCSS = /* @__PURE__ */ React48.forwardRef(\n  function PropertyOverrides({ breakpoint, overrides, children, ...props }, ref) {\n    const cloneWithRefs = useCloneChildrenWithPropsAndRef(ref);\n    const parentVariants = React48.useContext(SSRParentVariantsContext);\n    const isHydrationOrSSR = useIsHydrationOrSSR();\n    const action = useConstant(() => {\n      if (isHydrationOrSSR.current) {\n        if (isBrowser2()) {\n          return 1 /* RenderActiveBranch */;\n        } else {\n          return 2 /* RenderAllBranches */;\n        }\n      } else {\n        return 0 /* PassThrough */;\n      }\n    });\n    const generatedComponentContext = React48.useContext(GeneratedComponentContext);\n    if (!generatedComponentContext) {\n      console.warn(\"PropertyOverrides is missing GeneratedComponentContext\");\n      return cloneWithRefs(children, props);\n    }\n    const { primaryVariantId, variantClassNames } = generatedComponentContext;\n    switch (action) {\n      case 0 /* PassThrough */:\n        return cloneWithRefs(children, propsForBreakpoint(breakpoint, props, overrides));\n      case 1 /* RenderActiveBranch */:\n        return renderBranchedChildrenFromPropertyOverrides(\n          overrides,\n          children,\n          props,\n          variantClassNames,\n          primaryVariantId,\n          parentVariants,\n          cloneWithRefs,\n          breakpoint\n          // only render the single, active branch\n        );\n      case 2 /* RenderAllBranches */:\n        return renderBranchedChildrenFromPropertyOverrides(\n          overrides,\n          children,\n          props,\n          variantClassNames,\n          primaryVariantId,\n          parentVariants,\n          // On the server, we use plain cloneChildrenWithProps instead of useCloneChildrenWithPropsAndRef,\n          // because we can't clone one ref to multiple branched-out elements (useCloneChildrenWithPropsAndRef\n          // even guards against it), but luckily, refs mean nothing on the server anyway.\n          cloneChildrenWithProps,\n          void 0\n          // render all branches\n        );\n      default:\n        assertNever(action);\n    }\n  }\n);\nvar PropertyOverrides2 = /* @__PURE__ */ (() => withCSS(PropertyOverridesWithoutCSS, `.${SSRVariantClassName} { display: contents }`, \"PropertyOverrides\"))();\n\n// ../../library/src/modules/optimizeAppear.tsx\nimport { jsx as jsx41 } from \"react/jsx-runtime\";\nvar defaultVariantKey = \"default\";\nvar defaultVariants = /* @__PURE__ */ new Set([defaultVariantKey]);\nvar _variantHashes;\nvar AnimationCollector = class {\n  constructor() {\n    __publicField(this, \"entries\", /* @__PURE__ */ new Map());\n    __privateAdd(this, _variantHashes, {});\n  }\n  /** @deprecated */\n  set(nodeId, prop, value, variantHash) {\n    switch (prop) {\n      case \"transformTemplate\": {\n        assert(typeof value === \"string\", `transformTemplate must be a string, received: ${value}`);\n        this.setHash(nodeId, variantHash, { transformTemplate: value, legacy: true });\n        break;\n      }\n      case \"initial\":\n      case \"animate\": {\n        assert(typeof value === \"object\", `${prop} must be a valid object, received: ${value}`);\n        this.setHash(nodeId, variantHash, { [prop]: value, legacy: true });\n        break;\n      }\n      default:\n        break;\n    }\n  }\n  setHash(id, variantHash = defaultVariantKey, value) {\n    const existing = this.entries.get(id) ?? {};\n    const existingValue = existing[variantHash] ?? {};\n    existing[variantHash] = value === null ? null : { ...existingValue, ...value };\n    this.entries.set(id, existing);\n  }\n  variantHash(variantId, info) {\n    if (variantId === (info == null ? void 0 : info.primaryVariantId))\n      return defaultVariantKey;\n    const existing = __privateGet(this, _variantHashes)[variantId];\n    if (existing)\n      return existing;\n    const className2 = info == null ? void 0 : info.variantClassNames[variantId];\n    if (!className2)\n      return defaultVariantKey;\n    return __privateGet(this, _variantHashes)[variantId] = variantHashFromClassName(className2);\n  }\n  setAll(id, variants = defaultVariants, props, info) {\n    var _a;\n    if (props === null) {\n      for (const variantId of variants) {\n        this.setHash(id, this.variantHash(variantId, info), null);\n      }\n      return;\n    }\n    const transformTemplate2 = isFunction(props.transformTemplate) ? (_a = props.transformTemplate) == null ? void 0 : _a.call(props, {}, framerAppearTransformTemplateToken) : void 0;\n    const initial = props.__framer__presenceInitial ?? props.initial;\n    const animate3 = props.__framer__presenceAnimate ?? props.animate;\n    const config = {\n      initial: isObject(initial) ? initial : void 0,\n      animate: isObject(animate3) ? animate3 : void 0,\n      transformTemplate: isString(transformTemplate2) ? transformTemplate2 : void 0\n    };\n    for (const variantId of variants)\n      this.setHash(id, this.variantHash(variantId, info), config);\n  }\n  clear() {\n    this.entries.clear();\n  }\n  toObject() {\n    return Object.fromEntries(this.entries);\n  }\n};\n_variantHashes = new WeakMap();\nvar framerAppearEffects = /* @__PURE__ */ new AnimationCollector();\nfunction withOptimizedAppearEffect(Component18) {\n  return React49.forwardRef(({ optimized, ...props }, ref) => {\n    const generatedComponentContext = React49.useContext(GeneratedComponentContext);\n    const variants = React49.useContext(SSRParentVariantsContext);\n    const id = props[framerAppearIdKey];\n    if (id && !isBrowser2()) {\n      framerAppearEffects.setAll(\n        id,\n        variants,\n        // A layer may have an optimization id, and an `animate` prop,\n        // but not require optimization. For example in the case of a\n        // layer where one variant has an appear effect, and another\n        // variant has a scroll appear effect, the scroll appear effect\n        // should not be optimized.\n        optimized ? props : null,\n        generatedComponentContext\n      );\n    }\n    const disabledProps = getDisabledFXPropsInStaticRenderer(props);\n    return /* @__PURE__ */ jsx41(Component18, { ref, ...props, ...disabledProps });\n  });\n}\nvar optimizeAppear = (prop, id, animateTargetAndTransition, variantHash) => {\n  if (!isBrowser2()) {\n    framerAppearEffects.set(id, prop, animateTargetAndTransition, variantHash);\n  }\n  return animateTargetAndTransition;\n};\nvar framerAppearTransformTemplateToken = \"__Appear_Animation_Transform__\";\nvar optimizeAppearTransformTemplate = (id, fn) => {\n  if (!isBrowser2()) {\n    const template = fn == null ? void 0 : fn({}, framerAppearTransformTemplateToken);\n    if (template === void 0)\n      return fn;\n    framerAppearEffects.set(id, \"transformTemplate\", template);\n  }\n  return fn;\n};\nvar framerAppearIdKey = \"data-framer-appear-id\";\nvar framerAppearAnimationScriptKey = \"data-framer-appear-animation\";\nvar getDisabledFXPropsInStaticRenderer = (props) => {\n  const isRenderingStaticContent = isStaticRenderer();\n  if (!isRenderingStaticContent)\n    return void 0;\n  return {\n    animate: isVariantOrVariantList(props.animate) ? props.animate : void 0,\n    initial: isVariantOrVariantList(props.initial) ? props.initial : void 0,\n    exit: void 0\n  };\n};\nfunction isVariantOrVariantList(value) {\n  return isString(value) || Array.isArray(value);\n}\n\n// ../../library/src/modules/useFXValues.ts\nimport React50 from \"react\";\nvar effectValuesKeys = [\n  \"opacity\",\n  \"x\",\n  \"y\",\n  \"scale\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"skewX\",\n  \"skewY\",\n  /** @deprecated */\n  \"transformPerspective\"\n];\nvar makeFXValues = (defaults) => {\n  return {\n    x: motionValue((defaults == null ? void 0 : defaults.x) ?? 0),\n    y: motionValue((defaults == null ? void 0 : defaults.y) ?? 0),\n    opacity: motionValue((defaults == null ? void 0 : defaults.opacity) ?? 1),\n    scale: motionValue((defaults == null ? void 0 : defaults.scale) ?? 1),\n    rotate: motionValue((defaults == null ? void 0 : defaults.rotate) ?? 0),\n    rotateX: motionValue((defaults == null ? void 0 : defaults.rotateX) ?? 0),\n    rotateY: motionValue((defaults == null ? void 0 : defaults.rotateY) ?? 0),\n    skewX: motionValue((defaults == null ? void 0 : defaults.skewX) ?? 0),\n    skewY: motionValue((defaults == null ? void 0 : defaults.skewY) ?? 0),\n    /** @deprecated */\n    transformPerspective: motionValue((defaults == null ? void 0 : defaults.transformPerspective) ?? 0)\n  };\n};\nvar defaultFXValues = {\n  x: 0,\n  y: 0,\n  scale: 1,\n  opacity: 1,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  skewX: 0,\n  skewY: 0,\n  /** @deprecated */\n  transformPerspective: 0\n};\nfunction isFXValuesKey(key7) {\n  return key7 in defaultFXValues;\n}\nvar effectEnabledStyle = {\n  willChange: \"transform\"\n};\nObject.freeze(effectEnabledStyle);\nvar effectDisabledStyle = {};\nObject.freeze(effectDisabledStyle);\nfunction useFXValues(values, enabled) {\n  const effect = useConstant(() => ({ values: makeFXValues(enabled ? values : void 0) }));\n  React50.useEffect(() => {\n    if (enabled)\n      return;\n    for (const key7 of effectValuesKeys) {\n      const value = defaultFXValues[key7];\n      if (isUndefined(value))\n        continue;\n      effect.values[key7].set(value);\n    }\n  }, [enabled]);\n  return effect;\n}\n\n// ../../library/src/modules/useLoopEffect.ts\nimport { startTransition, useCallback as useCallback8, useEffect as useEffect14, useMemo as useMemo6, useRef as useRef14, useState as useState3 } from \"react\";\nvar loopOptionsKeys = /* @__PURE__ */ new Set([\n  \"loopEffectEnabled\",\n  \"loopTransition\",\n  \"loop\",\n  \"loopRepeatType\",\n  \"loopRepeatDelay\",\n  \"loopPauseOffscreen\"\n]);\nvar useDelay = () => {\n  const timeoutRef = useRef14();\n  useEffect14(() => {\n    return () => {\n      clearTimeout(timeoutRef.current);\n    };\n  }, []);\n  return async (d) => new Promise((resolve) => {\n    timeoutRef.current = setTimeout(() => {\n      resolve(true);\n    }, d * 1e3);\n  });\n};\nfunction useLoop({\n  loopEffectEnabled,\n  loopRepeatDelay,\n  loopTransition,\n  loopRepeatType,\n  loop,\n  loopPauseOffscreen\n}, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const values = useConstant(makeFXValues);\n  const mirrorStateRef = useRef14(false);\n  const delay2 = useDelay();\n  const animateValues = useCallback8(async () => {\n    if (!loop)\n      return;\n    const transition = loopTransition || void 0;\n    const mirror = mirrorStateRef.current && loopRepeatType === \"mirror\";\n    const to = mirror ? defaultFXValues : loop;\n    const from = mirror ? loop : defaultFXValues;\n    mirrorStateRef.current = !mirrorStateRef.current;\n    return Promise.all(\n      effectValuesKeys.map((key7) => {\n        if (shouldReduceMotion && key7 !== \"opacity\")\n          return;\n        values[key7].set(from[key7] ?? defaultFXValues[key7]);\n        return new Promise((resolve) => {\n          const opts = {\n            ...transition,\n            onComplete: () => resolve()\n          };\n          const target = to[key7] ?? from[key7];\n          if (typeof target === \"number\") {\n            animate(values[key7], target, opts);\n          }\n        });\n      })\n    );\n  }, [loop, loopRepeatType, loopTransition, shouldReduceMotion]);\n  const [isRunning, setIsRunning] = useState3(false);\n  const shouldRunRef = useRef14(false);\n  const animateLoop = useCallback8(async () => {\n    if (!loopEffectEnabled || !shouldRunRef.current)\n      return;\n    await animateValues();\n    await delay2(loopRepeatDelay ?? 0);\n    await animateLoop();\n  }, [animateValues, delay2, loopEffectEnabled, loopRepeatDelay]);\n  const start = useCallback8(() => {\n    if (shouldRunRef.current)\n      return;\n    shouldRunRef.current = true;\n    startTransition(() => setIsRunning(true));\n    void animateLoop();\n  }, [animateLoop]);\n  const stop = useCallback8((overrideRunRef = true) => {\n    effectValuesKeys.forEach((key7) => {\n      values[key7].stop();\n    });\n    effectValuesKeys.forEach((key7) => {\n      values[key7].set(defaultFXValues[key7]);\n    });\n    mirrorStateRef.current = false;\n    if (overrideRunRef) {\n      shouldRunRef.current = false;\n      startTransition(() => setIsRunning(false));\n    }\n  }, []);\n  const hasLoop = loopEffectEnabled && loop;\n  const startStopTabVisibilityListener = useCallback8(() => {\n    if (document.hidden) {\n      stop(false);\n    } else if (shouldRunRef.current) {\n      shouldRunRef.current = false;\n      start();\n    }\n  }, [start, stop]);\n  useEffect14(() => {\n    if (!hasLoop)\n      return;\n    document.addEventListener(\"visibilitychange\", startStopTabVisibilityListener);\n    return () => {\n      document.removeEventListener(\"visibilitychange\", startStopTabVisibilityListener);\n    };\n  }, [hasLoop, startStopTabVisibilityListener]);\n  useEffect14(() => {\n    if (hasLoop && loopPauseOffscreen)\n      return;\n    if (hasLoop) {\n      start();\n    } else {\n      stop();\n    }\n  }, [start, stop, loopPauseOffscreen, hasLoop]);\n  useEffect14(() => {\n    return () => stop();\n  }, []);\n  const startAndStopBasedOnIntersection = useCallback8(\n    (entry) => {\n      if (entry.isIntersecting) {\n        start();\n      } else {\n        stop();\n      }\n    },\n    [start, stop]\n  );\n  useSharedIntersectionObserver(ref, startAndStopBasedOnIntersection, {\n    enabled: hasLoop && loopPauseOffscreen\n  });\n  const addWillChange = isRunning || !loopPauseOffscreen;\n  return useMemo6(() => {\n    return {\n      values,\n      style: hasLoop && addWillChange ? effectEnabledStyle : effectDisabledStyle\n    };\n  }, [hasLoop, addWillChange]);\n}\n\n// ../../library/src/modules/useParallax.ts\nimport React51 from \"react\";\n\n// ../../library/src/modules/parallaxTransform.ts\nfunction parallaxTransform(scrollY, originalPosition, speed, offset, adjustPosition) {\n  const speedFactor = speed / 100 - 1;\n  const initialPosition = adjustPosition ? (originalPosition - offset) * speedFactor : 0;\n  const scrollOffset = -scrollY * speedFactor;\n  return initialPosition + scrollOffset;\n}\n\n// ../../library/src/modules/useParallax.ts\nvar parallaxOptionsKeys = /* @__PURE__ */ new Set([\n  \"speed\",\n  \"adjustPosition\",\n  \"offset\",\n  \"parallaxTransformEnabled\"\n]);\nfunction useParallax(options, ref, visibilityStyle) {\n  const { speed = 100, offset = 0, adjustPosition = false, parallaxTransformEnabled } = options;\n  const originalPosition = React51.useRef(null);\n  const shouldReduceMotion = useReducedMotionConfig();\n  const transform2 = React51.useCallback(\n    (yValue) => {\n      if (originalPosition.current === null)\n        return 0;\n      if (speed === 100)\n        return 0;\n      return parallaxTransform(yValue, originalPosition.current, speed, offset, adjustPosition);\n    },\n    [speed, offset, adjustPosition]\n  );\n  const { scrollY } = useScroll();\n  const parallaxY = useTransform(scrollY, transform2);\n  const visibility = useMotionValue(adjustPosition && originalPosition.current === null ? \"hidden\" : visibilityStyle);\n  const defaultValue = useMotionValue(0);\n  useRefEffect(\n    ref,\n    (element) => {\n      if (element === null)\n        return;\n      frame.read(() => {\n        var _a;\n        originalPosition.current = ((_a = element.getBoundingClientRect()) == null ? void 0 : _a.top) ?? 0;\n      });\n      frame.update(() => {\n        parallaxY.set(transform2(scrollY.get()));\n        if (adjustPosition) {\n          visibility.set(visibilityStyle ?? \"initial\");\n        }\n      });\n    },\n    [adjustPosition]\n  );\n  useOnRouteChange(() => parallaxY.set(0));\n  return {\n    values: {\n      y: shouldReduceMotion || !parallaxTransformEnabled ? defaultValue : parallaxY\n    },\n    style: parallaxTransformEnabled ? {\n      ...effectEnabledStyle,\n      visibility\n    } : effectDisabledStyle\n  };\n}\n\n// ../../library/src/modules/usePresenceAnimation.ts\nimport { useMemo as useMemo7, useRef as useRef15 } from \"react\";\nfunction getTransition(value) {\n  if (isString(value) || !isObject(value))\n    return void 0;\n  return value == null ? void 0 : value.transition;\n}\nfunction runEffectAnimation(target, effect, shouldReduceMotion, ref, appearId, instant) {\n  const transition = getTransition(target);\n  return Promise.all(\n    effectValuesKeys.map((key7) => {\n      return new Promise((resolve) => {\n        if (shouldReduceMotion && key7 !== \"opacity\")\n          return resolve();\n        const motionValue2 = effect.values[key7];\n        motionValue2.stop();\n        let value = !isObject(target) ? defaultFXValues[key7] : (target == null ? void 0 : target[key7]) ?? defaultFXValues[key7];\n        if (isMotionValue(value))\n          value = value.get();\n        if (!isNumber(value))\n          return resolve();\n        const visualElement = visualElementStore.get(ref.current);\n        if (visualElement)\n          visualElement.setBaseTarget(key7, value);\n        let startTime;\n        if (isString(appearId) && !(motionValue2 == null ? void 0 : motionValue2.hasAnimated) && safeWindow.MotionHandoffAnimation) {\n          const handoffAnimationStartTime = safeWindow.MotionHandoffAnimation(appearId, key7, frame);\n          if (handoffAnimationStartTime) {\n            startTime = handoffAnimationStartTime;\n          }\n        }\n        if (instant) {\n          motionValue2.set(value);\n        } else {\n          animate(motionValue2, value, {\n            ...transition,\n            velocity: 0,\n            startTime,\n            onComplete: () => resolve()\n          });\n        }\n      });\n    })\n  );\n}\nvar presenceOptionsKeys = /* @__PURE__ */ new Set([\n  \"presenceInitial\",\n  \"presenceAnimate\",\n  \"presenceExit\"\n]);\nfunction usePresenceAnimation({\n  initial: motionInitial,\n  animate: motionAnimate,\n  exit: motionExit,\n  presenceInitial,\n  presenceAnimate,\n  presenceExit\n}, ref, enabled, style, appearId) {\n  const initial = presenceInitial ?? motionInitial;\n  const animateConfig = presenceAnimate ?? motionAnimate;\n  const exit = presenceExit ?? motionExit;\n  const [isPresent, safeToRemove] = usePresence();\n  const internalState = useRef15({\n    lastPresence: false,\n    lastAnimate: animateConfig,\n    hasMounted: false,\n    running: false\n  });\n  const effect = useConstant(() => {\n    const base = initial ?? style;\n    if (!isObject(base))\n      return { values: makeFXValues() };\n    const defaults = {};\n    for (const key7 in base) {\n      const value = isObject(base) ? base[key7] : void 0;\n      if (!isNumber(value))\n        continue;\n      defaults[key7] = value;\n    }\n    return { values: makeFXValues(defaults) };\n  });\n  useRefEffect(\n    ref,\n    (element) => {\n      const { hasMounted } = internalState.current;\n      if (hasMounted && animateConfig)\n        return;\n      const visualElement = visualElementStore.get(element);\n      if (!visualElement)\n        return;\n      Object.assign(internalState.current, { hasMounted: true });\n      for (const key7 in effect.values) {\n        if (!isFXValuesKey(key7))\n          continue;\n        const value = style == null ? void 0 : style[key7];\n        visualElement.setBaseTarget(key7, isNumber(value) ? value : defaultFXValues[key7]);\n      }\n    },\n    [animateConfig]\n  );\n  const shouldReduceMotion = useReducedMotionConfig();\n  useRefEffect(ref, (element) => {\n    if (!enabled) {\n      safeToRemove == null ? void 0 : safeToRemove();\n      return;\n    }\n    if (element === null)\n      return;\n    if (isPresent !== internalState.current.lastPresence) {\n      Object.assign(internalState.current, { lastPresence: isPresent });\n      if (isPresent) {\n        if (initial && animateConfig) {\n          Object.assign(internalState.current, { running: true });\n          void runEffectAnimation(animateConfig, effect, shouldReduceMotion, ref, appearId).then(\n            () => Object.assign(internalState.current, { running: false })\n          );\n        }\n      } else if (exit) {\n        Object.assign(internalState.current, { running: true });\n        void runEffectAnimation(exit, effect, shouldReduceMotion, ref, appearId).then(() => Object.assign(internalState.current, { running: false })).then(() => safeToRemove());\n      } else {\n        safeToRemove();\n      }\n      return;\n    }\n    const { lastAnimate, running } = internalState.current;\n    const hasAnimateChanged = !isEqual(animateConfig, lastAnimate);\n    if (!hasAnimateChanged || !animateConfig)\n      return;\n    Object.assign(internalState.current, { lastAnimate: animateConfig });\n    void runEffectAnimation(animateConfig, effect, shouldReduceMotion, ref, appearId, !running).then(\n      () => Object.assign(internalState.current, { running: false })\n    );\n  });\n  const effectEnabled = enabled && animateConfig;\n  return useMemo7(() => {\n    return { values: effect.values, style: effectEnabled ? effectEnabledStyle : effectDisabledStyle };\n  }, [effectEnabled]);\n}\n\n// ../../library/src/modules/useStyleAppearEffect.ts\nimport React53, { useMemo as useMemo8 } from \"react\";\n\n// ../../library/src/modules/calculateOffsetTop.ts\nfunction calcOffsetTop(element, container) {\n  let top = 0;\n  let current = element;\n  while (current && current !== container) {\n    if (!(current instanceof HTMLElement))\n      break;\n    top += current.offsetTop;\n    current = current.offsetParent;\n  }\n  return top;\n}\n\n// ../../library/src/modules/createTransformInputRange.ts\nvar scrollObserverOffset = 1;\nfunction createTransformInputRange(transformTargets, threshold = 0, callback) {\n  var _a;\n  const starts = [];\n  const inputRange = [];\n  for (let index = transformTargets.length; index >= 0; index--) {\n    const { ref: targetRef, offset } = transformTargets[index] ?? {};\n    if (!targetRef || !targetRef.current)\n      continue;\n    const offsetTop = calcOffsetTop(targetRef.current, document.documentElement);\n    const top = offsetTop - scrollObserverOffset - (offset ?? 0) - threshold;\n    const height = ((_a = targetRef.current) == null ? void 0 : _a.clientHeight) ?? 0;\n    const previousTop = starts[starts.length - 1];\n    const end = Math.max(top + height, 0);\n    starts.push(top);\n    inputRange.unshift(\n      Math.max(top, 0),\n      previousTop === void 0 ? end : Math.min(end, Math.max(previousTop - 1, 0))\n    );\n    callback == null ? void 0 : callback(index);\n  }\n  return inputRange;\n}\n\n// ../../library/src/modules/useScrollDirectionChange.ts\nimport React52 from \"react\";\nfunction currentScrollDirection(offset, lastOffset = 0) {\n  if (offset < lastOffset)\n    return \"up\";\n  return \"down\";\n}\nvar scrollDirectionThreshold = 4;\nfunction useScrollDirectionChange(scrollDirection, cb, options = {}) {\n  const { direction, target } = scrollDirection ?? {};\n  const { repeat = true, enabled = true } = options;\n  const currentRouteKey = useCurrentRouteKey();\n  React52.useEffect(() => {\n    if (!direction || !enabled)\n      return;\n    const _ = currentRouteKey;\n    let lastOffset = void 0;\n    let directionChangeOffset = 0;\n    let lastDirection = void 0;\n    let currentTarget = void 0;\n    return scrollInfo(({ y: scrollY }) => {\n      if (!repeat && currentTarget === target)\n        return;\n      if (scrollY.current > scrollY.scrollLength)\n        return;\n      if (scrollY.current < 0)\n        return;\n      const d = currentScrollDirection(scrollY.current, lastOffset);\n      lastOffset = scrollY.current;\n      const hasDirectionChanged = d !== lastDirection;\n      lastDirection = d;\n      if (hasDirectionChanged) {\n        directionChangeOffset = scrollY.current;\n      } else {\n        const delta = Math.abs(scrollY.current - directionChangeOffset);\n        if (delta < scrollDirectionThreshold)\n          return;\n        const nextTarget = d === direction ? target : void 0;\n        if (nextTarget !== currentTarget)\n          cb(nextTarget);\n        currentTarget = nextTarget;\n      }\n    });\n  }, [currentRouteKey, direction, repeat, target, enabled, cb]);\n}\n\n// ../../library/src/modules/useStyleAppearEffect.ts\nvar styleAppearOptionsKeys = /* @__PURE__ */ new Set([\n  \"threshold\",\n  \"animateOnce\",\n  \"opacity\",\n  \"targetOpacity\",\n  \"x\",\n  \"y\",\n  \"scale\",\n  \"transition\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"perspective\",\n  \"enter\",\n  \"exit\",\n  \"animate\",\n  \"styleAppearEffectEnabled\",\n  \"targets\",\n  \"scrollDirection\"\n]);\nvar defaultOutputRange = [\"animate\", \"animate\"];\nvar defaultRanges = { inputRange: [], outputRange: [] };\nfunction createInputOutputRange(targets, threshold, hasExit) {\n  const inputRange = createTransformInputRange(targets, threshold);\n  const outputRange = [...defaultOutputRange];\n  const firstRange = inputRange[0];\n  if (!isNumber(firstRange))\n    return defaultRanges;\n  if (firstRange > 1) {\n    inputRange.unshift(0, firstRange - 1);\n    outputRange.unshift(\"initial\", \"initial\");\n  }\n  if (hasExit) {\n    const idx = inputRange.length - 1;\n    const last = inputRange[idx];\n    if (!isNumber(last))\n      return defaultRanges;\n    inputRange.push(last + 1);\n    outputRange.push(\"exit\");\n  }\n  return {\n    inputRange,\n    outputRange\n  };\n}\nfunction makeStyle(defaults) {\n  return {\n    x: (defaults == null ? void 0 : defaults.x) ?? defaultFXValues.x,\n    y: (defaults == null ? void 0 : defaults.y) ?? defaultFXValues.y,\n    scale: (defaults == null ? void 0 : defaults.scale) ?? defaultFXValues.scale,\n    opacity: (defaults == null ? void 0 : defaults.opacity) ?? defaultFXValues.opacity,\n    transformPerspective: (defaults == null ? void 0 : defaults.transformPerspective) ?? defaultFXValues.transformPerspective,\n    rotate: (defaults == null ? void 0 : defaults.rotate) ?? defaultFXValues.rotate,\n    rotateX: (defaults == null ? void 0 : defaults.rotateX) ?? defaultFXValues.rotateX,\n    rotateY: (defaults == null ? void 0 : defaults.rotateY) ?? defaultFXValues.rotateY,\n    skewX: (defaults == null ? void 0 : defaults.skewX) ?? defaultFXValues.skewX,\n    skewY: (defaults == null ? void 0 : defaults.skewY) ?? defaultFXValues.skewY,\n    transition: (defaults == null ? void 0 : defaults.transition) ?? void 0\n  };\n}\nfunction useAnimationVariants({\n  opacity,\n  targetOpacity,\n  perspective: transformPerspective,\n  enter,\n  exit,\n  animate: animateVariant,\n  ...defaultStyles\n}) {\n  return React53.useMemo(\n    () => ({\n      initial: enter ?? makeStyle({\n        ...defaultStyles,\n        opacity: opacity ?? targetOpacity ?? 1,\n        transformPerspective\n      }),\n      animate: animateVariant ?? makeStyle({\n        opacity: targetOpacity\n      }),\n      exit: exit ?? makeStyle()\n    }),\n    // biome-ignore lint/correctness/useExhaustiveDependencies: `defaultStyles` makes this memo re-run on every render, but that appears to be fine.\n    [animateVariant, defaultStyles, enter, exit, opacity, targetOpacity, transformPerspective]\n  );\n}\nfunction useStyleAppearEffect(options, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const variants = useAnimationVariants(options);\n  const enabled = options.styleAppearEffectEnabled;\n  const effect = useFXValues(enabled ? variants.initial : variants.animate, enabled);\n  const playState = React53.useRef({\n    isPlaying: false,\n    scheduledAppearState: void 0,\n    lastAppearState: !options.styleAppearEffectEnabled\n  });\n  const currentRouteKey = useCurrentRouteKey();\n  const animation = React53.useRef();\n  const runAnimation = React53.useCallback(\n    async ({ transition, ...target }, fromInitial) => {\n      const transitionWithFallback = transition ?? variants.animate.transition ?? options.transition;\n      await animation.current;\n      const visualElement = visualElementStore.get(ref.current);\n      animation.current = Promise.all(\n        effectValuesKeys.map((key7) => {\n          if (fromInitial)\n            effect.values[key7].set(variants.initial[key7] ?? defaultFXValues[key7]);\n          const toValue = target[key7] ?? defaultFXValues[key7];\n          if (visualElement && typeof toValue !== \"object\") {\n            visualElement.setBaseTarget(key7, toValue);\n          }\n          return new Promise((resolve) => {\n            if (shouldReduceMotion && key7 !== \"opacity\") {\n              if (isNumber(toValue))\n                effect.values[key7].set(toValue);\n              resolve();\n            } else {\n              const opts = {\n                restDelta: key7 === \"scale\" ? 1e-3 : void 0,\n                ...transitionWithFallback,\n                onComplete: () => resolve()\n              };\n              if (typeof toValue === \"number\") {\n                animate(effect.values[key7], toValue, opts);\n              }\n            }\n          });\n        })\n      );\n    },\n    []\n  );\n  const hasAnimatedOnce = options.animateOnce && playState.current.lastAppearState === true;\n  const animateWithIntersectionObserver = !options.targets && options.styleAppearEffectEnabled && !options.scrollDirection && !hasAnimatedOnce;\n  useAppearEffect(\n    ref,\n    (appears) => {\n      const { isPlaying, lastAppearState } = playState.current;\n      if (isPlaying) {\n        playState.current.scheduledAppearState = appears;\n        return;\n      }\n      playState.current.scheduledAppearState = void 0;\n      playState.current.lastAppearState = appears;\n      if (lastAppearState === appears)\n        return;\n      runAnimation(appears ? variants.animate : variants.exit, appears);\n    },\n    {\n      enabled: animateWithIntersectionObserver,\n      animateOnce: !!options.animateOnce,\n      threshold: {\n        y: options.threshold\n      }\n    }\n  );\n  const animateWithScrollInfo = options.targets && enabled && !options.scrollDirection;\n  React53.useEffect(() => {\n    if (!animateWithScrollInfo)\n      return;\n    const playedState = { initial: true };\n    const _ = currentRouteKey;\n    let lastVariant = \"initial\";\n    return scrollInfo(({ y: scrollY }) => {\n      const { targets } = options;\n      if (!targets)\n        return;\n      if (!targets[0] || targets[0].ref && !targets[0].ref.current)\n        return;\n      const { inputRange, outputRange } = createInputOutputRange(\n        targets,\n        (options.threshold ?? 0) * scrollY.containerLength,\n        !!options.exit\n      );\n      if (inputRange.length === 0 || inputRange.length !== outputRange.length)\n        return;\n      const variant = transform(scrollY.current, inputRange, outputRange);\n      if (options.animateOnce && playedState[variant])\n        return;\n      playedState[variant] = true;\n      if (lastVariant === variant)\n        return;\n      lastVariant = variant;\n      const variantAnimation = asRecord(variants)[variant];\n      if (!variantAnimation)\n        return;\n      runAnimation(variantAnimation);\n    });\n  }, [currentRouteKey, animateWithScrollInfo]);\n  useScrollDirectionChange(options.scrollDirection, (target) => runAnimation(target ?? variants.animate), {\n    enabled,\n    repeat: !options.animateOnce\n  });\n  useOnRouteChange(() => {\n    var _a;\n    if (!enabled)\n      return;\n    if (!options.targets && !options.scrollDirection)\n      return;\n    for (const key7 of effectValuesKeys) {\n      effect.values[key7].set(((_a = variants.initial) == null ? void 0 : _a[key7]) ?? defaultFXValues[key7]);\n    }\n  });\n  return useMemo8(() => {\n    return { values: effect.values, style: enabled ? effectEnabledStyle : effectDisabledStyle };\n  }, [enabled]);\n}\n\n// ../../library/src/modules/useStyleTransformEffect.ts\nimport React54, { useLayoutEffect as useLayoutEffect5 } from \"react\";\nvar styleTransformOptionsKeys = /* @__PURE__ */ new Set([\n  \"transformViewportThreshold\",\n  \"styleTransformEffectEnabled\",\n  \"transformTargets\",\n  \"spring\",\n  \"transformTrigger\"\n]);\nvar defaultValues = (transformTargets, shouldReduceMotion) => {\n  var _a;\n  const initial = (_a = transformTargets == null ? void 0 : transformTargets[0]) == null ? void 0 : _a.target;\n  return shouldReduceMotion ? { opacity: (initial == null ? void 0 : initial.opacity) ?? 1 } : initial;\n};\nvar defaultRanges2 = () => ({\n  opacity: [],\n  x: [],\n  y: [],\n  scale: [],\n  rotate: [],\n  rotateX: [],\n  rotateY: [],\n  skewX: [],\n  skewY: [],\n  transformPerspective: []\n});\nfunction useAttachOptionalSpring(values, spring2) {\n  const springs = React54.useRef({});\n  React54.useEffect(() => {\n    if (spring2 === void 0)\n      return;\n    for (const key7 of objectKeys(values)) {\n      const m2 = values[key7];\n      m2.attach((v, set) => {\n        const active = springs.current[key7];\n        if (active)\n          active.stop();\n        springs.current[key7] = animateValue({\n          keyframes: [m2.get(), v],\n          velocity: m2.getVelocity(),\n          ...spring2,\n          restDelta: 1e-3,\n          onUpdate: set\n        });\n        if (!frameData.isProcessing) {\n          const delta = performance.now() - frameData.timestamp;\n          if (delta < 40) {\n            springs.current[key7].time = delta / 1e3;\n          }\n        }\n        return m2.get();\n      });\n    }\n  }, [JSON.stringify(spring2)]);\n}\nfunction createInputOutputRanges(transformTargets, threshold) {\n  const effectKeyOutputRange = defaultRanges2();\n  const inputRange = createTransformInputRange(transformTargets, threshold, (index) => {\n    var _a, _b, _c;\n    const previousTarget = (_a = transformTargets[index - 1]) == null ? void 0 : _a.target;\n    const currentTarget = (_b = transformTargets[index]) == null ? void 0 : _b.target;\n    for (const key7 of effectValuesKeys) {\n      (_c = effectKeyOutputRange[key7]) == null ? void 0 : _c.unshift((previousTarget == null ? void 0 : previousTarget[key7]) ?? 0, (currentTarget == null ? void 0 : currentTarget[key7]) ?? 0);\n    }\n  });\n  return { inputRange, effectKeyOutputRange };\n}\nfunction createPageOutputRange(transformTargets) {\n  var _a;\n  const keyOutputRange = defaultRanges2();\n  for (const { target } of transformTargets) {\n    for (const key7 of effectValuesKeys)\n      (_a = keyOutputRange[key7]) == null ? void 0 : _a.push(target[key7]);\n  }\n  return keyOutputRange;\n}\nvar pageInputRange = [0, 1];\nfunction useStyleTransform({\n  transformTrigger,\n  styleTransformEffectEnabled,\n  transformTargets,\n  spring: spring2,\n  transformViewportThreshold = 0\n}, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const effect = useFXValues(defaultValues(transformTargets, shouldReduceMotion), styleTransformEffectEnabled);\n  const effectDisabled = !styleTransformEffectEnabled || !transformTargets;\n  const triggerOnScroll = transformTrigger === \"onScrollTarget\";\n  const currentRouteKey = useCurrentRouteKey();\n  useLayoutEffect5(() => {\n    if (effectDisabled || !triggerOnScroll)\n      return;\n    return scrollInfo(({ y: scrollY }) => {\n      if (!transformTargets[0] || transformTargets[0].ref && !transformTargets[0].ref.current) {\n        return;\n      }\n      const { inputRange: scrollYInputRange, effectKeyOutputRange } = createInputOutputRanges(\n        transformTargets,\n        transformViewportThreshold * scrollY.containerLength\n      );\n      if (scrollYInputRange.length === 0)\n        return;\n      for (const key7 of effectValuesKeys) {\n        if (shouldReduceMotion && key7 !== \"opacity\")\n          continue;\n        if (scrollYInputRange.length !== effectKeyOutputRange[key7].length)\n          continue;\n        if (effectKeyOutputRange[key7][0] === void 0)\n          continue;\n        effect.values[key7].set(transform(scrollY.current, scrollYInputRange, effectKeyOutputRange[key7]));\n      }\n    });\n  }, [shouldReduceMotion, triggerOnScroll, transformViewportThreshold, transformTargets, effectDisabled]);\n  useRefEffect(\n    ref,\n    (element) => {\n      if (effectDisabled || triggerOnScroll || element === null) {\n        return;\n      }\n      const _ = currentRouteKey;\n      const outputRange = createPageOutputRange(transformTargets);\n      return scrollInfo(\n        ({ y: scrollY }) => {\n          for (const key7 of effectValuesKeys) {\n            if (shouldReduceMotion && key7 !== \"opacity\")\n              continue;\n            if (pageInputRange.length !== outputRange[key7].length)\n              continue;\n            if (outputRange[key7][0] === void 0)\n              continue;\n            effect.values[key7].set(transform(scrollY.progress, pageInputRange, outputRange[key7]));\n          }\n        },\n        transformTrigger === \"onInView\" ? {\n          target: element ?? void 0,\n          offset: [\"start end\", \"end end\"]\n        } : void 0\n      );\n    },\n    [currentRouteKey, shouldReduceMotion, transformTrigger, triggerOnScroll, transformTargets, effectDisabled]\n  );\n  useAttachOptionalSpring(effect.values, spring2);\n  useOnRouteChange(() => {\n    if (effectDisabled)\n      return;\n    const values = defaultValues(transformTargets, shouldReduceMotion);\n    for (const key7 of effectValuesKeys) {\n      effect.values[key7].set((values == null ? void 0 : values[key7]) ?? defaultFXValues[key7]);\n    }\n  });\n  return React54.useMemo(() => {\n    return {\n      values: effect.values,\n      style: styleTransformEffectEnabled ? effectEnabledStyle : effectDisabledStyle\n    };\n  }, [styleTransformEffectEnabled]);\n}\n\n// ../../library/src/modules/withFX.tsx\nimport { jsx as jsx42 } from \"react/jsx-runtime\";\nvar groups = {\n  parallax: parallaxOptionsKeys,\n  styleAppear: styleAppearOptionsKeys,\n  styleTransform: styleTransformOptionsKeys,\n  loop: loopOptionsKeys,\n  presence: presenceOptionsKeys\n};\nvar groupValues = /* @__PURE__ */ objectKeys(groups);\nfunction backwardsCompatibleEnabledCheck(key7, secondaryKey, object) {\n  return !(key7 in object) && secondaryKey in object || object[key7] === true;\n}\nfunction extractFXOptions(props) {\n  const result = {\n    parallax: {},\n    styleAppear: {},\n    styleTransform: {},\n    presence: {\n      animate: props.animate,\n      initial: props.initial,\n      exit: props.exit\n    },\n    loop: {},\n    forwardedProps: {}\n  };\n  for (const key7 in props) {\n    const strippedKey = stripPrefixFromPrefixedKey(key7);\n    if (strippedKey) {\n      for (const group of groupValues) {\n        const keys3 = groups[group];\n        if (keys3 == null ? void 0 : keys3.has(strippedKey)) {\n          ;\n          result[group][strippedKey] = asRecord(props)[key7];\n          break;\n        }\n      }\n    } else {\n      ;\n      result.forwardedProps[key7] = asRecord(props)[key7];\n    }\n  }\n  result.parallax.parallaxTransformEnabled = backwardsCompatibleEnabledCheck(\n    \"parallaxTransformEnabled\",\n    \"speed\",\n    result.parallax\n  );\n  result.styleAppear.styleAppearEffectEnabled = backwardsCompatibleEnabledCheck(\n    \"styleAppearEffectEnabled\",\n    \"animateOnce\",\n    result.styleAppear\n  );\n  return result;\n}\nvar add2 = (values) => values.reduce((sum, value) => sum += value, 0);\nvar multiply = (values) => values.reduce((sum, value) => sum = sum * value, 1);\nvar reactRefObjectKey = \"current\";\nfunction isReactRefObject(value) {\n  return isObject(value) && reactRefObjectKey in value;\n}\nfunction addMotionValueStyle(style, values) {\n  if (!style || !isObject(style))\n    return values;\n  for (const key7 in style) {\n    const value = style[key7];\n    if (!isMotionValue(value) || !isFXValuesKey(key7))\n      continue;\n    if (!isNumber(value.get()))\n      continue;\n    values[key7].push(value);\n  }\n}\nfunction isVariantOrVariantList2(value) {\n  return isString(value) || Array.isArray(value);\n}\nvar withFX = (Component18) => React55.forwardRef((props, forwardedRef) => {\n  var _a;\n  if (props.__withFX) {\n    return /* @__PURE__ */ jsx42(Component18, { ...props, animate: void 0, initial: void 0, exit: void 0, ref: forwardedRef });\n  }\n  const disabledProps = getDisabledFXPropsInStaticRenderer(props);\n  if (disabledProps) {\n    return /* @__PURE__ */ jsx42(Component18, { ...props, ...disabledProps, ref: forwardedRef });\n  }\n  const {\n    parallax = {},\n    styleAppear = {},\n    styleTransform = {},\n    presence = {},\n    loop = {},\n    forwardedProps\n  } = extractFXOptions(props);\n  const {\n    __targetOpacity: targetOpacityValue,\n    __perspectiveFX: withPerspective,\n    __smartComponentFX: inSmartComponent = false\n  } = props;\n  const targetOpacity = useMotionValue(targetOpacityValue ?? 1);\n  const observerRef = useObserverRef(forwardedRef);\n  const { values: presenceEffectValues, style: presenceEffectStyle } = usePresenceAnimation(\n    presence,\n    observerRef,\n    inSmartComponent,\n    props.style,\n    props[optimizedAppearDataAttribute]\n  );\n  const { values: parallaxValues, style: parallaxStyle } = useParallax(\n    parallax,\n    observerRef,\n    (_a = props.style) == null ? void 0 : _a.visibility\n  );\n  const { values: transformValues2, style: scrollStyle } = useStyleTransform(styleTransform, observerRef);\n  const { values: appearEffectValues, style: scrollAppearStyle } = useStyleAppearEffect(styleAppear, observerRef);\n  const { values: loopValues, style: loopStyle } = useLoop(loop, observerRef);\n  const fxValues = React55.useMemo(() => {\n    return {\n      scale: [appearEffectValues.scale, loopValues.scale, presenceEffectValues.scale, transformValues2.scale],\n      opacity: [\n        appearEffectValues.opacity,\n        loopValues.opacity,\n        presenceEffectValues.opacity,\n        // Ensure that the layers opacity is always represented.\n        targetOpacity,\n        transformValues2.opacity\n      ],\n      x: [appearEffectValues.x, loopValues.x, presenceEffectValues.x, transformValues2.x],\n      y: [appearEffectValues.y, loopValues.y, parallaxValues.y, presenceEffectValues.y, transformValues2.y],\n      rotate: [\n        appearEffectValues.rotate,\n        loopValues.rotate,\n        presenceEffectValues.rotate,\n        transformValues2.rotate\n      ],\n      rotateX: [\n        appearEffectValues.rotateX,\n        loopValues.rotateX,\n        presenceEffectValues.rotateX,\n        transformValues2.rotateX\n      ],\n      rotateY: [\n        appearEffectValues.rotateY,\n        loopValues.rotateY,\n        presenceEffectValues.rotateY,\n        transformValues2.rotateY\n      ],\n      skewX: [appearEffectValues.skewX, loopValues.skewX, presenceEffectValues.skewX, transformValues2.skewX],\n      skewY: [appearEffectValues.skewY, loopValues.skewY, presenceEffectValues.skewY, transformValues2.skewY],\n      /** @deprecated */\n      transformPerspective: [\n        transformValues2.transformPerspective,\n        appearEffectValues.transformPerspective\n        // We stopped animating transformPerspective with `withFX`\n        // before introducing `useLoop` etc, so it does not have a\n        // value here on purpose.\n      ]\n    };\n  }, [targetOpacity, transformValues2, parallaxValues, appearEffectValues, loopValues, presenceEffectValues]);\n  addMotionValueStyle(props.style, fxValues);\n  const scale = useTransform(fxValues.scale, multiply);\n  const opacity = useTransform(fxValues.opacity, multiply);\n  const x = useTransform(fxValues.x, add2);\n  const y = useTransform(fxValues.y, add2);\n  const rotate = useTransform(fxValues.rotate, add2);\n  const rotateX = useTransform(fxValues.rotateX, add2);\n  const rotateY = useTransform(fxValues.rotateY, add2);\n  const skewX = useTransform(fxValues.skewX, add2);\n  const skewY = useTransform(fxValues.skewY, add2);\n  const transformPerspective = useTransform(fxValues.transformPerspective, add2);\n  const { drag, dragConstraints } = forwardedProps;\n  useRerenderOnResize(drag && isReactRefObject(dragConstraints) ? dragConstraints : void 0);\n  const motionValueStyle = {\n    opacity,\n    scale,\n    x,\n    y,\n    rotate,\n    rotateX,\n    rotateY,\n    skewX,\n    skewY\n  };\n  if (isUndefined(withPerspective))\n    motionValueStyle.transformPerspective = transformPerspective;\n  const animate3 = isVariantOrVariantList2(props.animate) ? props.animate : void 0;\n  const initial = isVariantOrVariantList2(props.initial) ? props.initial : void 0;\n  const exit = isVariantOrVariantList2(props.exit) ? props.exit : void 0;\n  const motionGestures = inSmartComponent && !presence.presenceInitial ? { initial, animate: animate3, exit } : {};\n  return /* @__PURE__ */ jsx42(\n    Component18,\n    {\n      ...forwardedProps,\n      ...motionGestures,\n      __withFX: true,\n      style: {\n        ...props.style,\n        ...parallaxStyle,\n        ...scrollStyle,\n        ...loopStyle,\n        ...motionValueStyle,\n        ...scrollAppearStyle,\n        ...presenceEffectStyle\n      },\n      values: presenceEffectValues,\n      ref: observerRef\n    }\n  );\n});\n\n// ../../library/src/deprecated/deprecatedEffects.ts\nvar withParallaxTransform = withFX;\nvar withStyleAppearEffect = withFX;\n\n// ../../library/src/modules/ComponentPresetsContext.tsx\nimport { createContext as createContext5, useContext as useContext13, useRef as useRef16 } from \"react\";\nimport { jsx as jsx43 } from \"react/jsx-runtime\";\nvar Context = /* @__PURE__ */ createContext5({});\nfunction ComponentPresetsProvider({ presets, children }) {\n  const lastPresets = useRef16(presets);\n  if (!isEqual(presets, lastPresets.current, false)) {\n    lastPresets.current = presets;\n  }\n  return /* @__PURE__ */ jsx43(Context.Provider, { value: lastPresets.current, children });\n}\nfunction ComponentPresetsConsumer({ componentIdentifier, children }) {\n  const componentPresets = useContext13(Context);\n  const presetProps = componentPresets[componentIdentifier] ?? {};\n  return children(presetProps);\n}\n\n// ../../library/src/modules/ComponentViewportContext.tsx\nimport React56 from \"react\";\nimport { jsx as jsx44 } from \"react/jsx-runtime\";\nvar ComponentViewportContext = /* @__PURE__ */ React56.createContext({});\nfunction useComponentViewport() {\n  return React56.useContext(ComponentViewportContext);\n}\nvar ComponentViewportProvider = /* @__PURE__ */ React56.forwardRef(function ComponentViewportProvider2({ width, height, y, children, ...rest }, ref) {\n  const componentViewport = React56.useMemo(() => {\n    return { width, height, y };\n  }, [width, height, y]);\n  const cloneWithPropsAndRef = useCloneChildrenWithPropsAndRef(ref);\n  return /* @__PURE__ */ jsx44(ComponentViewportContext.Provider, { value: componentViewport, children: cloneWithPropsAndRef(children, rest) });\n});\n\n// ../../library/src/modules/Container.tsx\nimport React59 from \"react\";\n\n// ../../library/src/render/utils/withGeneratedLayoutId.tsx\nimport React57 from \"react\";\nimport { jsx as jsx45 } from \"react/jsx-runtime\";\nvar withGeneratedLayoutId = (Component18) => React57.forwardRef((props, ref) => {\n  const layoutId = useLayoutId(props);\n  return /* @__PURE__ */ jsx45(Component18, { layoutId, ...props, layoutIdKey: void 0, duplicatedFrom: void 0, ref });\n});\n\n// ../../library/src/modules/code-boundary/CodeComponentBoundary.tsx\nimport { Component as Component12, Suspense as Suspense3 } from \"react\";\n\n// ../../library/src/router/SuspenseThatPreservesDom.tsx\nimport { Suspense as Suspense2 } from \"react\";\n\n// ../../library/src/router/error-boundary/SuspenseErrorBoundary.tsx\nimport { Component as Component11, Suspense } from \"react\";\nimport { jsx as jsx46 } from \"react/jsx-runtime\";\nvar SuspenseErrorBoundary = class extends Component11 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { error: void 0 });\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  componentDidCatch(error, errorInfo) {\n    const componentStack = errorInfo == null ? void 0 : errorInfo.componentStack;\n    console.error(\"Caught error in SuspenseErrorBoundary:\\n\", error, componentStack);\n    const stack = error instanceof Error && typeof error.stack === \"string\" ? error.stack : void 0;\n    sendTrackingEvent(\"published_site_load_recoverable_error\", {\n      message: String(error),\n      stack,\n      // only log componentStack if we don't have a stack\n      componentStack: stack ? void 0 : componentStack\n    });\n  }\n  render() {\n    const error = this.state.error;\n    if (error === void 0)\n      return this.props.children;\n    if (error instanceof NotFoundErrorBoundaryCaughtError) {\n      throw error.cause;\n    }\n    window.__framer_STPD_OPT_OUT__ = true;\n    return /* @__PURE__ */ jsx46(Suspense, { children: this.props.fallbackChildren });\n  }\n};\n\n// ../../library/src/router/SuspenseThatPreservesDom.tsx\nimport { jsx as jsx47 } from \"react/jsx-runtime\";\nvar suspendPromise = /* @__PURE__ */ (() => typeof window !== \"undefined\" ? new Promise(() => {\n}) : null)();\nfunction Suspend() {\n  if (typeof window === \"undefined\" || window.__framer_STPD_OPT_OUT__) {\n    return /* @__PURE__ */ jsx47(\n      \"div\",\n      {\n        hidden: true,\n        dangerouslySetInnerHTML: { __html: \"<!-- SuspenseThatPreservesDOM fallback rendered -->\" }\n      }\n    );\n  }\n  throw suspendPromise;\n}\nfunction SuspenseThatPreservesDom({ children }) {\n  return /* @__PURE__ */ jsx47(SuspenseErrorBoundary, { fallbackChildren: children, children: /* @__PURE__ */ jsx47(Suspense2, { fallback: /* @__PURE__ */ jsx47(Suspend, {}), children }) });\n}\n\n// ../../library/src/modules/code-boundary/NullFallback.tsx\nimport { jsx as jsx48 } from \"react/jsx-runtime\";\nfunction NullFallback() {\n  return /* @__PURE__ */ jsx48(\n    \"div\",\n    {\n      hidden: true,\n      dangerouslySetInnerHTML: { __html: \"<!-- Code boundary fallback rendered -->\" }\n    }\n  );\n}\nvar nullFallback = /* @__PURE__ */ jsx48(NullFallback, {});\n\n// ../../library/src/modules/code-boundary/collectErrorToAnalytics.tsx\nfunction collectErrorToAnalytics(error, errorInfo) {\n  if (typeof window === \"undefined\")\n    return;\n  if (Math.random() > 0.01)\n    return;\n  const stack = error instanceof Error && typeof error.stack === \"string\" ? error.stack : null;\n  const componentStack = errorInfo == null ? void 0 : errorInfo.componentStack;\n  sendTrackingEvent(\"published_site_load_recoverable_error\", {\n    message: String(error),\n    stack,\n    // only log componentStack if we don't have a stack\n    componentStack: stack ? void 0 : componentStack\n  });\n}\n\n// ../../library/src/modules/code-boundary/logger.ts\nfunction logError(...args) {\n  if (false)\n    return;\n  console.error(...args);\n}\n\n// ../../library/src/modules/code-boundary/shouldEnableCodeBoundaries.ts\nfunction shouldEnableCodeBoundaries() {\n  return RenderTarget.current() !== RenderTarget.canvas;\n}\n\n// ../../library/src/modules/code-boundary/CodeComponentBoundary.tsx\nimport { jsx as jsx49 } from \"react/jsx-runtime\";\nfunction CodeComponentBoundary({ errorMessage, fallback, children }) {\n  if (!shouldEnableCodeBoundaries()) {\n    return children;\n  }\n  return /* @__PURE__ */ jsx49(ServerSideErrorBoundary, { fallback, children: /* @__PURE__ */ jsx49(ClientSideErrorBoundary, { fallback, errorMessage, children }) });\n}\nvar ClientSideErrorBoundary = class extends Component12 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { hasError: false });\n  }\n  static getDerivedStateFromError() {\n    return { hasError: true };\n  }\n  componentDidCatch(error, errorInfo) {\n    logError(this.props.errorMessage, errorInfo == null ? void 0 : errorInfo.componentStack);\n    collectErrorToAnalytics(error, errorInfo);\n  }\n  render() {\n    const { children, fallback = nullFallback } = this.props;\n    const { hasError } = this.state;\n    return hasError ? fallback : children;\n  }\n};\nfunction ServerSideErrorBoundary({ children, fallback = nullFallback }) {\n  return typeof window === \"undefined\" ? (\n    // On the server, Suspense fallback is activated by errors. So we use the actual Suspense,\n    // and render the actual error fallback if Suspense activates.\n    /* @__PURE__ */ jsx49(Suspense3, { fallback, children })\n  ) : (\n    // On the client, Suspense fallback is activated by data fetching. So we use SuspenseThatPreservesDom,\n    // because we don\u2019t want to render a fallback if the boundary gets inadvertently activated.\n    //\n    // \u201CWhy won\u2019t you just render plain children without Suspense?\u201D Because that would cause a hydration mismatch\n    // (the server has Suspense, the client doesn\u2019t).\n    /* @__PURE__ */ jsx49(SuspenseThatPreservesDom, { children })\n  );\n}\n\n// ../../library/src/modules/code-boundary/DeprecatedContainerErrorBoundary.tsx\nimport { Component as Component13 } from \"react\";\nvar DeprecatedContainerErrorBoundary = class extends Component13 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { hasError: false });\n  }\n  // We use `componentDidCatch` instead of `static getDerivedStateFromError()` because the latter could also catch hydration errors.\n  // Hydration errors are recoverable by React, so we don't want to hide the coponent in that case (since the tree will not unmount).\n  componentDidCatch(error, errorInfo) {\n    const componentStack = errorInfo == null ? void 0 : errorInfo.componentStack;\n    console.error(\n      \"Error in component (see previous log). This component has been hidden. Please check any custom code or code overrides to fix.\",\n      componentStack\n    );\n    this.setState({ hasError: true });\n    collectErrorToAnalytics(error, errorInfo);\n  }\n  render() {\n    const { children } = this.props;\n    const { hasError } = this.state;\n    return hasError ? null : children;\n  }\n};\n\n// ../../library/src/modules/code-boundary/ExternalComponentContext.tsx\nimport React58 from \"react\";\nimport { jsx as jsx50 } from \"react/jsx-runtime\";\nvar ExternalComponentContext = /* @__PURE__ */ (() => React58.createContext(void 0))();\nfunction useNearestExternalComponent() {\n  return React58.useContext(ExternalComponentContext);\n}\nfunction useFurthestExternalComponent() {\n  const nearestExternalComponent = useNearestExternalComponent();\n  const furthestExternalComponent = React58.useMemo(() => {\n    if (!nearestExternalComponent)\n      return void 0;\n    let item = nearestExternalComponent;\n    while (item.parent && item.parent.level > 0) {\n      item = item.parent;\n    }\n    return item;\n  }, [nearestExternalComponent]);\n  return furthestExternalComponent;\n}\nfunction IsExternalComponent({\n  children,\n  scopeId,\n  nodeId\n}) {\n  const parent = useNearestExternalComponent();\n  const newValue = React58.useMemo(\n    () => ({ level: ((parent == null ? void 0 : parent.level) ?? 0) + 1, scopeId, nodeId, parent }),\n    [scopeId, nodeId, parent]\n  );\n  return /* @__PURE__ */ jsx50(ExternalComponentContext.Provider, { value: newValue, children });\n}\n\n// ../../library/src/modules/code-boundary/errorMessages.ts\nvar CRASH_ERROR_MESSAGE_PREFIX = \"code-crash:\";\nfunction formatCodeCrashLocationFromSourceNode(scopeId, nodeId) {\n  return `${CRASH_ERROR_MESSAGE_PREFIX}${scopeId}:${nodeId}`;\n}\nfunction getErrorMessageForComponent(scopeId, nodeId) {\n  return getErrorMessageFor(\"component\", scopeId, nodeId);\n}\nfunction getErrorMessageForOverride(scopeId, nodeId) {\n  return getErrorMessageFor(\"override\", scopeId, nodeId);\n}\nfunction getErrorMessageFor(element, scopeId, nodeId) {\n  return `A code ${element} crashed while rendering due to the error above. To find and fix it, open the project in the editor \\u2192 open Quick Actions (press Cmd+K or Ctrl+K) \\u2192 paste this: ${formatCodeCrashLocationFromSourceNode(scopeId, nodeId)} \\u2192 click \\u201CShow Layer\\u201D.`;\n}\n\n// ../../library/src/modules/code-boundary/shouldWrapWithBoundary.ts\nfunction shouldWrapComponentWithBoundary(scopeIdOfThisComponent, scopeIdOfNearestExternalComponent, externalComponentLevel, isAuthoredByUser, isExternalComponent, inComponentSlot) {\n  const isLocalComponentInstance = isNodeLocalToProject(\n    scopeIdOfThisComponent,\n    scopeIdOfNearestExternalComponent,\n    externalComponentLevel,\n    inComponentSlot\n  );\n  return (\n    // case 1: all (local instances) of (local) (code components)\n    isLocalComponentInstance && !isExternalComponent && isAuthoredByUser || // case 2: all (local instances) of (external components)\n    isLocalComponentInstance && isExternalComponent\n  );\n}\nfunction shouldWrapOverrideWithBoundary(scopeIdOfNodeWithOverride, scopeIdOfNearestExternalComponent, externalComponentLevel, inComponentSlot) {\n  return isNodeLocalToProject(\n    scopeIdOfNodeWithOverride,\n    scopeIdOfNearestExternalComponent,\n    externalComponentLevel,\n    inComponentSlot\n  );\n}\nfunction isNodeLocalToProject(scopeIdOfThisNode, scopeIdOfNearestExternalComponent, externalComponentLevel, inComponentSlot) {\n  if (isUndefined(externalComponentLevel))\n    return true;\n  const nodeIsDefinedInSameScopeAsExternalComponent = scopeIdOfThisNode === scopeIdOfNearestExternalComponent;\n  if (\n    // We know a component instance is local when it\u2019s nested inside one external component,\n    externalComponentLevel === 1 && // and it lives in a slot,\n    inComponentSlot && // and it\u2019s a slot of *that sole external component* (and not some other local component\n    // with slots that lives inside the external component).\n    nodeIsDefinedInSameScopeAsExternalComponent\n  ) {\n    return true;\n  }\n  return false;\n}\n\n// ../../library/src/modules/code-boundary/maybeWrapComponentWithCodeBoundary.tsx\nimport { jsx as jsx51 } from \"react/jsx-runtime\";\nfunction useMaybeWrapComponentWithCodeBoundary(children, scopeId, nodeId, isAuthoredByUser, isModuleExternal, inComponentSlot) {\n  const nearestExternalComponent = useNearestExternalComponent();\n  if (\n    // Those props will either be all undefined, which means the Container hasn\u2019t yet been\n    // re-serialized since we introduced code boundaries, and we should use the old\n    // ContainerErrorBoundary \u2013 or all defined, which means we have enough information to use\n    // the new boundary.\n    isUndefined(scopeId) || isUndefined(nodeId)\n  ) {\n    return /* @__PURE__ */ jsx51(DeprecatedContainerErrorBoundary, { children });\n  }\n  const shouldWrapWithBoundary = shouldWrapComponentWithBoundary(\n    scopeId,\n    nearestExternalComponent == null ? void 0 : nearestExternalComponent.scopeId,\n    nearestExternalComponent == null ? void 0 : nearestExternalComponent.level,\n    isAuthoredByUser ?? false,\n    isModuleExternal ?? false,\n    inComponentSlot ?? false\n  );\n  if (shouldWrapWithBoundary) {\n    children = /* @__PURE__ */ jsx51(CodeComponentBoundary, { errorMessage: getErrorMessageForComponent(scopeId, nodeId), fallback: null, children });\n  }\n  if (isModuleExternal) {\n    children = /* @__PURE__ */ jsx51(IsExternalComponent, { scopeId, nodeId, children });\n  }\n  return children;\n}\n\n// ../../library/src/modules/Container.tsx\nimport { jsx as jsx52 } from \"react/jsx-runtime\";\nvar ContainerInner = /* @__PURE__ */ React59.forwardRef(\n  ({ children, layoutId, as, scopeId, nodeId, isAuthoredByUser, isModuleExternal, inComponentSlot, ...props }, ref) => {\n    const outerLayoutId = useConstant(() => layoutId ? `${layoutId}-container` : void 0);\n    const MotionComponent = htmlElementAsMotionComponent(as);\n    const clonedChildren = React59.Children.map(children, (child) => {\n      return React59.isValidElement(child) ? React59.cloneElement(child, { layoutId }) : child;\n    });\n    const childrenWithCodeBoundary = useMaybeWrapComponentWithCodeBoundary(\n      clonedChildren,\n      scopeId,\n      nodeId,\n      isAuthoredByUser,\n      isModuleExternal,\n      inComponentSlot\n    );\n    return /* @__PURE__ */ jsx52(MotionComponent, { layoutId: outerLayoutId, ...props, ref, children: /* @__PURE__ */ jsx52(ComponentContainerContext.Provider, { value: true, children: /* @__PURE__ */ jsx52(AutomaticLayoutIds, { enabled: false, children: /* @__PURE__ */ jsx52(LayoutGroup, { id: layoutId ?? \"\", inherit: \"id\", children: childrenWithCodeBoundary }) }) }) });\n  }\n);\nvar Container = /* @__PURE__ */ withGeneratedLayoutId(ContainerInner);\nvar SmartComponentScopedContainer = /* @__PURE__ */ React59.forwardRef((props, ref) => {\n  const {\n    as,\n    children,\n    // Code boundary-specific props\n    scopeId,\n    nodeId,\n    isAuthoredByUser,\n    rendersWithMotion,\n    isModuleExternal,\n    inComponentSlot,\n    // Other props, including some possibly used-passed ones\n    ...otherProps\n  } = props;\n  const childrenWithCodeBoundary = useMaybeWrapComponentWithCodeBoundary(\n    children,\n    scopeId,\n    nodeId,\n    isAuthoredByUser,\n    isModuleExternal,\n    inComponentSlot\n  );\n  const tagName = props.as ?? \"div\";\n  if (props.rendersWithMotion) {\n    const Component18 = htmlElementAsMotionComponent(tagName);\n    return /* @__PURE__ */ jsx52(\n      Component18,\n      {\n        ...otherProps,\n        ref,\n        style: props.style,\n        children: childrenWithCodeBoundary\n      }\n    );\n  } else {\n    const Component18 = tagName;\n    const { layoutId, layoutDependency, ...plainHTMLRenderableProps } = otherProps;\n    return (\n      // Passing `props.style` explicitly to allow TypeScript to narrow the type of `props.style` according\n      // to the value of `props.rendersWithMotion`.\n      /* @__PURE__ */ jsx52(Component18, { ...plainHTMLRenderableProps, ref, style: props.style, children: childrenWithCodeBoundary })\n    );\n  }\n});\n\n// ../../library/src/modules/CustomCursor.tsx\nimport {\n  createContext as createContext6,\n  memo,\n  startTransition as startTransition2,\n  useCallback as useCallback9,\n  useContext as useContext14,\n  useEffect as useEffect15,\n  useId,\n  useLayoutEffect as useLayoutEffect6,\n  useRef as useRef17,\n  useState as useState4\n} from \"react\";\nimport { jsx as jsx53, jsxs as jsxs13 } from \"react/jsx-runtime\";\nvar CustomCursorContext = /* @__PURE__ */ createContext6({\n  onRegisterCursors: () => () => {\n  },\n  registerCursors: () => {\n  }\n});\nvar replaceCursorClassName = \"framer-cursor-none\";\nvar cursorComponentClassName = \"framer-pointer-events-none\";\nfunction getActiveDefinitions(map2, previousDefinitions, newDefinitions) {\n  const allCursors = {};\n  for (const [, hashes] of map2) {\n    for (const hash2 of hashes) {\n      const value = allCursors[hash2] ?? previousDefinitions[hash2] ?? newDefinitions[hash2];\n      if (value)\n        allCursors[hash2] = value;\n    }\n  }\n  return allCursors;\n}\nvar CustomCursorContextProvider = /* @__PURE__ */ memo(function CustomCursorList({ children }) {\n  const value = useConstant(() => {\n    const events = /* @__PURE__ */ new Set();\n    let allCursors = {};\n    const byCaller = /* @__PURE__ */ new Map();\n    return {\n      onRegisterCursors: (callback) => {\n        callback(allCursors);\n        events.add(callback);\n        return () => events.delete(callback);\n      },\n      registerCursors: (cursors, id) => {\n        byCaller.set(id, Object.keys(cursors));\n        allCursors = getActiveDefinitions(byCaller, allCursors, cursors);\n        for (const callback of events)\n          callback(allCursors);\n        return () => {\n          byCaller.delete(id);\n        };\n      }\n    };\n  });\n  const shouldReduceMotion = useReducedMotionConfig();\n  return /* @__PURE__ */ jsxs13(CustomCursorContext.Provider, { value, children: [\n    children,\n    !shouldReduceMotion && /* @__PURE__ */ jsx53(CustomCursorComponent, {})\n  ] });\n});\nvar CustomCursorHost = /* @__PURE__ */ (() => withCSS(\n  CustomCursorContextProvider,\n  [\n    `.${replaceCursorClassName}, .${replaceCursorClassName} * { cursor: none !important; }`,\n    `.${cursorComponentClassName}, .${cursorComponentClassName} * { pointer-events: none !important; }`\n  ],\n  \"framer-lib-cursors-host\"\n))();\nvar staticCursorStyle = /* @__PURE__ */ (() => ({\n  position: \"fixed\",\n  top: 0,\n  left: 0,\n  zIndex: 12 + 1,\n  // Max framer z-index + 1\n  pointerEvents: \"none\"\n}))();\nfunction customCursorReplacesNativeCursor(cursor) {\n  if (!cursor)\n    return false;\n  if (cursor.placement || cursor.alignment)\n    return false;\n  return true;\n}\nfunction valueForCursorAlignment(alignment) {\n  switch (alignment) {\n    case \"start\":\n      return \"0%\";\n    case \"center\":\n      return \"-50%\";\n    case \"end\":\n      return \"-100%\";\n    default:\n      assertNever(alignment);\n  }\n}\nfunction getCenteringTransform(placement, alignment = \"center\") {\n  switch (placement) {\n    case \"top\":\n      return `${valueForCursorAlignment(alignment)}, -100%`;\n    case \"right\":\n      return `0%, ${valueForCursorAlignment(alignment)}`;\n    case \"bottom\":\n      return `${valueForCursorAlignment(alignment)}, 0%`;\n    case \"left\":\n      return `-100%, ${valueForCursorAlignment(alignment)}`;\n    default:\n      return \"-50%, -50%\";\n  }\n}\nvar portalIdAttribute = \"data-framer-portal-id\";\nfunction getCursorHash(x, y) {\n  let el = document.elementFromPoint(x, y);\n  while (el) {\n    if (el === document.body)\n      return void 0;\n    const value = el.getAttribute(\"data-framer-cursor\");\n    if (value)\n      return value;\n    if (el.hasAttribute(portalIdAttribute)) {\n      const id = el.getAttribute(portalIdAttribute);\n      el = el.parentElement;\n      if (id)\n        el = document.getElementById(id) ?? el;\n    } else {\n      el = el.parentElement;\n    }\n  }\n  return void 0;\n}\nfunction isEmptyObject(object) {\n  for (const _ in object)\n    return false;\n  return true;\n}\nvar CustomCursorComponent = /* @__PURE__ */ memo(function CustomCursorComponent2() {\n  const { onRegisterCursors } = useContext14(CustomCursorContext);\n  const [hasHoverCapability, setHasHoverCapability] = useState4(false);\n  const pointerX = useMotionValue(0);\n  const pointerY = useMotionValue(0);\n  const opacity = useMotionValue(0);\n  const cursorRef = useRef17(null);\n  const internalState = useRef17({ cursors: {}, cursorHash: void 0 });\n  const forceRender = useForceUpdate2();\n  useLayoutEffect6(() => {\n    const noHoverMQ = safeWindow.matchMedia(\"(any-hover: none)\");\n    function updateRender(e) {\n      if (e.matches) {\n        startTransition2(() => setHasHoverCapability(false));\n      } else {\n        setHasHoverCapability(true);\n      }\n    }\n    noHoverMQ.addEventListener(\"change\", updateRender);\n    if (!noHoverMQ.matches) {\n      setHasHoverCapability(true);\n    }\n    return () => {\n      noHoverMQ.removeEventListener(\"change\", updateRender);\n    };\n  }, []);\n  useEffect15(() => {\n    if (!hasHoverCapability)\n      return;\n    let x2 = 0;\n    let y2 = 0;\n    function updateValues() {\n      pointerX.set(x2);\n      pointerY.set(y2);\n      animate(opacity, 1, { type: \"tween\", duration: 0.2 });\n    }\n    const updateVariant = () => {\n      if (isEmptyObject(internalState.current.cursors))\n        return;\n      const hash2 = getCursorHash(x2, y2);\n      if (hash2 !== internalState.current.cursorHash) {\n        internalState.current.cursorHash = hash2;\n        frame.update(() => forceRender());\n      }\n    };\n    function updateCursor(e) {\n      if (e.pointerType === \"touch\") {\n        cancelFrame(updateVariant);\n        return;\n      }\n      frame.read(updateVariant, true);\n      x2 = e.clientX;\n      y2 = e.clientY;\n      frame.update(updateValues);\n    }\n    function fireEventToTarget(e) {\n      if (e.target === cursorRef.current || !cursorRef.current)\n        return;\n      const event = new PointerEvent(e.type, {\n        bubbles: true,\n        cancelable: e.cancelable,\n        pointerType: e.pointerType,\n        pointerId: e.pointerId,\n        composed: e.composed,\n        isPrimary: e.isPrimary,\n        buttons: e.buttons,\n        button: e.button\n      });\n      frame.update(() => {\n        var _a;\n        (_a = cursorRef.current) == null ? void 0 : _a.dispatchEvent(event);\n      });\n    }\n    safeWindow.addEventListener(\"pointermove\", updateCursor);\n    document.addEventListener(\"pointerdown\", fireEventToTarget);\n    document.addEventListener(\"pointerup\", fireEventToTarget);\n    frame.read(updateVariant, true);\n    return () => {\n      safeWindow.removeEventListener(\"pointermove\", updateCursor);\n      document.removeEventListener(\"pointerdown\", fireEventToTarget);\n      document.removeEventListener(\"pointerup\", fireEventToTarget);\n      cancelFrame(updateVariant);\n    };\n  }, [opacity, pointerX, pointerY, forceRender, hasHoverCapability]);\n  useEffect15(() => {\n    if (!hasHoverCapability)\n      return;\n    function hideCursor() {\n      void animate(opacity, 0, { type: \"tween\", duration: 0.2 });\n    }\n    document.addEventListener(\"mouseleave\", hideCursor);\n    safeWindow.addEventListener(\"blur\", hideCursor);\n    return () => {\n      document.removeEventListener(\"mouseleave\", hideCursor);\n      safeWindow.removeEventListener(\"blur\", hideCursor);\n    };\n  }, [opacity, hasHoverCapability]);\n  useLayoutEffect6(() => {\n    function updateCursors(newCursors) {\n      internalState.current.cursors = newCursors;\n      internalState.current.cursorHash = !isEmptyObject(newCursors) ? getCursorHash(pointerX.get(), pointerY.get()) : null;\n      forceRender();\n    }\n    const unregister = onRegisterCursors(updateCursors);\n    return () => {\n      unregister();\n      document.body.classList.toggle(replaceCursorClassName, false);\n    };\n  }, [pointerX, pointerY, onRegisterCursors, forceRender]);\n  const { cursors, cursorHash } = internalState.current;\n  const cursor = cursorHash ? cursors[cursorHash] : null;\n  const replaceNativeCursor = customCursorReplacesNativeCursor(cursor);\n  useLayoutEffect6(() => {\n    if (!hasHoverCapability)\n      return;\n    document.body.classList.toggle(replaceCursorClassName, replaceNativeCursor);\n  }, [replaceNativeCursor, hasHoverCapability]);\n  const Cursor = cursor == null ? void 0 : cursor.component;\n  const spring2 = (cursor == null ? void 0 : cursor.transition) ?? { duration: 0 };\n  const sprungX = useSpring(pointerX, spring2);\n  const sprungY = useSpring(pointerY, spring2);\n  const x = useTransform(() => {\n    var _a;\n    return sprungX.get() + (((_a = cursor == null ? void 0 : cursor.offset) == null ? void 0 : _a.x) ?? 0);\n  });\n  const y = useTransform(() => {\n    var _a;\n    return sprungY.get() + (((_a = cursor == null ? void 0 : cursor.offset) == null ? void 0 : _a.y) ?? 0);\n  });\n  const alignment = cursor == null ? void 0 : cursor.alignment;\n  const placement = cursor == null ? void 0 : cursor.placement;\n  const transformTemplate2 = useCallback9(\n    (_, t) => `translate(${getCenteringTransform(placement, alignment)}) ${t}`,\n    [alignment, placement]\n  );\n  if (!hasHoverCapability || !cursor || !Cursor)\n    return null;\n  return /* @__PURE__ */ jsx53(\n    Cursor,\n    {\n      transformTemplate: transformTemplate2,\n      style: {\n        ...staticCursorStyle,\n        x,\n        y,\n        opacity\n      },\n      globalTapTarget: true,\n      variant: cursor == null ? void 0 : cursor.variant,\n      ref: cursorRef,\n      className: cursorComponentClassName\n    }\n  );\n});\nfunction useCustomCursors(webPageCursors) {\n  const { registerCursors } = useContext14(CustomCursorContext);\n  const cursors = useConstant(() => webPageCursors);\n  const id = useId();\n  useLayoutEffect6(() => {\n    return registerCursors(cursors, id);\n  }, [registerCursors, id]);\n}\n\n// ../../library/src/modules/Floating.tsx\nimport React60, { useContext as useContext15 } from \"react\";\nimport ReactDOM from \"react-dom\";\n\n// ../../library/src/render/types/Polygon.ts\nvar Polygon = {\n  /**\n   * Determine if the vertices are ordered clockwise or counter-clockwise. This works for simple\n   * (non-self-intersecting) convex polygons. If the polygon is collapsed into a line (signedArea = 0), we consider it\n   * clockwise for it works with how Framer draws the polygons.\n   * See: https://paulbourke.net/geometry/polygonmesh/\n   * @internal */\n  isClockwise: (points) => {\n    return Polygon.signedArea(points) <= 0;\n  },\n  /**\n   * Calculate the signed area to determine if the vertices go clockwise or counter clockwise. We flip all the y\n   * values because the y axis in our canvas coordinate is fipped.\n   * See: https://mathworld.wolfram.com/PolygonArea.html\n   * @internal */\n  signedArea: (points) => {\n    let sum = 0;\n    const len = points.length;\n    for (let i = 0; i < len; i++) {\n      const pointA = points[i];\n      const pointB = points[(i + 1) % len];\n      if (!pointA || !pointB)\n        continue;\n      sum += pointA.x * -pointB.y - pointB.x * -pointA.y;\n    }\n    return 1 / 2 * sum;\n  },\n  /**\n   * Determine if some Point lies inside (or on) the polygon formed by other\n   * Points. The other points must be provided in a clockwise/counter\n   * clockwise order otherwise the line segments we create to test the polygon\n   * will not be representative.\n   *\n   * Solution for convex polygons based on:\n   * https://www.eecs.umich.edu/courses/eecs380/HANDOUTS/PROJ2/InsidePoly.html\n   *\n   * We create a line segment for each side of the polygon. The point we are\n   * testing must be on or on the same side of each line segment.\n   *\n   * @internal\n   */\n  containsPoint: (polygonPoints2, point) => {\n    var _a, _b, _c, _d;\n    let sign = void 0;\n    for (let i = 0; i < polygonPoints2.length; i++) {\n      if (Point.isEqual(polygonPoints2[i], point))\n        return true;\n      const x1 = ((_a = polygonPoints2[i]) == null ? void 0 : _a.x) ?? 0;\n      const y1 = ((_b = polygonPoints2[i]) == null ? void 0 : _b.y) ?? 0;\n      const i2 = (i + 1) % polygonPoints2.length;\n      if (Point.isEqual(polygonPoints2[i2], point))\n        return true;\n      const x2 = ((_c = polygonPoints2[i2]) == null ? void 0 : _c.x) ?? 0;\n      const y2 = ((_d = polygonPoints2[i2]) == null ? void 0 : _d.y) ?? 0;\n      const d = (point.x - x1) * (y2 - y1) - (point.y - y1) * (x2 - x1);\n      if (d === 0)\n        continue;\n      const localSign = d > 0;\n      sign ??= localSign;\n      if (sign !== localSign)\n        return false;\n    }\n    return true;\n  },\n  /** @internal */\n  intersects: (pointsA, pointsB) => {\n    if (pointsA.length < 1 || pointsB.length < 1)\n      return false;\n    const boundingRectA = Rect.boundingRectFromPoints(pointsA);\n    const boundingRectB = Rect.boundingRectFromPoints(pointsB);\n    if (!Rect.intersects(boundingRectA, boundingRectB))\n      return false;\n    const edgesA = [];\n    const pointsALength = pointsA.length;\n    pointsA.forEach((point, index) => {\n      const nextPoint = pointsA[(index + 1) % pointsALength];\n      if (!nextPoint)\n        return;\n      edgesA.push(Line(point, nextPoint));\n    });\n    const edgesB = [];\n    const pointsBLength = pointsB.length;\n    pointsB.forEach((point, index) => {\n      const nextPoint = pointsB[(index + 1) % pointsBLength];\n      if (!nextPoint)\n        return;\n      edgesB.push(Line(point, nextPoint));\n    });\n    for (const edgeA of edgesA) {\n      for (const edgeB of edgesB) {\n        const intersection2 = Line.intersection(edgeA, edgeB, true);\n        if (intersection2)\n          return true;\n      }\n    }\n    if (Polygon.containsPoint(pointsB, pointsA[0]))\n      return true;\n    if (Polygon.containsPoint(pointsA, pointsB[0]))\n      return true;\n    return false;\n  },\n  /** @internal */\n  contains: (pointsA, pointsB) => {\n    for (let i = 0; i < pointsB.length; i++) {\n      if (!Polygon.containsPoint(pointsA, pointsB[i]))\n        return false;\n    }\n    return true;\n  },\n  /** @internal */\n  clipToRect: (points, rect) => {\n    const edges = Rect.edges(rect);\n    const seen = /* @__PURE__ */ new Set();\n    const count = points.length;\n    const clippedPoints = [];\n    const originalPoints = [];\n    for (let i = 0; i < count; i++) {\n      const point = points[i];\n      const nextPoint = points[(i + 1) % count];\n      if (Rect.containsPoint(rect, point)) {\n        const intersectionKey = keyForPoint(point);\n        seen.add(intersectionKey);\n        originalPoints.push(point);\n        if (Rect.containsPoint(rect, nextPoint))\n          continue;\n      }\n      const line = Line(point, nextPoint);\n      edges.forEach((edge) => {\n        const intersection2 = Line.intersection(line, edge, true);\n        if (!intersection2)\n          return;\n        const intersectionKey = keyForPoint(intersection2);\n        if (seen.has(intersectionKey))\n          return;\n        seen.add(intersectionKey);\n        clippedPoints.push(intersection2);\n      });\n    }\n    if (clippedPoints.length === 0)\n      return originalPoints;\n    Rect.points(rect).forEach((point) => {\n      if (!Polygon.containsPoint(points, point))\n        return;\n      seen.add(keyForPoint(point));\n      clippedPoints.push(point);\n    });\n    return Point.sortClockwise([...originalPoints, ...clippedPoints]);\n  }\n};\nfunction keyForPoint(point) {\n  return `${point == null ? void 0 : point.x}-${point == null ? void 0 : point.y}`;\n}\n\n// ../../library/src/modules/floatingPositionSafeAreaStyle.ts\nfunction invertPlacement(placement) {\n  switch (placement) {\n    case \"top\":\n      return \"bottom\";\n    case \"right\":\n      return \"left\";\n    case \"bottom\":\n      return \"top\";\n    case \"left\":\n      return \"right\";\n    default:\n      assertNever(placement);\n  }\n}\nfunction preferredOffset(point, length, max, collisionDetectionPadding = 0) {\n  const min = Math.max(point, collisionDetectionPadding);\n  if (point < min)\n    return min;\n  const size = length + collisionDetectionPadding;\n  if (min + size > max)\n    return max - size;\n  return min;\n}\nfunction collisionAxis(placement, rect, windowSize) {\n  switch (placement) {\n    case \"top\":\n    case \"bottom\":\n      if (rect.y < 0 || rect.y + rect.height > windowSize.height)\n        return \"y\";\n      return void 0;\n    case \"left\":\n    case \"right\":\n      if (rect.x < 0 || rect.x + rect.width > windowSize.width)\n        return \"x\";\n      return void 0;\n    default:\n      assertNever(placement);\n  }\n}\nfunction getPlacementAndOffsetAvoidingScreenCollision(rect, placement, offset, windowSize) {\n  switch (collisionAxis(placement, rect, windowSize)) {\n    case \"x\":\n      return {\n        placement: invertPlacement(placement),\n        x: offset.x * -1,\n        y: offset.y\n      };\n    case \"y\":\n      return {\n        placement: invertPlacement(placement),\n        x: offset.x,\n        y: offset.y * -1\n      };\n    default:\n      return {\n        placement,\n        x: offset.x,\n        y: offset.y\n      };\n  }\n}\nfunction getSafePlacementFloatingPositionRect(anchor, element, placement, alignment, offset, collisionDetectionSize, collisionDetectionPadding) {\n  const rebasedRect = Rect.rebaseRectOnto(element, anchor, placement, alignment);\n  const preferredRect = {\n    x: rebasedRect.x + offset.x,\n    y: rebasedRect.y + offset.y,\n    width: element.width,\n    height: element.height\n  };\n  if (!collisionDetectionSize)\n    return [placement, preferredRect];\n  const {\n    x,\n    y,\n    placement: safePlacement\n  } = getPlacementAndOffsetAvoidingScreenCollision(preferredRect, placement, offset, collisionDetectionSize);\n  const rebasedCollisionRect = Rect.rebaseRectOnto(element, anchor, safePlacement, alignment);\n  return [\n    safePlacement,\n    {\n      x: preferredOffset(\n        rebasedCollisionRect.x + x,\n        element.width,\n        collisionDetectionSize.width,\n        collisionDetectionPadding\n      ),\n      y: preferredOffset(\n        rebasedCollisionRect.y + y,\n        element.height,\n        collisionDetectionSize.height,\n        collisionDetectionPadding\n      ),\n      width: element.width,\n      height: element.height\n    }\n  ];\n}\nfunction preferredPoint(a, b, points) {\n  if (Polygon.containsPoint([b, ...points], a))\n    return b;\n  return a;\n}\nvar minInset = 5;\nfunction safeAreaPolygonConstraints(rect) {\n  return {\n    constrainX: (value) => Math.min(Math.max(value, rect.x + minInset), rect.x + rect.width - minInset),\n    constrainY: (value) => Math.min(Math.max(value, rect.y + minInset), rect.y + rect.height - minInset)\n  };\n}\nvar mouseOffset = 4;\nfunction polygonPoints({ x, y }, placement, rect, { constrainX, constrainY }) {\n  const [tl, bl, tr, br] = Rect.points(rect);\n  switch (placement) {\n    case \"left\": {\n      const mousePoint = { x: constrainX(x - mouseOffset), y };\n      return [mousePoint, preferredPoint(br, bl, [mousePoint, tr]), preferredPoint(tr, tl, [mousePoint, br])];\n    }\n    case \"right\": {\n      const mousePoint = { x: constrainX(x + mouseOffset), y };\n      return [mousePoint, preferredPoint(bl, br, [mousePoint, tl]), preferredPoint(tl, tr, [mousePoint, bl])];\n    }\n    case \"top\": {\n      const mousePoint = { x, y: constrainY(y - mouseOffset) };\n      return [mousePoint, preferredPoint(bl, tl, [mousePoint, br]), preferredPoint(br, tr, [mousePoint, bl])];\n    }\n    case \"bottom\": {\n      const mousePoint = { x, y: constrainY(y + mouseOffset) };\n      return [mousePoint, preferredPoint(tl, bl, [mousePoint, tr]), preferredPoint(tr, br, [mousePoint, tl])];\n    }\n    default:\n      assertNever(placement);\n  }\n}\nfunction safeAreaInset(placement, delta) {\n  switch (placement) {\n    case \"left\":\n      return `${Math.min(delta.y, 0)}px auto auto 0px`;\n    case \"right\":\n      return `${Math.min(delta.y, 0)}px 0px auto auto`;\n    case \"top\":\n      return `0px auto auto ${Math.min(delta.x, 0)}px`;\n    case \"bottom\":\n      return `auto auto 0px ${Math.min(delta.x, 0)}px`;\n    default:\n      assertNever(placement);\n  }\n}\nfunction floatingPositionSafeAreaStyle(x, y, placement, anchorRect, floatingRect) {\n  const minX = Math.min(floatingRect.x, anchorRect.x);\n  const minY = Math.min(floatingRect.y, anchorRect.y);\n  const rect = Rect.merge(anchorRect, floatingRect);\n  const points = polygonPoints({ x, y }, placement, floatingRect, safeAreaPolygonConstraints(anchorRect)).map((point) => `${point.x - minX}px ${point.y - minY}px`).join(\", \");\n  return {\n    height: `${rect.height}px`,\n    width: `${rect.width}px`,\n    clipPath: `polygon(${points})`,\n    inset: safeAreaInset(placement, Rect.delta(anchorRect, floatingRect))\n  };\n}\nfunction valueForFloatingAlignment(alignment) {\n  switch (alignment) {\n    case \"start\":\n      return 0;\n    case \"center\":\n      return 0.5;\n    case \"end\":\n      return 1;\n    default:\n      assertNever(alignment);\n  }\n}\nfunction motionOriginFromFloatingPosition(placement = \"bottom\", alignment = \"center\") {\n  switch (placement) {\n    case \"top\":\n      return { originX: valueForFloatingAlignment(alignment), originY: 1 };\n    case \"right\":\n      return { originX: 0, originY: valueForFloatingAlignment(alignment) };\n    case \"bottom\":\n      return { originX: valueForFloatingAlignment(alignment), originY: 0 };\n    case \"left\":\n      return { originX: 1, originY: valueForFloatingAlignment(alignment) };\n    default:\n      assertNever(placement);\n  }\n}\n\n// ../../library/src/modules/Floating.tsx\nimport { jsx as jsx54, jsxs as jsxs14 } from \"react/jsx-runtime\";\nfunction getAncestorInfo(anchorRef) {\n  var _a;\n  let el = anchorRef.current;\n  const info = {\n    position: \"absolute\",\n    scrolls: false\n  };\n  while (el) {\n    if ((el == null ? void 0 : el.tagName) === \"BODY\")\n      return info;\n    if (((_a = getComputedStyle(el)) == null ? void 0 : _a.position) === \"fixed\")\n      info.position = \"fixed\";\n    if (el.scrollWidth > el.clientWidth || el.scrollHeight > el.clientHeight)\n      info.scrolls = true;\n    if (info.scrolls && info.position === \"fixed\")\n      return info;\n    el = el.parentElement;\n  }\n  return info;\n}\nfunction createAnimationFrameLoop(onRead) {\n  const startLoop = () => frame.read(onRead, true);\n  const cancelLoop = () => cancelFrame(onRead);\n  return [startLoop, cancelLoop];\n}\nfunction createUpdateSafeArea(safeAreaRef) {\n  let x = 0;\n  let y = 0;\n  return (anchorRect, calculatedRect, placement, event) => {\n    var _a;\n    if (!((_a = safeAreaRef.current) == null ? void 0 : _a.style))\n      return;\n    x = (event == null ? void 0 : event.clientX) ?? x;\n    y = (event == null ? void 0 : event.clientY) ?? y;\n    Object.assign(\n      safeAreaRef.current.style,\n      floatingPositionSafeAreaStyle(x, y, placement, anchorRect, calculatedRect)\n    );\n  };\n}\nfunction updatePosition(floatingPositionRef, position, rect) {\n  if (!floatingPositionRef.current)\n    return;\n  Object.assign(floatingPositionRef.current.style, {\n    position,\n    visibility: \"visible\",\n    // Append \"px\" because we are assigning this object straight to style.\n    left: ((rect == null ? void 0 : rect.x) ?? 0) + (position === \"fixed\" ? 0 : safeWindow.scrollX) + \"px\",\n    top: ((rect == null ? void 0 : rect.y) ?? 0) + (position === \"fixed\" ? 0 : safeWindow.scrollY) + \"px\"\n  });\n}\nvar FloatingStackingContext = /* @__PURE__ */ React60.createContext(/* @__PURE__ */ new Set());\nfunction useDismissFloatingLayer(anchorRef, floatingPositionRef, safeAreaRef, { safeArea, onDismiss }) {\n  const descendantStackingContext = useConstant(() => /* @__PURE__ */ new Set());\n  const ancestorStackingContext = React60.useContext(FloatingStackingContext);\n  const [isPresent, safeToRemove] = usePresence();\n  React60.useEffect(() => {\n    if (isPresent) {\n      if (!floatingPositionRef.current)\n        return;\n      floatingPositionRef.current.style.pointerEvents = \"\";\n      ancestorStackingContext.add(floatingPositionRef.current);\n    } else {\n      if (!floatingPositionRef.current)\n        return;\n      floatingPositionRef.current.style.pointerEvents = \"none\";\n      ancestorStackingContext.delete(floatingPositionRef.current);\n      safeToRemove();\n    }\n  }, [isPresent, safeToRemove, floatingPositionRef, ancestorStackingContext]);\n  React60.useEffect(() => {\n    if (!safeArea) {\n      const handleEscape = (e) => {\n        if (e.key !== \"Escape\")\n          return;\n        onDismiss();\n      };\n      safeWindow.addEventListener(\"keyup\", handleEscape);\n      return () => safeWindow.removeEventListener(\"keyup\", handleEscape);\n    }\n    let latestEvent;\n    function maybeDismiss() {\n      if (!latestEvent || descendantStackingContext.size !== 0)\n        return;\n      for (const element of document.elementsFromPoint(latestEvent.x, latestEvent.y)) {\n        if (element === anchorRef.current)\n          return;\n        if (element === floatingPositionRef.current)\n          return;\n        if (element === safeAreaRef.current)\n          return;\n      }\n      onDismiss();\n    }\n    function scheduleMaybeDismiss(event) {\n      latestEvent = event;\n      frame.read(maybeDismiss);\n    }\n    safeWindow.addEventListener(\"mousemove\", scheduleMaybeDismiss);\n    return () => {\n      safeWindow.removeEventListener(\"mousemove\", scheduleMaybeDismiss);\n    };\n  }, [onDismiss, safeArea, anchorRef, safeAreaRef, floatingPositionRef]);\n  return descendantStackingContext;\n}\nfunction makeGetSafePlacementFloatingPositionRect({\n  placement,\n  alignment,\n  offset,\n  collisionDetectionSize,\n  collisionDetectionPadding\n}) {\n  return (anchor, element) => getSafePlacementFloatingPositionRect(\n    anchor,\n    element,\n    placement,\n    alignment,\n    offset,\n    collisionDetectionSize,\n    collisionDetectionPadding\n  );\n}\nfunction useDynamicMotionOrigin(initialPlacement, alignment) {\n  return useConstant(() => {\n    const { originX, originY } = motionOriginFromFloatingPosition(initialPlacement, alignment);\n    const origin = { x: motionValue(originX), y: motionValue(originY) };\n    return [\n      origin,\n      (placement) => {\n        const values = motionOriginFromFloatingPosition(placement, alignment);\n        origin.x.set(values.originX);\n        origin.y.set(values.originY);\n      }\n    ];\n  });\n}\nfunction childrenWithOrigin(child, { x, y }) {\n  if (!child || !isReactChild(child) || !isReactElement(child))\n    return null;\n  if (!isObject(child.props.style) && !isUndefined(child.props.style))\n    return null;\n  const style = {\n    ...child.props.style,\n    originX: x,\n    originY: y\n  };\n  return React60.cloneElement(child, { style });\n}\nvar overlayContainerId = \"overlay\";\nvar templateOverlayContainerId = \"template-overlay\";\nfunction getPortalContainer(deprecatedSelector, inComponent) {\n  if (inComponent || isUndefined(deprecatedSelector)) {\n    const container2 = document.querySelector(`#${templateOverlayContainerId}`) ?? document.querySelector(`#${overlayContainerId}`);\n    if (container2)\n      return container2;\n  }\n  const container = isString(deprecatedSelector) ? document.querySelector(deprecatedSelector) : void 0;\n  if (container)\n    return container;\n  return document.body;\n}\nfunction Floating({\n  alignment,\n  placement,\n  safeArea,\n  offsetX,\n  offsetY,\n  anchorRef,\n  className: className2,\n  children,\n  portalSelector,\n  zIndex,\n  collisionDetection = false,\n  collisionDetectionPadding,\n  onDismiss,\n  ...rest\n}) {\n  const floatingPositionRef = React60.useRef(null);\n  const safeAreaRef = React60.useRef(null);\n  const contentRef = React60.useRef(null);\n  const [origin, updateOrigin] = useDynamicMotionOrigin(placement, alignment);\n  React60.useLayoutEffect(() => {\n    if (!refHasValue(anchorRef) || !contentRef.current || !placement || !alignment)\n      return;\n    const { position, scrolls } = getAncestorInfo(anchorRef);\n    const elementRect = contentRef.current.getBoundingClientRect();\n    const initialAnchorRect = anchorRef.current.getBoundingClientRect();\n    const offset = {\n      x: offsetX ?? 0,\n      y: offsetY ?? 0\n    };\n    const getSafePlacementRect = makeGetSafePlacementFloatingPositionRect({\n      placement,\n      alignment,\n      offset,\n      collisionDetectionSize: collisionDetection ? { width: safeWindow.innerWidth, height: safeWindow.innerHeight } : void 0,\n      collisionDetectionPadding\n    });\n    const [initialSafePlacement, initialCalculatedRect] = getSafePlacementRect(initialAnchorRect, elementRect);\n    frame.update(() => {\n      updateOrigin(initialSafePlacement);\n    });\n    frame.render(() => {\n      if (!floatingPositionRef.current)\n        return;\n      updatePosition(floatingPositionRef, position, initialCalculatedRect);\n    });\n    const updateSafeArea = createUpdateSafeArea(safeAreaRef);\n    let anchorRect = initialAnchorRect;\n    let safePlacement;\n    let calculatedRect;\n    let latestEvent;\n    const onUpdate = () => {\n      updateOrigin(safePlacement);\n    };\n    const onRender = () => {\n      updatePosition(floatingPositionRef, position, calculatedRect);\n      if (safeArea)\n        updateSafeArea(anchorRect, calculatedRect, safePlacement, latestEvent);\n      latestEvent = void 0;\n    };\n    const onRead = () => {\n      anchorRect = anchorRef.current.getBoundingClientRect();\n      const safePlacementAndRect = getSafePlacementRect(anchorRect, elementRect);\n      safePlacement = safePlacementAndRect[0];\n      calculatedRect = safePlacementAndRect[1];\n      frame.update(onUpdate);\n      frame.render(onRender);\n    };\n    const [loop, cancelAnimationFrameLoop] = createAnimationFrameLoop(onRead);\n    if (scrolls)\n      loop == null ? void 0 : loop();\n    if (!safeArea)\n      return () => cancelAnimationFrameLoop == null ? void 0 : cancelAnimationFrameLoop();\n    const handleMouseMove = (event) => {\n      latestEvent = event;\n      frame.read(onRead);\n    };\n    const anchor = anchorRef.current;\n    anchor.addEventListener(\"mousemove\", handleMouseMove);\n    return () => {\n      cancelAnimationFrameLoop == null ? void 0 : cancelAnimationFrameLoop();\n      anchor.removeEventListener(\"mousemove\", handleMouseMove);\n    };\n  }, [\n    safeArea,\n    placement,\n    alignment,\n    offsetX,\n    offsetY,\n    anchorRef,\n    collisionDetection,\n    collisionDetectionPadding,\n    updateOrigin\n  ]);\n  const descendantContext = useDismissFloatingLayer(anchorRef, floatingPositionRef, safeAreaRef, {\n    safeArea,\n    onDismiss\n  });\n  const inComponent = useContext15(ComponentContainerContext);\n  return ReactDOM.createPortal(\n    /* @__PURE__ */ jsxs14(\n      motion.div,\n      {\n        ref: floatingPositionRef,\n        className: className2,\n        style: {\n          // Initially rendered as hidden, but the layout effect will set\n          // to visible when the position is calculated.\n          visibility: \"hidden\",\n          width: \"auto\",\n          height: \"auto\",\n          position: \"absolute\",\n          zIndex\n        },\n        ...rest,\n        children: [\n          safeArea ? /* @__PURE__ */ jsx54(\"div\", { ref: safeAreaRef, style: { position: \"absolute\" }, \"data-safearea\": true }) : (\n            // biome-ignore lint/a11y/useKeyWithClickEvents: overlays don't support key events yet.\n            /* @__PURE__ */ jsx54(\"div\", { style: { position: \"fixed\", inset: 0 }, \"aria-hidden\": true, onClick: onDismiss })\n          ),\n          /* @__PURE__ */ jsx54(FloatingStackingContext.Provider, { value: descendantContext, children: /* @__PURE__ */ jsx54(\"div\", { ref: contentRef, children: childrenWithOrigin(children, origin) }) })\n        ]\n      }\n    ),\n    getPortalContainer(portalSelector, inComponent)\n  );\n}\n\n// ../../library/src/modules/GracefullyDegradingErrorBoundary.tsx\nimport { Component as Component14 } from \"react\";\nimport { jsx as jsx55 } from \"react/jsx-runtime\";\nvar GracefullyDegradingErrorBoundary = class extends Component14 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { error: void 0 });\n    __publicField(this, \"message\", \"Made UI non-interactive due to an error\");\n    __publicField(this, \"messageFatal\", \"Fatal error\");\n    __publicField(this, \"messageReport\", \"If you are the author of this website, please report this issue to the Framer team via https://www.framer.community/\");\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  componentDidCatch(error) {\n    window.__framer_hadFatalError = true;\n    if (\"cause\" in error) {\n      error = error.cause;\n    }\n    console.error(`${isBot ? this.message : this.messageFatal} (see above). ${this.messageReport}.`);\n    const sampleRate = Math.random();\n    if (sampleRate > 0.25)\n      return;\n    const stack = error instanceof Error && typeof error.stack === \"string\" ? error.stack : null;\n    sendTrackingEvent(\"published_site_load_error\", {\n      message: String(error),\n      stack\n    });\n  }\n  render() {\n    var _a, _b;\n    const error = this.state.error;\n    if (!error)\n      return this.props.children;\n    const unwrappedError = \"cause\" in error ? error.cause : error;\n    const closingHTMLComment = /-->/gu;\n    const closingHTMLCommentReplacement = \"--!>\";\n    const dom = isBot ? ((_a = document.getElementById(\"main\")) == null ? void 0 : _a.innerHTML) || \"\" : (\n      // @FIXME: We should have a UI for fatal error recovery.\n      // We don't have a UI for fatal error recovery currently, so we just render nothing for regular users. If we were to throw, React would unmount too.\n      // We do render instead of throwing, so that:\n      // - `componentDidCatch` runs (if we throw here, it does not)\n      // - we can skip logging `Recoverable error during hydration`, because we know it was fatal.\n      \"\"\n    );\n    return (\n      // This has the caveat that we will slightly modify the DOM, but it appears to be fine in this case.\n      // The alternative would be to queue a new task that runs after and then set the innerHTML (= avoids the dummy-div), but that means we'll have DOM -> no DOM -> DOM transitions. With the div, we have DOM -> DOM and remove possible race-conditions.\n      /* @__PURE__ */ jsx55(\n        \"div\",\n        {\n          style: { display: \"contents\" },\n          suppressHydrationWarning: true,\n          dangerouslySetInnerHTML: {\n            __html: `<!-- DOM replaced by GracefullyDegradingErrorBoundary due to \"${unwrappedError.message.replace(closingHTMLComment, closingHTMLCommentReplacement)}\". ${this.messageReport}: --><!-- Stack: ${(_b = error.stack) == null ? void 0 : _b.replace(closingHTMLComment, \"--!>\")} -->` + dom\n          }\n        }\n      )\n    );\n  }\n};\n\n// ../../library/src/modules/LazyValue.ts\nvar LazyValue = class {\n  constructor(resolver) {\n    this.resolver = resolver;\n    __publicField(this, \"status\");\n  }\n  static is(value) {\n    return value instanceof LazyValue;\n  }\n  /** Preload the value so it can be read() later. */\n  preload() {\n    if (this.status) {\n      const status = this.status;\n      if (status.type !== \"pending\")\n        return;\n      return status.promise;\n    }\n    const promise = this.resolver().then(\n      (value) => {\n        this.status = {\n          type: \"fulfilled\",\n          value\n        };\n      },\n      (error) => {\n        this.status = {\n          type: \"rejected\",\n          error\n        };\n      }\n    );\n    this.status = {\n      type: \"pending\",\n      promise\n    };\n    return promise;\n  }\n  /** Synchronously read the value after calling preload() before. */\n  read() {\n    const status = this.status;\n    if (!status) {\n      throw new Error(\"Need to call preload() before read()\");\n    }\n    switch (status.type) {\n      case \"pending\":\n        throw new Error(\"Need to wait for preload() to resolve\");\n      case \"fulfilled\":\n        return status.value;\n      case \"rejected\":\n        throw status.error;\n      default:\n        assertNever(status);\n    }\n  }\n  async readAsync() {\n    const promise = this.preload();\n    if (promise)\n      await promise;\n    return this.read();\n  }\n};\n\n// ../../library/src/modules/LibraryFeaturesContext.ts\nimport React61 from \"react\";\nvar LibraryFeaturesContext = /* @__PURE__ */ React61.createContext(void 0);\nvar LibraryFeaturesProvider = /* @__PURE__ */ (() => LibraryFeaturesContext.Provider)();\nvar useLibraryFeatures = () => {\n  const context = React61.useContext(LibraryFeaturesContext);\n  return context ?? {};\n};\n\n// ../../library/src/modules/Link/index.tsx\nimport { forwardRef as forwardRef4, isValidElement as isValidElement4, useMemo as useMemo10 } from \"react\";\n\n// ../../library/src/render/utils/findAnchorElement.ts\nfunction findAnchorElement(target, withinElement) {\n  if (target instanceof HTMLAnchorElement) {\n    return target;\n  }\n  if (target instanceof Element) {\n    if (target === withinElement) {\n      return null;\n    }\n    return findAnchorElement(target.parentElement, withinElement);\n  }\n  return null;\n}\n\n// ../../library/src/modules/ChildrenCanSuspend.tsx\nimport { forwardRef as forwardRef3 } from \"react\";\nimport { jsx as jsx56 } from \"react/jsx-runtime\";\nfunction ChildrenCanSuspend({ children }) {\n  const { useGranularSuspense } = useLibraryFeatures();\n  if (!useGranularSuspense)\n    return children;\n  return /* @__PURE__ */ jsx56(SuspenseThatPreservesDom, { children });\n}\nfunction withChildrenCanSuspend(Component18) {\n  return forwardRef3(function withChildrenCanSuspendInner(props, ref) {\n    return /* @__PURE__ */ jsx56(ChildrenCanSuspend, { children: /* @__PURE__ */ jsx56(Component18, { ...props, ref }) });\n  });\n}\n\n// ../../library/src/modules/LinkToWebPage.ts\nvar linkKey = \"webPageId\";\nfunction isLinkToWebPage(link) {\n  return Boolean(link && typeof link === \"object\" && linkKey in link);\n}\n\n// ../../library/src/modules/observeRouteForPreloading.ts\nvar PRELOAD_AFTER_MS = 500;\nvar OBSERVER_THRESHOLD = 0.9;\nvar LOW_MEMORY_THRESHOLD = 1.7;\nvar MAX_CONCURRENT_PRELOADS_SLOW_NETWORK = 4;\nvar MAX_CONCURRENT_PRELOADS_FAST_NETWORK = Infinity;\nvar nodeToRoute = /* @__PURE__ */ new WeakMap();\nvar preloadedRoutes = /* @__PURE__ */ new Set();\nvar routeToNodesInViewport = /* @__PURE__ */ new Map();\nfunction getObserveRouteForPreloadingFn() {\n  var _a;\n  const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection || {};\n  const lowDeviceMemory = navigator.deviceMemory && navigator.deviceMemory > LOW_MEMORY_THRESHOLD;\n  let effectiveType, preloadDisabled, maxPreloadAmount;\n  function updateConnection() {\n    effectiveType = connection.effectiveType || \"\";\n    preloadDisabled = connection.saveData || effectiveType.includes(\"2g\");\n    maxPreloadAmount = effectiveType === \"3g\" || lowDeviceMemory ? MAX_CONCURRENT_PRELOADS_SLOW_NETWORK : MAX_CONCURRENT_PRELOADS_FAST_NETWORK;\n  }\n  (_a = connection.addEventListener) == null ? void 0 : _a.call(connection, \"change\", updateConnection);\n  updateConnection();\n  const observer = new IntersectionObserver(onPreloadIntersectionChange, { threshold: OBSERVER_THRESHOLD });\n  let activePreloadsAmount = 0;\n  async function preloadTimeout(route, target) {\n    if (preloadDisabled)\n      return;\n    const nodesInViewport = routeToNodesInViewport.get(route);\n    if (!(nodesInViewport == null ? void 0 : nodesInViewport.size) || preloadedRoutes.has(route))\n      return;\n    ++activePreloadsAmount;\n    preloadedRoutes.add(route);\n    const preloadDone = preloadRoute(route).catch(() => {\n      if (false) {\n        throw new Error(\n          \"Error in preloadRoute during preloadTimeout. This should never happen as it introduces bugs. Please make sure preloadRoute does not throw.\"\n        );\n      }\n    });\n    observer.unobserve(target);\n    nodeToRoute.delete(target);\n    for (const node of nodesInViewport) {\n      observer.unobserve(node);\n      nodeToRoute.delete(node);\n    }\n    nodesInViewport.clear();\n    routeToNodesInViewport.delete(route);\n    await preloadDone;\n    --activePreloadsAmount;\n  }\n  function onPreloadIntersectionChange(entries) {\n    var _a2;\n    for (const entry of entries) {\n      const target = entry.target;\n      const route = nodeToRoute.get(target);\n      if (!route || preloadedRoutes.has(route)) {\n        observer.unobserve(target);\n        nodeToRoute.delete(target);\n        continue;\n      }\n      const nodes = routeToNodesInViewport.get(route);\n      const amountOfNodesInViewport = ((_a2 = routeToNodesInViewport.get(route)) == null ? void 0 : _a2.size) ?? 0;\n      if (entry.isIntersecting) {\n        if (activePreloadsAmount >= maxPreloadAmount)\n          continue;\n        if (nodes)\n          nodes.add(target);\n        else\n          routeToNodesInViewport.set(route, /* @__PURE__ */ new Set([target]));\n        setTimeout(preloadTimeout.bind(void 0, route, target), PRELOAD_AFTER_MS);\n      } else {\n        if (nodes)\n          nodes.delete(target);\n        if (amountOfNodesInViewport <= 1)\n          routeToNodesInViewport.delete(route);\n      }\n    }\n  }\n  return (route, node) => {\n    if (preloadedRoutes.has(route))\n      return;\n    nodeToRoute.set(node, route);\n    observer.observe(node);\n    return () => {\n      nodeToRoute.delete(node);\n      observer.unobserve(node);\n    };\n  };\n}\nvar observeRouteForPreloading = (\n  // this also guards `window`\n  !shouldPreloadBasedOnUA || typeof IntersectionObserver === \"undefined\" ? null : /* @__PURE__ */ getObserveRouteForPreloadingFn()\n);\n\n// ../../library/src/modules/resolveSlug.ts\nvar noLocale = Symbol(\"noLocale\");\nvar resolveSlugCache = /* @__PURE__ */ new Map();\nfunction resolveSlug(unresolvedSlug, utilsByCollectionId, activeLocale) {\n  var _a, _b;\n  const cache2 = (_b = (_a = resolveSlugCache == null ? void 0 : resolveSlugCache.get((activeLocale == null ? void 0 : activeLocale.id) ?? noLocale)) == null ? void 0 : _a.get(unresolvedSlug.collectionId)) == null ? void 0 : _b.get(unresolvedSlug.collectionItemId);\n  if (cache2)\n    return cache2;\n  const collectionCache = resolveSlugCache.get((activeLocale == null ? void 0 : activeLocale.id) ?? noLocale) ?? /* @__PURE__ */ new Map();\n  resolveSlugCache.set((activeLocale == null ? void 0 : activeLocale.id) ?? noLocale, collectionCache);\n  const collectionItemCache = collectionCache.get(unresolvedSlug.collectionId) ?? /* @__PURE__ */ new Map();\n  collectionCache.set(unresolvedSlug.collectionId, collectionItemCache);\n  const lazyValue = new LazyValue(async () => {\n    try {\n      const getUtils = utilsByCollectionId[unresolvedSlug.collectionId];\n      if (!getUtils) {\n        throw new Error(`Key not found in collection utils for collection id: \"${unresolvedSlug.collectionId}\"`);\n      }\n      const utils = await getUtils();\n      if (!utils)\n        throw new Error(\"Collection does not contain utility functions\");\n      const slug = await utils.getSlugByRecordId(unresolvedSlug.collectionItemId, activeLocale ?? void 0);\n      return slug;\n    } catch (error) {\n      console.warn(`Failed to resolve slug: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n      return void 0;\n    }\n  });\n  collectionItemCache.set(unresolvedSlug.collectionItemId, lazyValue);\n  return lazyValue;\n}\n\n// ../../library/src/modules/Link/resolveSlugs.ts\nasync function resolveSlugs(unresolvedPathSlugs, unresolvedHashSlugs, collectionUtils, activeLocale) {\n  async function handleSlugs(unresolvedSlugs) {\n    if (!unresolvedSlugs || !collectionUtils)\n      return {};\n    const result = {};\n    for (const slugKey in unresolvedSlugs) {\n      const unresolvedSlug = unresolvedSlugs[slugKey];\n      assert(unresolvedSlug, \"unresolvedSlug should be defined\");\n      const lazyValue = resolveSlug(unresolvedSlug, collectionUtils, activeLocale);\n      await lazyValue.preload();\n      const value = lazyValue.read();\n      if (value) {\n        result[slugKey] = value;\n      }\n    }\n    return result;\n  }\n  const [pathResult, slugResult] = await Promise.allSettled([\n    handleSlugs(unresolvedPathSlugs),\n    handleSlugs(unresolvedHashSlugs)\n  ]);\n  return {\n    path: pathResult.status === \"fulfilled\" ? pathResult.value : void 0,\n    hash: slugResult.status === \"fulfilled\" ? slugResult.value : void 0\n  };\n}\nfunction resolveSlugsWithSuspense(unresolvedPathSlugs, unresolvedHashSlugs, collectionUtils, activeLocale) {\n  const promises = [];\n  function handleSlugs(unresolvedSlugs) {\n    if (!unresolvedSlugs || !collectionUtils)\n      return void 0;\n    const result2 = {};\n    for (const slugKey in unresolvedSlugs) {\n      const unresolvedSlug = unresolvedSlugs[slugKey];\n      assert(unresolvedSlug, \"unresolvedSlug should be defined\");\n      const lazyValue = resolveSlug(unresolvedSlug, collectionUtils, activeLocale);\n      const promise = lazyValue.preload();\n      if (promise) {\n        promises.push(promise);\n      } else {\n        const value = lazyValue.read();\n        if (value) {\n          result2[slugKey] = value;\n        }\n      }\n    }\n    return result2;\n  }\n  const result = {\n    path: handleSlugs(unresolvedPathSlugs),\n    hash: handleSlugs(unresolvedHashSlugs)\n  };\n  if (promises.length) {\n    throw Promise.allSettled(promises);\n  }\n  return result;\n}\n\n// ../../library/src/modules/Link/urlChecks.tsx\nfunction isInternalURL(href) {\n  if (href === void 0)\n    return false;\n  if (href.startsWith(\"#\") || href.startsWith(\"/\") || href.startsWith(\".\"))\n    return true;\n  return false;\n}\nfunction isValidURL(href, isInternal) {\n  try {\n    const url = new URL(href);\n    return Boolean(url.protocol);\n  } catch {\n  }\n  return isInternal;\n}\n\n// ../../library/src/modules/Link/findMatchingRouteAttributes.tsx\nasync function findMatchingRouteAttributesForWebPageLink(router, currentRoute, pageLink, activeLocale, implicitPathVariables) {\n  const { webPageId, hash: hash2, pathVariables, hashVariables, unresolvedHashSlugs, unresolvedPathSlugs } = pageLink;\n  const resolvedSlugs = await resolveSlugs(\n    unresolvedPathSlugs,\n    unresolvedHashSlugs,\n    router.collectionUtils,\n    activeLocale\n  );\n  return getRouteAttributes(\n    router,\n    currentRoute,\n    webPageId,\n    hash2,\n    implicitPathVariables,\n    pathVariables,\n    hashVariables,\n    resolvedSlugs\n  );\n}\nfunction findMatchingRouteAttributesForWebPageLinkWithSuspense(router, currentRoute, pageLink, activeLocale, implicitPathVariables) {\n  const { webPageId, hash: hash2, pathVariables, hashVariables, unresolvedHashSlugs, unresolvedPathSlugs } = pageLink;\n  const resolvedSlugs = resolveSlugsWithSuspense(\n    unresolvedPathSlugs,\n    unresolvedHashSlugs,\n    router.collectionUtils,\n    activeLocale\n  );\n  return getRouteAttributes(\n    router,\n    currentRoute,\n    webPageId,\n    hash2,\n    implicitPathVariables,\n    pathVariables,\n    hashVariables,\n    resolvedSlugs\n  );\n}\nfunction findMatchingRouteAttributesForResolvedPath(router, path, implicitPathVariables) {\n  if (!router.routes || !router.getRoute) {\n    return;\n  }\n  const isInternal = isInternalURL(path);\n  if (!isInternal) {\n    return;\n  }\n  try {\n    const [pathnameWithQueryParams, hash2] = path.split(\"#\", 2);\n    assert(pathnameWithQueryParams !== void 0, \"A href must have a defined pathname.\");\n    const [pathname] = pathnameWithQueryParams.split(\"?\", 2);\n    assert(pathname !== void 0, \"A href must have a defined pathname.\");\n    const { routeId, pathVariables } = inferInitialRouteFromPath(router.routes, pathname);\n    const route = router.getRoute(routeId);\n    if (route) {\n      const combinedPathVariables = Object.assign({}, implicitPathVariables, pathVariables);\n      return {\n        routeId,\n        route,\n        href: path,\n        // If the link is resolved (in ResolveLink), we trust that the hash is also resolved. Otherwise, it\n        // should be resolved by getHashForRoute.\n        elementId: hash2,\n        pathVariables: combinedPathVariables\n      };\n    }\n  } catch {\n  }\n}\nfunction getRouteAttributes(router, currentRoute, routeId, hash2, implicitPathVariables, pathVariables, hashVariables, resolvedSlugs) {\n  var _a;\n  const combinedPathVariables = { ...implicitPathVariables, ...pathVariables, ...resolvedSlugs == null ? void 0 : resolvedSlugs.path };\n  const combinedHashVariables = { ...implicitPathVariables, ...hashVariables, ...resolvedSlugs == null ? void 0 : resolvedSlugs.hash };\n  const route = (_a = router.getRoute) == null ? void 0 : _a.call(router, routeId);\n  const resolvedHref = getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    currentPathVariables: currentRoute == null ? void 0 : currentRoute.pathVariables,\n    hash: hash2,\n    pathVariables: combinedPathVariables,\n    hashVariables: combinedHashVariables,\n    preserveQueryParams: router.preserveQueryParams,\n    siteCanonicalURL: router.siteCanonicalURL\n  });\n  const resolvedHash = resolvedHref.split(\"#\", 2)[1];\n  return {\n    routeId,\n    route,\n    href: resolvedHref,\n    elementId: resolvedHash,\n    pathVariables: combinedPathVariables\n  };\n}\n\n// ../../library/src/modules/Link/getRouteFromPageLink.tsx\nfunction getRouteFromPageLink(pageLink, router, currentRoute) {\n  var _a;\n  if (isString(pageLink)) {\n    const isInternal = isInternalURL(pageLink);\n    if (!router.routes || !router.getRoute || !currentRoute || !isInternal) {\n      return;\n    }\n    const [pathnameWithQueryParams] = pageLink.split(\"#\", 2);\n    if (pathnameWithQueryParams === void 0)\n      return;\n    const [pathname] = pathnameWithQueryParams.split(\"?\", 2);\n    if (pathname === void 0)\n      return;\n    const { routeId } = inferInitialRouteFromPath(router.routes, pathname);\n    return router.getRoute(routeId);\n  }\n  const { webPageId } = pageLink;\n  return (_a = router.getRoute) == null ? void 0 : _a.call(router, webPageId);\n}\n\n// ../../library/src/modules/framerPageLink.ts\nvar elementKey = \"element\";\nvar collectionKey = \"collection\";\nvar collectionItemIdKey = \"collectionItemId\";\nvar pathVariablesKey = \"pathVariables\";\nvar mediaType = \"framer/page-link,\";\nfunction isFramerPageLink(value) {\n  return isString(value) && value.startsWith(`data:${mediaType}`);\n}\nfunction createFramerPageLink(targetId = null, options = {}) {\n  const target = targetId ? targetId : \"none\";\n  const link = new URL(`data:${mediaType}${target}`);\n  if (options.element) {\n    link.searchParams.append(elementKey, options.element);\n  }\n  if (options.collectionItem) {\n    link.searchParams.append(collectionKey, options.collectionItem.collection);\n    link.searchParams.append(collectionItemIdKey, options.collectionItem.collectionItemId);\n    link.searchParams.append(pathVariablesKey, new URLSearchParams(options.collectionItem.pathVariables).toString());\n  }\n  return link.href;\n}\nfunction parseFramerPageLink(link) {\n  if (!isFramerPageLink(link))\n    return;\n  try {\n    const url = new URL(link);\n    const target = url.pathname.substring(mediaType.length);\n    const searchParams = url.searchParams;\n    const element = searchParams.has(elementKey) ? searchParams.get(elementKey) : void 0;\n    let collectionItem;\n    const collection = searchParams.get(collectionKey);\n    const collectionItemId = searchParams.get(collectionItemIdKey);\n    const pathVariablesValue = searchParams.get(pathVariablesKey);\n    if (collection && collectionItemId && pathVariablesValue) {\n      const pathVariables = Object.fromEntries(new URLSearchParams(pathVariablesValue).entries());\n      collectionItem = {\n        collection,\n        collectionItemId,\n        pathVariables\n      };\n    }\n    return {\n      target: target === \"none\" ? null : target,\n      /**\n       * For historical reason we used to set \"element=none\" into the\n       * datalink, we no longer do that today, but we still keep this code\n       * so we could parse legacy links correctly.\n       */\n      element: element === \"none\" ? void 0 : element,\n      collectionItem\n    };\n  } catch {\n    return;\n  }\n}\nfunction shouldOpenLinkInNewTab(link) {\n  return !isFramerPageLink(link);\n}\nfunction navigateFromAttributes(navigate, element, implicitPathVariables) {\n  var _a;\n  let routeId = element.getAttribute(\"data-framer-page-link-target\" /* Page */);\n  let elementId;\n  let pathVariables;\n  if (routeId) {\n    elementId = element.getAttribute(\"data-framer-page-link-element\" /* Element */) ?? void 0;\n    const pathVariablesRaw = element.getAttribute(\"data-framer-page-link-path-variables\" /* PathVariables */);\n    if (pathVariablesRaw) {\n      pathVariables = Object.fromEntries(new URLSearchParams(pathVariablesRaw).entries());\n    }\n  } else {\n    const href = element.getAttribute(\"href\");\n    if (!href)\n      return false;\n    const link = parseFramerPageLink(href);\n    if (!link || !link.target)\n      return false;\n    routeId = link.target;\n    elementId = link.element ?? void 0;\n    pathVariables = (_a = link.collectionItem) == null ? void 0 : _a.pathVariables;\n  }\n  const smoothScroll = elementId ? element.dataset.framerSmoothScroll !== void 0 : void 0;\n  navigate(routeId, elementId, Object.assign({}, implicitPathVariables, pathVariables), smoothScroll);\n  return true;\n}\n\n// ../../library/src/modules/Link/linkFromFramerPageLink.tsx\nfunction linkFromFramerPageLink(link) {\n  if (!isFramerPageLink(link))\n    return link;\n  const parsed = parseFramerPageLink(link);\n  if (!parsed)\n    return void 0;\n  const { target, element, collectionItem } = parsed;\n  if (!target)\n    return void 0;\n  return {\n    webPageId: target,\n    hash: element ?? void 0,\n    pathVariables: createVariablesFromPageLinkCollectionItem(collectionItem)\n  };\n}\nfunction createVariablesFromPageLinkCollectionItem(collectionItem) {\n  if (!collectionItem)\n    return void 0;\n  const variables = {};\n  for (const pathVariablesKey2 in collectionItem.pathVariables) {\n    const value = collectionItem.pathVariables[pathVariablesKey2];\n    if (value)\n      variables[pathVariablesKey2] = value;\n  }\n  return variables;\n}\n\n// ../../library/src/modules/Link/linkMatchesRoute.tsx\nimport { useContext as useContext17 } from \"react\";\n\n// ../../library/src/modules/Link/pathVariables.tsx\nimport { createContext as createContext7, useContext as useContext16 } from \"react\";\nvar pathVariablesRegExp2 = /:([a-z]\\w*)/gi;\nvar PathVariablesContext = /* @__PURE__ */ createContext7(void 0);\nfunction useImplicitPathVariables() {\n  var _a;\n  const contextPathVariables = useContext16(PathVariablesContext);\n  const currentPathVariables = (_a = useCurrentRoute()) == null ? void 0 : _a.pathVariables;\n  const pathVariables = contextPathVariables || currentPathVariables;\n  return pathVariables;\n}\n\n// ../../library/src/modules/Link/linkMatchesRoute.tsx\nfunction linkMatchesRoute(route, { webPageId, hash: hash2, pathVariables }, implicitPathVariables) {\n  if (webPageId !== route.id)\n    return false;\n  if (hash2)\n    return false;\n  if (route.path && route.pathVariables) {\n    const combinedPathVariable = Object.assign({}, implicitPathVariables, pathVariables);\n    for (const [, key7] of route.path.matchAll(pathVariablesRegExp2)) {\n      if (!key7)\n        return false;\n      if (route.pathVariables[key7] !== combinedPathVariable[key7]) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\nfunction useLinkMatchesRoute(link) {\n  const route = useCurrentRoute();\n  const contextPathVariables = useContext17(PathVariablesContext);\n  if (!route)\n    return false;\n  const pageLink = isString(link) ? linkFromFramerPageLink(link) : link;\n  return isLinkToWebPage(pageLink) ? linkMatchesRoute(route, pageLink, contextPathVariables) : false;\n}\n\n// ../../library/src/modules/Link/types.ts\nvar AnchorLinkTarget = /* @__PURE__ */ ((AnchorLinkTarget2) => {\n  AnchorLinkTarget2[\"_blank\"] = \"_blank\";\n  AnchorLinkTarget2[\"_self\"] = \"_self\";\n  return AnchorLinkTarget2;\n})(AnchorLinkTarget || {});\n\n// ../../library/src/modules/Link/propsForLink.tsx\nfunction propsForLink(href, openInNewTab = void 0, trackLinkClick) {\n  const isInternal = isInternalURL(href);\n  const target = getTargetAttrValue(openInNewTab, isInternal);\n  const rel = !isInternal ? \"noopener\" : void 0;\n  href = href === \"\" || isValidURL(href, isInternal) ? href : `https://${href}`;\n  return trackLinkClick ? {\n    href,\n    target,\n    rel,\n    onClick() {\n      void trackLinkClick(href);\n    }\n  } : { href, target, rel };\n}\nfunction getTargetAttrValue(openInNewTab, isInternal) {\n  if (openInNewTab !== void 0) {\n    return openInNewTab ? \"_blank\" /* _blank */ : void 0;\n  }\n  return isInternal ? void 0 : \"_blank\" /* _blank */;\n}\n\n// ../../library/src/modules/Link/useReplaceNestedLinks.tsx\nimport { Children as Children3, createContext as createContext8, createElement, isValidElement as isValidElement3, useCallback as useCallback10, useContext as useContext18, useMemo as useMemo9 } from \"react\";\n\n// ../../library/src/modules/NestedLinksCollector.ts\nfunction linkInfoKey(link) {\n  var _a, _b;\n  return `${link.scopeId}:${link.nodeId}:${(_a = link.furthestExternalComponent) == null ? void 0 : _a.scopeId}:${(_b = link.furthestExternalComponent) == null ? void 0 : _b.nodeId}`;\n}\nvar NestedLinksCollector = class {\n  constructor() {\n    __publicField(this, \"collectedLinks\", /* @__PURE__ */ new Map());\n    __publicField(this, \"nestingInfo\", /* @__PURE__ */ new Map());\n  }\n  clear() {\n    this.collectedLinks.clear();\n    this.nestingInfo.clear();\n  }\n  /**\n   * Returns a Map of outer links to their inner links.\n   *\n   * NOTE: This function is called in the SSG renderer sandbox (<root>/src/ssg/src/ssg-sandbox-renderer/sandbox/worker/renderer.ts)\n   */\n  getLinks() {\n    const result = /* @__PURE__ */ new Map();\n    for (const [outerLinkKey, innerLinkKeys] of this.nestingInfo) {\n      const outerLinkInfo = this.collectedLinks.get(outerLinkKey);\n      assert(outerLinkInfo, `Outer link not found: ${outerLinkKey}`);\n      const links = Array.from(innerLinkKeys).map((innerLinkKey) => {\n        const innerLinkInfo = this.collectedLinks.get(innerLinkKey);\n        assert(innerLinkInfo, `Inner link not found: ${innerLinkKey}`);\n        return innerLinkInfo;\n      });\n      result.set(outerLinkInfo, links);\n    }\n    return result;\n  }\n  collectNestedLink(outerLink, innerLink) {\n    if (typeof window !== \"undefined\" && true || !outerLink.nodeId || !innerLink.nodeId) {\n      return;\n    }\n    this.collectedLinks.set(linkInfoKey(outerLink), outerLink);\n    this.collectedLinks.set(linkInfoKey(innerLink), innerLink);\n    const outerLinkNestingInfo = this.nestingInfo.get(linkInfoKey(outerLink)) ?? /* @__PURE__ */ new Set();\n    outerLinkNestingInfo.add(linkInfoKey(innerLink));\n    this.nestingInfo.set(linkInfoKey(outerLink), outerLinkNestingInfo);\n  }\n};\nvar nestedLinksCollector = /* @__PURE__ */ new NestedLinksCollector();\n\n// ../../library/src/modules/useIsOnFramerCanvas.ts\nfunction useIsOnFramerCanvas() {\n  return RenderTarget.current() === RenderTarget.canvas;\n}\n\n// ../../library/src/modules/Link/useReplaceNestedLinks.tsx\nimport { jsx as jsx57 } from \"react/jsx-runtime\";\nvar OuterLinkContext = /* @__PURE__ */ createContext8(void 0);\nfunction useReplaceNestedLinks(children, scopeId, nodeId, href, propsAddedByLink, observerRef) {\n  const outerLink = useContext18(OuterLinkContext);\n  const furthestExternalComponent = useFurthestExternalComponent();\n  const innerLink = useMemo9(\n    () => ({ scopeId, nodeId, furthestExternalComponent }),\n    [scopeId, nodeId, furthestExternalComponent]\n  );\n  const router = useRouter();\n  const currentRoute = useCurrentRoute();\n  const route = useMemo9(() => {\n    const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n    if (!pageLink)\n      return;\n    return getRouteFromPageLink(pageLink, router, currentRoute);\n  }, [currentRoute, href, router]);\n  const { replaceNestedLinks } = useLibraryFeatures();\n  const isOnFramerCanvas = useIsOnFramerCanvas();\n  const shouldReplaceLink = Boolean(replaceNestedLinks && !isOnFramerCanvas && (outerLink == null ? void 0 : outerLink.nodeId) && innerLink.nodeId);\n  const onClick = useCallback10(\n    (event) => {\n      var _a;\n      if (!propsAddedByLink.href)\n        return;\n      event.preventDefault();\n      event.stopPropagation();\n      const isAppleDevice = /Mac|iPod|iPhone|iPad/u.test(navigator.userAgent);\n      if (isAppleDevice ? event.metaKey : event.ctrlKey) {\n        openExternalLink(propsAddedByLink.href, \"\", \"_blank\");\n        return;\n      }\n      if (route) {\n        (_a = propsAddedByLink.navigate) == null ? void 0 : _a.call(propsAddedByLink);\n      } else {\n        openExternalLink(propsAddedByLink.href, propsAddedByLink.rel, propsAddedByLink.target);\n      }\n    },\n    [propsAddedByLink, route]\n  );\n  const onAuxClick = useCallback10(\n    (event) => {\n      if (!propsAddedByLink.href)\n        return;\n      event.preventDefault();\n      event.stopPropagation();\n      openExternalLink(propsAddedByLink.href, \"\", \"_blank\");\n    },\n    [propsAddedByLink]\n  );\n  const onKeyDown = useCallback10(\n    (event) => {\n      var _a;\n      if (!propsAddedByLink.href)\n        return;\n      if (event.key !== \"Enter\")\n        return;\n      event.preventDefault();\n      event.stopPropagation();\n      if (route) {\n        (_a = propsAddedByLink.navigate) == null ? void 0 : _a.call(propsAddedByLink);\n      } else {\n        openExternalLink(propsAddedByLink.href, propsAddedByLink.rel, propsAddedByLink.target);\n      }\n    },\n    [propsAddedByLink, route]\n  );\n  useRefEffect(\n    observerRef,\n    (node) => {\n      if (node === null)\n        return;\n      if (!shouldReplaceLink)\n        return;\n      node.dataset.hydrated = \"true\";\n    },\n    [shouldReplaceLink]\n  );\n  let replacedChildren = children;\n  if (shouldReplaceLink) {\n    Children3.forEach(children, (child) => {\n      if (!isChildReplaceable(child))\n        return;\n      assert(\n        linkInfoIsCollectable(outerLink),\n        \"outerLink must have nodeId defined at this point; this was verified with `shouldReplaceLink` above\"\n      );\n      assert(\n        linkInfoIsCollectable(innerLink),\n        \"innerLink must have nodeId defined at this point; this was verified with `shouldReplaceLink` above\"\n      );\n      nestedLinksCollector.collectNestedLink(outerLink, innerLink);\n    });\n    replacedChildren = Children3.map(children, (child) => {\n      if (!isChildReplaceable(child))\n        return child;\n      const tag = maybeReplaceAnchorWithSpan(child.type);\n      const { children: childChildren, ...childProps } = child.props;\n      const props = {\n        ...childProps,\n        // This attribute is used in `ssg/src/ssg-sandbox-renderer/worker/nestedLinks.ts` to handle the nested links clicks\n        \"data-nested-link\": true,\n        role: \"link\",\n        tabIndex: 0,\n        onClick,\n        onAuxClick,\n        onKeyDown,\n        as: childProps.as && maybeReplaceAnchorWithSpan(childProps.as)\n      };\n      const ref = \"ref\" in child ? child.ref : void 0;\n      return createElement(\n        tag,\n        // We need to pass the ref here again, otherwise it will be lost\n        { ...props, ref },\n        childChildren\n      );\n    });\n  }\n  return /* @__PURE__ */ jsx57(OuterLinkContext.Provider, { value: innerLink, children: replacedChildren });\n}\nfunction linkInfoIsCollectable(linkInfo) {\n  return !isUndefined(linkInfo == null ? void 0 : linkInfo.nodeId);\n}\nfunction isChildReplaceable(child) {\n  return isValidElement3(child) && (maybeReplaceAnchorWithSpan(child.type) !== child.type || maybeReplaceAnchorWithSpan(child.props.as) !== child.props.as);\n}\nfunction openExternalLink(href, rel, target) {\n  const link = document.createElement(\"a\");\n  link.href = href;\n  if (rel) {\n    link.rel = rel;\n  }\n  if (target) {\n    link.target = target;\n  }\n  document.body.appendChild(link);\n  link.click();\n  link.remove();\n}\nfunction maybeReplaceAnchorWithSpan(component) {\n  if (component === \"a\")\n    return \"span\";\n  if (isMotionComponent(component) && unwrapMotionComponent(component) === \"a\")\n    return motion.span;\n  return component;\n}\n\n// ../../library/src/modules/Link/useTrackLinkClick.ts\nimport { useCallback as useCallback11 } from \"react\";\nfunction useTrackLinkClick({\n  newTrackingEventsEnabled,\n  nodeId,\n  clickTrackingId,\n  router,\n  href,\n  activeLocale\n}) {\n  return useCallback11(\n    async (hrefAttribute) => {\n      var _a, _b, _c, _d, _e;\n      if (!newTrackingEventsEnabled || !((_a = router.pageviewEventData) == null ? void 0 : _a.current))\n        return;\n      const pageviewEventData = router.pageviewEventData.current;\n      const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n      if (!isLinkToWebPage(pageLink)) {\n        return sendTrackingEvent(\"published_site_click\", {\n          ...pageviewEventData,\n          href: hrefAttribute ? makeUrlAbsolute(hrefAttribute) : null,\n          nodeId: nodeId ?? null,\n          trackingId: clickTrackingId ?? null,\n          targetRoutePath: null,\n          targetWebPageId: null,\n          targetCollectionItemId: null\n        });\n      }\n      const targetWebPageId = pageLink.webPageId;\n      const targetRoute = (_b = router == null ? void 0 : router.getRoute) == null ? void 0 : _b.call(router, targetWebPageId);\n      const targetRoutePath = (targetRoute == null ? void 0 : targetRoute.path) ?? null;\n      let targetCollectionItemId = null;\n      if ((targetRoute == null ? void 0 : targetRoute.collectionId) && pageLink.pathVariables && ((_c = router.collectionUtils) == null ? void 0 : _c[targetRoute.collectionId])) {\n        const utils = await ((_e = (_d = router.collectionUtils)[targetRoute.collectionId]) == null ? void 0 : _e.call(_d));\n        const [slug] = Object.values(pageLink.pathVariables);\n        if (utils && typeof slug === \"string\") {\n          targetCollectionItemId = await utils.getRecordIdBySlug(slug, activeLocale || void 0) ?? null;\n        }\n      }\n      return sendTrackingEvent(\"published_site_click\", {\n        ...pageviewEventData,\n        href: hrefAttribute ? makeUrlAbsolute(hrefAttribute) : null,\n        nodeId: nodeId ?? null,\n        trackingId: clickTrackingId ?? null,\n        targetRoutePath,\n        targetWebPageId,\n        targetCollectionItemId\n      });\n    },\n    [newTrackingEventsEnabled, nodeId, clickTrackingId, router, href, activeLocale]\n  );\n}\nfunction makeUrlAbsolute(href) {\n  try {\n    const url = new URL(href, safeWindow.document.baseURI);\n    return url.origin === safeWindow.location.origin ? url.pathname + url.search + url.hash : url.href;\n  } catch {\n    return href;\n  }\n}\n\n// ../../library/src/modules/Link/index.tsx\nfunction performNavigation(router, routeId, elementId, combinedPathVariables, smoothScroll) {\n  var _a, _b;\n  const route = (_a = router.getRoute) == null ? void 0 : _a.call(router, routeId);\n  if (route && isLazyComponentType(route == null ? void 0 : route.page)) {\n    void route.page.preload();\n  }\n  (_b = router.navigate) == null ? void 0 : _b.call(router, routeId, elementId, combinedPathVariables, smoothScroll);\n}\nfunction createOnClickLinkHandler(router, routeId, href, trackLinkClick, elementId, combinedPathVariables, smoothScroll) {\n  return async (event) => {\n    void trackLinkClick(href);\n    if (event.metaKey)\n      return;\n    const anchorElement = findAnchorElement(event.target);\n    if (!anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */)\n      return;\n    event.preventDefault();\n    performNavigation(router, routeId, elementId, combinedPathVariables, smoothScroll);\n  };\n}\nfunction propsForRoutePath(href, openInNewTab, router, currentRoute, trackLinkClick, implicitPathVariables, smoothScroll) {\n  if (!currentRoute)\n    return propsForLink(href, openInNewTab, trackLinkClick);\n  const matchedRoute = findMatchingRouteAttributesForResolvedPath(router, href, implicitPathVariables);\n  if (!matchedRoute)\n    return propsForLink(href, openInNewTab, trackLinkClick);\n  const { routeId, route, elementId, pathVariables } = matchedRoute;\n  if (!route)\n    return propsForLink(href, openInNewTab, trackLinkClick);\n  const path = getPathForRoute(route, {\n    // If the link is resolved, we trust that the slugs are resolved.\n    currentRoutePath: currentRoute.path,\n    currentPathVariables: currentRoute.pathVariables,\n    // The hash value is already fully resolved so we don't need to\n    // provide any hashVariables.\n    hash: elementId,\n    pathVariables,\n    preserveQueryParams: router.preserveQueryParams,\n    siteCanonicalURL: router.siteCanonicalURL\n  });\n  const anchorTarget = getTargetAttrValue(openInNewTab, true);\n  return {\n    href: path,\n    target: anchorTarget,\n    onClick: createOnClickLinkHandler(\n      router,\n      routeId,\n      path,\n      trackLinkClick,\n      elementId,\n      pathVariables,\n      smoothScroll\n    ),\n    navigate: () => performNavigation(router, routeId, elementId, pathVariables, smoothScroll),\n    \"data-framer-page-link-current\": !elementId && currentRoute.id === routeId || void 0\n  };\n}\nvar Link = /* @__PURE__ */ withChildrenCanSuspend(\n  /* @__PURE__ */ forwardRef4(function Link2({\n    children,\n    href,\n    openInNewTab,\n    smoothScroll,\n    clickTrackingId,\n    nodeId,\n    scopeId,\n    motionChild,\n    ...restProps\n  }, forwardedRef) {\n    const router = useRouter();\n    const currentRoute = useCurrentRoute();\n    const implicitPathVariables = useImplicitPathVariables();\n    const { activeLocale } = useLocaleInfo();\n    const { newTrackingEvents } = useLibraryFeatures();\n    const trackLinkClick = useTrackLinkClick({\n      newTrackingEventsEnabled: newTrackingEvents,\n      nodeId,\n      clickTrackingId,\n      router,\n      href,\n      activeLocale\n    });\n    const propsAddedByLink = useMemo10(() => {\n      if (!href)\n        return {};\n      const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n      if (!pageLink)\n        return {};\n      if (isString(pageLink)) {\n        return propsForRoutePath(\n          pageLink,\n          openInNewTab,\n          router,\n          currentRoute,\n          trackLinkClick,\n          implicitPathVariables,\n          smoothScroll\n        );\n      }\n      const {\n        routeId,\n        href: resolvedHref,\n        elementId,\n        pathVariables\n      } = findMatchingRouteAttributesForWebPageLinkWithSuspense(\n        router,\n        currentRoute,\n        pageLink,\n        activeLocale,\n        implicitPathVariables\n      );\n      const anchorTarget = getTargetAttrValue(openInNewTab, true);\n      return {\n        href: resolvedHref,\n        target: anchorTarget,\n        onClick: createOnClickLinkHandler(\n          router,\n          routeId,\n          resolvedHref,\n          trackLinkClick,\n          elementId,\n          pathVariables,\n          smoothScroll\n        ),\n        navigate: () => performNavigation(router, routeId, elementId, pathVariables, smoothScroll),\n        \"data-framer-page-link-current\": currentRoute && linkMatchesRoute(currentRoute, pageLink, implicitPathVariables) || void 0\n      };\n    }, [\n      href,\n      router,\n      activeLocale,\n      implicitPathVariables,\n      openInNewTab,\n      currentRoute,\n      smoothScroll,\n      trackLinkClick\n    ]);\n    const hasRef = isValidElement4(children) && \"ref\" in children;\n    const observerRef = useObserverRef(hasRef ? children.ref : void 0);\n    useRefEffect(\n      observerRef,\n      (node) => {\n        var _a;\n        if (node === null)\n          return;\n        const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n        if (!pageLink)\n          return;\n        const route = getRouteFromPageLink(pageLink, router, currentRoute);\n        if (!route)\n          return;\n        return (_a = observeRouteForPreloading) == null ? void 0 : _a(route, node);\n      },\n      [currentRoute, href, router]\n    );\n    let replacedChildren = children;\n    const { navigate, ...propsAddedByLinkExceptNavigate } = propsAddedByLink;\n    const isInternalNavigation = Boolean(navigate);\n    const clone = useCloneChildrenWithPropsAndRef(forwardedRef);\n    replacedChildren = clone.cloneAsArray(\n      replacedChildren,\n      (childProps) => cloneChildPropsWithAggregatedEvents(\n        childProps,\n        {\n          ...restProps,\n          ...rebindEventHandlersIfNeeded(propsAddedByLinkExceptNavigate, motionChild, isInternalNavigation)\n        },\n        observerRef\n      )\n    );\n    replacedChildren = useReplaceNestedLinks(replacedChildren, scopeId, nodeId, href, propsAddedByLink, observerRef);\n    return replacedChildren;\n  })\n);\nfunction cloneChildPropsWithAggregatedEvents(childProps, linkProps, observerRef) {\n  const aggregatedProps = {\n    ...childProps,\n    ...linkProps,\n    ref: observerRef\n  };\n  const { onTap, onClick } = linkProps;\n  if (!onTap && !onClick) {\n    return aggregatedProps;\n  }\n  const { onClick: childOnClick, onTap: childOnTap } = childProps;\n  return {\n    ...aggregatedProps,\n    onClick: onClick || childOnClick ? (event) => {\n      if (isFunction(childOnClick)) {\n        childOnClick == null ? void 0 : childOnClick(event);\n      }\n      onClick == null ? void 0 : onClick(event);\n    } : void 0,\n    onTap: onTap || childOnTap ? (event, info) => {\n      if (isFunction(childOnTap)) {\n        childOnTap == null ? void 0 : childOnTap(event, info);\n      }\n      onTap == null ? void 0 : onTap(event, info);\n    } : void 0\n  };\n}\nfunction rebindEventHandlersIfNeeded(linkProps, motionChild, isInternalNavigation) {\n  const shouldReplaceClickWithTap = Boolean(motionChild && isIOS());\n  if (!shouldReplaceClickWithTap)\n    return linkProps;\n  const { onClick, ...restProps } = linkProps;\n  if (!onClick)\n    return linkProps;\n  if (isInternalNavigation) {\n    return {\n      ...restProps,\n      onTap: onClick,\n      // When the link is an internal link, we're already doing SPA routing in onClick\n      // prevent the default click behavior so that we don't trigger a native anchor link navigation again.\n      onClick: preventClickOnNativeAnchorLink\n    };\n  }\n  return { ...restProps, onTap: onClick };\n}\nfunction preventClickOnNativeAnchorLink(event) {\n  const anchorElement = findAnchorElement(event.target);\n  if (!anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */)\n    return;\n  event.preventDefault();\n}\n\n// ../../library/src/modules/Link/resolveLink.ts\nfunction resolveLink(href, router, implicitPathVariables) {\n  return resolveLinkInternal(href, router, implicitPathVariables);\n}\nfunction resolveLinkInternal(href, router, implicitPathVariables, onlyHash, resolveSlugs2) {\n  const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n  if (!isLinkToWebPage(pageLink))\n    return isString(href) ? propsForLink(href).href : void 0;\n  if (!router.getRoute || !router.currentRouteId)\n    return void 0;\n  const currentRoute = router.getRoute(router.currentRouteId);\n  const { webPageId, hash: hash2, pathVariables, hashVariables, unresolvedHashSlugs, unresolvedPathSlugs } = pageLink;\n  const route = router.getRoute(webPageId);\n  const resolvedSlugs = unresolvedPathSlugs || unresolvedHashSlugs ? resolveSlugs2 == null ? void 0 : resolveSlugs2(unresolvedPathSlugs, unresolvedHashSlugs) : void 0;\n  const combinedPathVariables = Object.assign(\n    {},\n    router.currentPathVariables,\n    implicitPathVariables,\n    pathVariables,\n    resolvedSlugs == null ? void 0 : resolvedSlugs.path\n  );\n  const combinedHashVariables = Object.assign(\n    {},\n    router.currentPathVariables,\n    implicitPathVariables,\n    hashVariables,\n    resolvedSlugs == null ? void 0 : resolvedSlugs.hash\n  );\n  return getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    currentPathVariables: router.currentPathVariables,\n    hash: hash2,\n    pathVariables: combinedPathVariables,\n    hashVariables: combinedHashVariables,\n    relative: false,\n    preserveQueryParams: router.preserveQueryParams,\n    onlyHash,\n    siteCanonicalURL: router.siteCanonicalURL\n  });\n}\n\n// ../../library/src/modules/Link/resolvePageScope.tsx\nfunction resolvePageScope(pageLink, router) {\n  if (!router.getRoute || !router.currentRouteId)\n    return void 0;\n  const currentRoute = router.getRoute(router.currentRouteId);\n  const { webPageId } = pageLink;\n  const route = router.getRoute(webPageId);\n  return getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    currentPathVariables: router.currentPathVariables,\n    relative: false,\n    preserveQueryParams: false,\n    siteCanonicalURL: void 0\n  });\n}\n\n// ../../library/src/modules/PageRoot.tsx\nimport React65, { startTransition as startTransition6, Suspense as Suspense4, useContext as useContext22, useEffect as useEffect18, useMemo as useMemo12, useState as useState6 } from \"react\";\n\n// ../../library/src/components/IgnoreErrors.tsx\nimport { Component as Component15 } from \"react\";\nvar IgnoreErrors = class extends Component15 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { error: void 0 });\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  render() {\n    if (this.state.error)\n      return null;\n    return this.props.children;\n  }\n};\n\n// ../../library/src/render/presentation/Forms/FormContainer.tsx\nimport React62, { startTransition as startTransition3, useContext as useContext19 } from \"react\";\n\n// ../../library/src/render/presentation/Forms/antibot.ts\nvar salt = \"framer\";\nvar difficulty = 3;\nvar tokenLength = 30;\nvar maxTime = 1e4;\nasync function calculateProofOfWork() {\n  const target = \"0\".repeat(difficulty);\n  const startTime = Date.now();\n  let processing = true;\n  while (processing) {\n    const timestamp = Date.now();\n    if (timestamp - startTime > maxTime) {\n      processing = false;\n      return;\n    }\n    const nonce = randomCharacters(tokenLength);\n    const secret = `${timestamp}:${nonce}`;\n    const hash2 = await sha256(salt + secret);\n    if (hash2.startsWith(target)) {\n      return { secret, hash: hash2 };\n    }\n  }\n  return;\n}\nasync function sha256(text) {\n  const buffer = new TextEncoder().encode(text);\n  const hashBuffer = await crypto.subtle.digest(\"SHA-256\", buffer);\n  return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\nfunction randomCharacters(count) {\n  const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n  let result = \"\";\n  const charactersLength = characters.length;\n  for (let i = 0; i < count; i++) {\n    result += characters.charAt(Math.floor(Math.random() * charactersLength));\n  }\n  return result;\n}\n\n// ../../library/src/render/presentation/Forms/formData.ts\nfunction getEncodedFormFieldsHeader(data2) {\n  return Array.from(data2.keys()).map(encodeURIComponent).join(\",\");\n}\nfunction addUTMTagsToFormData(data2, document2) {\n  try {\n    const matches = document2.cookie.match(\"(^|;) ?framerFormsUTMTags=([^;]*)(;|$)\");\n    if (matches !== null && matches[2]) {\n      const parsed = JSON.parse(decodeURIComponent(matches[2]));\n      if (!parsed || typeof parsed !== \"object\")\n        return;\n      [\"utm_source\", \"utm_medium\", \"utm_campaign\", \"utm_term\", \"utm_content\", \"gclid\"].forEach((key7) => {\n        if (typeof parsed[key7] === \"string\")\n          data2.append(key7, parsed[key7]);\n      });\n    }\n  } catch (e) {\n  }\n}\n\n// ../../library/src/render/presentation/Forms/trackFormSubmit.ts\nfunction trackFormSubmit({ newTrackingEventsEnabled, router, nodeId, submitTrackingId }) {\n  var _a;\n  if (!newTrackingEventsEnabled || !((_a = router == null ? void 0 : router.pageviewEventData) == null ? void 0 : _a.current))\n    return;\n  const pageviewEventData = router.pageviewEventData.current;\n  const eventData = {\n    ...pageviewEventData,\n    nodeId: nodeId ?? null,\n    trackingId: submitTrackingId ?? null\n  };\n  return sendTrackingEvent(\"published_site_form_submit\", eventData);\n}\n\n// ../../library/src/render/presentation/Forms/FormContainer.tsx\nimport { jsx as jsx58 } from \"react/jsx-runtime\";\nvar pendingState = { state: \"pending\" };\nvar successState = { state: \"success\" };\nvar incompleteState = { state: \"incomplete\" };\nvar completeState = { state: \"complete\" };\nvar errorState = { state: \"error\" };\nfunction formReducer({ state }, { type }) {\n  switch (type) {\n    case \"complete\":\n      if (state === \"error\")\n        return errorState;\n      return completeState;\n    case \"incomplete\":\n      if (state === \"error\")\n        return errorState;\n      return incompleteState;\n    case \"submit\":\n      return pendingState;\n    case \"success\":\n      return successState;\n    case \"error\":\n      return errorState;\n    default:\n      assertNever(type);\n  }\n}\nfunction stateCanSubmitForm({ state }) {\n  return state === \"incomplete\" || state === \"complete\";\n}\nfunction preventDefault(e) {\n  e.preventDefault();\n}\nfunction openExternalLinkInCurrentTab(link, formRef) {\n  const href = isValidURL(link, false) ? link : `https://${link}`;\n  const linkElement = document.createElement(\"a\");\n  linkElement.href = href;\n  linkElement.target = \"_self\";\n  linkElement.style.display = \"none\";\n  if (!(\"current\" in formRef && formRef.current))\n    return;\n  formRef.current.appendChild(linkElement);\n  linkElement.click();\n  linkElement.remove();\n}\nvar FormContext = React62.createContext(void 0);\nvar FormContainer = /* @__PURE__ */ React62.forwardRef(function FormContainer2({ action, children, redirectUrl, onSuccess, onError, onLoading, submitTrackingId, nodeId, ...props }, forwardedRef) {\n  const fallbackRef = React62.useRef(null);\n  const ref = forwardedRef ?? fallbackRef;\n  const router = useRouter();\n  const currentRoute = useCurrentRoute();\n  const implicitPathVariables = useImplicitPathVariables();\n  const [state, dispatch] = React62.useReducer(formReducer, incompleteState);\n  const { activeLocale } = useLocaleInfo();\n  const projectHash = useContext19(FormContext);\n  const callbacks = React62.useRef({ onSuccess, onError, onLoading });\n  callbacks.current = { onSuccess, onError, onLoading };\n  const { newTrackingEvents } = useLibraryFeatures();\n  async function redirectTo(link) {\n    var _a, _b;\n    if (isString(link)) {\n      const matchingRoute2 = findMatchingRouteAttributesForResolvedPath(router, link, implicitPathVariables);\n      if (!matchingRoute2) {\n        openExternalLinkInCurrentTab(link, ref);\n        return;\n      }\n      const { routeId: routeId2, elementId: elementId2, pathVariables: pathVariables2 } = matchingRoute2;\n      (_a = router.navigate) == null ? void 0 : _a.call(router, routeId2, elementId2, pathVariables2);\n      return;\n    }\n    assert(isLinkToWebPage(link), \"Expected link to be either a LinkToWebPage or a string\", link);\n    const matchingRoute = await findMatchingRouteAttributesForWebPageLink(\n      router,\n      currentRoute,\n      link,\n      activeLocale,\n      implicitPathVariables\n    );\n    const { routeId, elementId, pathVariables } = matchingRoute;\n    (_b = router.navigate) == null ? void 0 : _b.call(router, routeId, elementId, pathVariables);\n  }\n  const handleSubmit = async (event) => {\n    var _a, _b, _c, _d, _e, _f;\n    event.preventDefault();\n    if (!action || !projectHash)\n      return;\n    dispatch({ type: \"submit\" });\n    const data2 = new FormData(event.currentTarget);\n    await interactionResponse({ priority: \"user-blocking\" });\n    addUTMTagsToFormData(data2, safeWindow.document);\n    for (const [key7, value] of data2) {\n      if (value instanceof File)\n        data2.delete(key7);\n    }\n    try {\n      (_b = (_a = callbacks.current).onLoading) == null ? void 0 : _b.call(_a);\n      trackFormSubmit({\n        newTrackingEventsEnabled: newTrackingEvents,\n        router,\n        nodeId,\n        submitTrackingId,\n        activeLocale\n      });\n      await submitForm(action, data2, projectHash);\n      startTransition3(() => dispatch({ type: \"success\" }));\n      (_d = (_c = callbacks.current).onSuccess) == null ? void 0 : _d.call(_c);\n      if (redirectUrl) {\n        await redirectTo(redirectUrl);\n      }\n    } catch (error) {\n      startTransition3(() => dispatch({ type: \"error\" }));\n      (_f = (_e = callbacks.current).onError) == null ? void 0 : _f.call(_e);\n      console.error(error);\n    }\n  };\n  const handleKeyDown = (event) => {\n    const { target: input, currentTarget: form, key: key7 } = event;\n    const isTextArea = input instanceof HTMLTextAreaElement;\n    if (isTextArea)\n      return;\n    if (key7 === \"Enter\" && form.checkValidity()) {\n      event.preventDefault();\n      void handleSubmit(event);\n    }\n  };\n  const checkValidity = async (e) => {\n    const target = e.currentTarget;\n    await interactionResponse({ priority: \"background\" });\n    startTransition3(() => dispatch({ type: anyEmptyRequiredFields(target) ? \"incomplete\" : \"complete\" }));\n  };\n  return /* @__PURE__ */ jsx58(\n    motion.form,\n    {\n      ...props,\n      onSubmit: stateCanSubmitForm(state) ? handleSubmit : preventDefault,\n      onKeyDown: handleKeyDown,\n      onChange: checkValidity,\n      ref,\n      children: children(state)\n    }\n  );\n});\nfunction anyEmptyRequiredFields(element) {\n  if (element.children.length === 0)\n    return false;\n  for (const child of element.children) {\n    if (child instanceof HTMLInputElement || child instanceof HTMLTextAreaElement || child instanceof HTMLSelectElement) {\n      if (child.required && child.value === \"\")\n        return true;\n    } else {\n      const result = anyEmptyRequiredFields(child);\n      if (result)\n        return true;\n    }\n  }\n  return false;\n}\nasync function submitForm(action, data2, projectHash) {\n  const proofOfWork = await calculateProofOfWork();\n  if (!proofOfWork) {\n    throw new Error(\"Failed to calculate proof of work\");\n  }\n  const response = await fetch(action, {\n    body: data2,\n    method: \"POST\",\n    headers: {\n      \"Framer-Site-Id\": projectHash,\n      \"Framer-POW\": proofOfWork.secret,\n      \"Framer-Form-Fields\": getEncodedFormFieldsHeader(data2)\n    }\n  });\n  if (response.ok) {\n    return response;\n  } else {\n    const body = await response.json();\n    const error = \"Failed to submit form\";\n    if (responseHasError(body)) {\n      throw new Error(`${error} - ${body.error.message}`);\n    }\n    throw new Error(error);\n  }\n}\nfunction responseHasError(response) {\n  return typeof response === \"object\" && response !== null && \"error\" in response && isObject(response.error) && \"message\" in response.error && typeof response.error.message === \"string\";\n}\n\n// ../../library/src/router/Router.tsx\nimport { Fragment as Fragment9, startTransition as startTransition4, useCallback as useCallback12, useContext as useContext20, useEffect as useEffect16, useLayoutEffect as useLayoutEffect7, useMemo as useMemo11, useRef as useRef18 } from \"react\";\n\n// ../../library/src/router/getPageviewEventData.ts\nfunction getPageviewEventData({\n  framerSiteId,\n  routeId,\n  routePath,\n  collectionItemId,\n  localeCode\n}) {\n  return {\n    framerSiteId,\n    routePath: routePath || \"/\",\n    collectionItemId,\n    framerLocale: localeCode,\n    webPageId: routeId\n  };\n}\n\n// ../../library/src/router/isSamePage.ts\nfunction isSamePage(a, b) {\n  if (a.routeId !== b.routeId)\n    return false;\n  if (a.pathVariables === b.pathVariables)\n    return true;\n  const aPathVariables = a.pathVariables || {};\n  const bPathVariables = b.pathVariables || {};\n  return aPathVariables.length === bPathVariables.length && Object.keys(aPathVariables).every((key7) => aPathVariables[key7] === bPathVariables[key7]);\n}\n\n// ../../library/src/router/types.ts\nvar defaultLocaleId = \"default\";\n\n// ../../library/src/router/useForceUpdate.ts\nimport React63 from \"react\";\nfunction useForceUpdate3() {\n  const [_, setForcedRenderCount] = React63.useState(0);\n  return [_, React63.useCallback(() => setForcedRenderCount((v) => v + 1), [])];\n}\n\n// ../../library/src/router/Router.tsx\nimport { jsx as jsx59, jsxs as jsxs15 } from \"react/jsx-runtime\";\nfunction updateScrollPosition(hash2, smoothScroll, isHistoryTransition) {\n  const element = hash2 && document.getElementById(hash2);\n  if (element) {\n    scrollElementIntoView(element, smoothScroll);\n    return;\n  }\n  if (isHistoryTransition)\n    return;\n  window.scrollTo(0, 0);\n}\nfunction useScheduleRenderSideEffects(dep) {\n  const actions = useRef18([]);\n  useLayoutEffect7(() => {\n    var _a;\n    if (!((_a = actions.current) == null ? void 0 : _a.length))\n      return;\n    actions.current.forEach((action) => action());\n    actions.current = [];\n  }, [dep]);\n  return useCallback12((cb) => {\n    actions.current.push(cb);\n  }, []);\n}\nfunction useNavigationTransition(enableAsyncURLUpdates) {\n  const startNativeSpinner = useNativeLoadingSpinner();\n  const monitorNextPaintAfterRender = useMonitorNextPaintAfterRender(\"framer-route-change\");\n  const navigationController = useRef18(void 0);\n  return useCallback12(\n    async (transitionFn, updateURL, isAbortable = true) => {\n      var _a;\n      setHydrationDone();\n      const hasUpdateURL = updateURL !== void 0;\n      if (!enableAsyncURLUpdates) {\n        if (hasUpdateURL)\n          await updateURL();\n        transitionFn();\n        void monitorNextPaintAfterRender();\n        return new Promise((resolve) => {\n          resolve();\n        });\n      }\n      (_a = navigationController.current) == null ? void 0 : _a.abort();\n      const controller = isAbortable ? new AbortController() : void 0;\n      navigationController.current = controller;\n      const signal = controller == null ? void 0 : controller.signal;\n      const nextRender = monitorNextPaintAfterRender();\n      if (!hasUpdateURL) {\n        navigationController.current = void 0;\n        transitionFn(signal);\n        return nextRender;\n      }\n      let resolveNavigationPromise;\n      const navigationPromise = new Promise((resolve, reject) => {\n        resolveNavigationPromise = resolve;\n        if (signal == null ? void 0 : signal.aborted)\n          reject();\n        else\n          signal == null ? void 0 : signal.addEventListener(\"abort\", reject);\n      });\n      await interactionResponse({ priority: \"user-blocking\", signal }).catch(noop);\n      transitionFn(signal);\n      startNativeSpinner(navigationPromise, updateURL, controller);\n      return nextRender.then(() => {\n        resolveNavigationPromise();\n      });\n    },\n    [enableAsyncURLUpdates, monitorNextPaintAfterRender, startNativeSpinner]\n  );\n}\nfunction Router({\n  defaultPageStyle,\n  disableHistory,\n  initialPathVariables,\n  initialRoute,\n  notFoundPage,\n  collectionUtils,\n  routes,\n  initialLocaleId,\n  locales = EMPTY_ARRAY,\n  preserveQueryParams = false,\n  enableAsyncURLUpdates = false,\n  LayoutTemplate,\n  editorBar,\n  siteCanonicalURL\n}) {\n  useMarkRouterEffects();\n  useReplaceInitialState({\n    disabled: disableHistory,\n    routeId: initialRoute,\n    initialPathVariables,\n    initialLocaleId\n  });\n  const startViewTransition2 = useViewTransition();\n  const [dep, forceUpdate] = useForceUpdate3();\n  const scheduleSideEffect = useScheduleRenderSideEffects(dep);\n  const startNavigation = useNavigationTransition(enableAsyncURLUpdates);\n  const skipFirstPageView = useRef18(true);\n  const currentRouteRef = useRef18(initialRoute);\n  const currentPathVariablesRef = useRef18(initialPathVariables);\n  const currentLocaleIdRef = useRef18(initialLocaleId);\n  const currentLocaleId = currentLocaleIdRef.current;\n  const activeLocale = useMemo11(() => {\n    return locales.find(({ id }) => {\n      if (!currentLocaleId)\n        return id === defaultLocaleId;\n      return id === currentLocaleId;\n    }) ?? null;\n  }, [currentLocaleId, locales]);\n  const localeInfo = useMemo11(() => {\n    return {\n      activeLocale,\n      locales,\n      setLocale: async (localeOrLocaleId) => {\n        let localeId;\n        if (isString(localeOrLocaleId)) {\n          localeId = localeOrLocaleId;\n        } else if (isObject(localeOrLocaleId)) {\n          localeId = localeOrLocaleId.id;\n        }\n        const defaultLocale = locales.find(({ id }) => id === defaultLocaleId);\n        const nextLocale = locales.find(({ id }) => id === localeId);\n        if (!nextLocale)\n          return;\n        const currentRouteId2 = currentRouteRef.current;\n        const currentRoute2 = routes[currentRouteId2];\n        if (!currentRoute2)\n          return;\n        try {\n          const localeResult = await switchLocale({\n            currentLocale: activeLocale,\n            nextLocale,\n            route: currentRoute2,\n            routeId: currentRouteId2,\n            defaultLocale,\n            pathVariables: currentPathVariablesRef.current,\n            collectionUtils,\n            preserveQueryParams\n          });\n          if (!localeResult)\n            return;\n          const currentPathVariables2 = currentPathVariablesRef.current;\n          const currentStatePaginationInfo = isHistoryState(window.history.state) ? window.history.state.paginationInfo : void 0;\n          const currentPath = localeResult.path;\n          currentPathVariablesRef.current = localeResult.pathVariables;\n          currentLocaleIdRef.current = nextLocale.id;\n          const updateURL = async (ignorePushStateWrapper = false) => {\n            if (!currentPath)\n              return;\n            return pushHistoryState(\n              {\n                routeId: currentRouteId2,\n                pathVariables: currentPathVariables2,\n                localeId: nextLocale.id,\n                paginationInfo: currentStatePaginationInfo\n              },\n              currentPath,\n              // we yield in startNavigation before updating the URL, so yielding again is not needed.\n              false,\n              ignorePushStateWrapper\n            );\n          };\n          void startNavigation(\n            () => {\n              void startViewTransition2(\n                currentRouteId2,\n                currentRouteId2,\n                () => startTransition4(forceUpdate),\n                enableAsyncURLUpdates\n                // no signal here, because we update the refs above immediately\n              );\n            },\n            updateURL,\n            false\n          );\n        } catch {\n        }\n      }\n    };\n  }, [\n    activeLocale,\n    collectionUtils,\n    enableAsyncURLUpdates,\n    forceUpdate,\n    locales,\n    preserveQueryParams,\n    routes,\n    startNavigation,\n    startViewTransition2\n  ]);\n  const setCurrentRouteId = useCallback12(\n    (routeId, localeId, hash2, pathVariables, isHistoryTransition, smoothScroll = false, updateURL) => {\n      const currentRouteId2 = currentRouteRef.current;\n      currentRouteRef.current = routeId;\n      currentPathVariablesRef.current = pathVariables;\n      currentLocaleIdRef.current = localeId;\n      scheduleSideEffect(() => {\n        updateScrollPosition(hash2, smoothScroll, isHistoryTransition);\n      });\n      if (isHistoryTransition) {\n        startTransition4(forceUpdate);\n        return;\n      }\n      void startNavigation((signal) => {\n        void startViewTransition2(\n          currentRouteId2,\n          routeId,\n          () => startTransition4(forceUpdate),\n          enableAsyncURLUpdates,\n          signal\n        );\n      }, updateURL);\n    },\n    [enableAsyncURLUpdates, forceUpdate, scheduleSideEffect, startNavigation, startViewTransition2]\n  );\n  usePopStateHandler(currentRouteRef, setCurrentRouteId);\n  const navigate = useCallback12(\n    async (routeId, hash2, pathVariables, smoothScroll) => {\n      var _a;\n      const newRoute = routes[routeId];\n      if (pathVariables) {\n        const inUse = /* @__PURE__ */ new Set();\n        const path = (newRoute == null ? void 0 : newRoute.path) ?? \"/\";\n        for (const match of path.matchAll(pathVariablesRegExp)) {\n          const usedVariable = match[1];\n          if (usedVariable === void 0) {\n            throw new Error(\"A matching path variable should not be undefined\");\n          }\n          inUse.add(usedVariable);\n        }\n        pathVariables = Object.fromEntries(Object.entries(pathVariables).filter(([key7]) => inUse.has(key7)));\n      }\n      const routeElementId = getRouteElementId(newRoute, hash2);\n      const currentPathVariables2 = currentPathVariablesRef.current;\n      const currentRouteLocaleId = currentLocaleIdRef.current;\n      if (isSamePage(\n        { routeId: currentRouteRef.current, pathVariables: currentPathVariables2 },\n        { routeId, pathVariables }\n      )) {\n        const route = routes[routeId];\n        if (((_a = window.history.state) == null ? void 0 : _a.hash) !== hash2 && !disableHistory && route) {\n          await pushRouteState(\n            routeId,\n            route,\n            {\n              currentRoutePath: route.path,\n              currentPathVariables: currentPathVariables2,\n              pathVariables,\n              hash: hash2,\n              localeId: currentRouteLocaleId,\n              preserveQueryParams,\n              siteCanonicalURL\n            },\n            // we want to yield as this is called synchronusly from an user interaction.\n            enableAsyncURLUpdates\n          );\n        }\n        updateScrollPosition(routeElementId, smoothScroll, false);\n        return;\n      }\n      if (!newRoute)\n        return;\n      const currentRoute2 = routes[currentRouteRef.current];\n      const updateURL = async (ignorePushStateWrapper = false) => pushRouteState(\n        routeId,\n        newRoute,\n        {\n          currentRoutePath: currentRoute2 == null ? void 0 : currentRoute2.path,\n          currentPathVariables: currentPathVariables2,\n          hash: hash2,\n          pathVariables,\n          localeId: currentRouteLocaleId,\n          preserveQueryParams,\n          siteCanonicalURL\n        },\n        // we yield in startNavigation before updating the URL, so yielding again is not needed.\n        false,\n        ignorePushStateWrapper\n      );\n      setCurrentRouteId(\n        routeId,\n        currentRouteLocaleId,\n        routeElementId,\n        pathVariables,\n        false,\n        smoothScroll,\n        disableHistory ? void 0 : updateURL\n      );\n    },\n    [routes, setCurrentRouteId, disableHistory, preserveQueryParams, enableAsyncURLUpdates, siteCanonicalURL]\n  );\n  const getRoute = useGetRouteCallback(routes);\n  const currentRouteId = currentRouteRef.current;\n  const currentPathVariables = currentPathVariablesRef.current;\n  const currentRoute = routes[currentRouteId];\n  const currentRoutePath = currentRoute == null ? void 0 : currentRoute.path;\n  const framerSiteId = useContext20(FormContext);\n  const pageviewEventData = useRef18();\n  const { newTrackingEvents } = useLibraryFeatures();\n  useEffect16(() => {\n    if (!newTrackingEvents)\n      return;\n    void (async () => {\n      var _a;\n      let collectionItemId = null;\n      if ((currentRoute == null ? void 0 : currentRoute.collectionId) && collectionUtils && currentPathVariables) {\n        const utils = await ((_a = collectionUtils[currentRoute.collectionId]) == null ? void 0 : _a.call(collectionUtils));\n        const [slug] = Object.values(currentPathVariables);\n        if (utils && typeof slug === \"string\") {\n          collectionItemId = await utils.getRecordIdBySlug(slug, activeLocale || void 0) ?? null;\n        }\n      }\n      pageviewEventData.current = getPageviewEventData({\n        framerSiteId: framerSiteId ?? null,\n        routeId: currentRouteId,\n        routePath: currentRoute == null ? void 0 : currentRoute.path,\n        collectionItemId,\n        localeCode: (activeLocale == null ? void 0 : activeLocale.code) || null\n      });\n      if (skipFirstPageView.current) {\n        skipFirstPageView.current = false;\n        return;\n      }\n      sendTrackingEvent(\"published_site_pageview\", pageviewEventData.current);\n    })();\n  }, [\n    newTrackingEvents,\n    framerSiteId,\n    currentRouteId,\n    currentRoute,\n    activeLocale,\n    currentPathVariables,\n    collectionUtils\n  ]);\n  const api = useMemo11(\n    () => ({\n      navigate,\n      getRoute,\n      currentRouteId,\n      currentPathVariables,\n      routes,\n      collectionUtils,\n      preserveQueryParams,\n      pageviewEventData,\n      siteCanonicalURL\n    }),\n    [\n      navigate,\n      getRoute,\n      currentRouteId,\n      currentPathVariables,\n      routes,\n      collectionUtils,\n      preserveQueryParams,\n      siteCanonicalURL\n    ]\n  );\n  if (!currentRoute) {\n    throw new Error(`Router cannot find route for ${currentRouteId}`);\n  }\n  const pageExistsInCurrentLocale = !activeLocale || !currentRoute.includedLocales || currentRoute.includedLocales.includes(activeLocale.id);\n  const pathWithFilledVariables = currentRoutePath && currentPathVariables ? fillPathVariables(currentRoutePath, currentPathVariables) : currentRoutePath;\n  const remountKey = String(currentLocaleId) + pathWithFilledVariables;\n  const templatePageStyle = useConstant(() => ({ ...defaultPageStyle, display: \"contents\" }));\n  return /* @__PURE__ */ jsx59(RouterAPIProvider, { api, children: /* @__PURE__ */ jsx59(LocaleInfoContext.Provider, { value: localeInfo, children: /* @__PURE__ */ jsxs15(SuspenseThatPreservesDom, { children: [\n    /* @__PURE__ */ jsxs15(\n      NotFoundErrorBoundary,\n      {\n        notFoundPage,\n        defaultPageStyle,\n        forceUpdateKey: dep,\n        children: [\n          /* @__PURE__ */ jsx59(MarkSuspenseEffects.Start, {}),\n          /* @__PURE__ */ jsx59(\n            WithLayoutTemplate,\n            {\n              LayoutTemplate,\n              routeId: currentRouteId,\n              style: defaultPageStyle,\n              children: (inLayoutTemplate) => {\n                return /* @__PURE__ */ jsx59(Fragment9, { children: pageExistsInCurrentLocale ? renderPage(\n                  currentRoute.page,\n                  inLayoutTemplate ? templatePageStyle : defaultPageStyle\n                ) : (\n                  // LAYOUT_TEMPLATE @TODO: display: content for not found page?\n                  notFoundPage && renderPage(notFoundPage, defaultPageStyle)\n                ) }, remountKey);\n              }\n            }\n          )\n        ]\n      }\n    ),\n    editorBar,\n    /* @__PURE__ */ jsx59(TurnOnReactEventHandling, {}),\n    /* @__PURE__ */ jsx59(MarkSuspenseEffects.End, {})\n  ] }) }) });\n}\nfunction WithLayoutTemplate({ LayoutTemplate, routeId, style, children }) {\n  if (!LayoutTemplate)\n    return children(false);\n  return /* @__PURE__ */ jsx59(LayoutTemplate, { routeId, style, children });\n}\nfunction scrollElementIntoView(element, smoothScroll) {\n  const scrollIntoViewOptions = smoothScroll ? { behavior: \"smooth\", block: \"start\", inline: \"nearest\" } : void 0;\n  element.scrollIntoView(scrollIntoViewOptions);\n}\n\n// ../../library/src/modules/FetchClient.tsx\nimport * as React64 from \"react\";\n\n// ../../library/src/render/utils/preloadImage.ts\nfunction preloadImage(url) {\n  return new Promise((resolve, reject) => {\n    try {\n      new URL(url);\n      const image = new Image();\n      image.onload = () => resolve();\n      image.onerror = reject;\n      image.src = url;\n    } catch (error) {\n      reject(error);\n    }\n  });\n}\n\n// ../../library/src/utils/getPropertyByPath.ts\nfunction isObjectOrArray(value) {\n  return typeof value === \"object\" && value !== null;\n}\nfunction getPropertyByPath(input, keyPath) {\n  if (keyPath === \"\") {\n    return input;\n  }\n  const keyParts = keyPath.split(/[.[\\]]+/u).filter((part) => part.length > 0);\n  let current = input;\n  for (const part of keyParts) {\n    if (!isObjectOrArray(current)) {\n      return void 0;\n    }\n    current = current[part];\n  }\n  return current;\n}\n\n// ../../library/src/modules/FetchClient.tsx\nimport { jsx as jsx60 } from \"react/jsx-runtime\";\nfunction getRequestCacheKey(value) {\n  return `${value.credentials}:${value.url}`;\n}\nvar loadingFetchResult = {\n  status: \"loading\",\n  data: void 0\n};\nfunction isNumberString(value) {\n  return isString(value) && !Number.isNaN(Number(value));\n}\nfunction isValidFetchDataValueResult(type, value) {\n  switch (type) {\n    case \"string\" /* String */:\n      return isString(value) || isNumber(value);\n    case \"color\" /* Color */:\n      return isString(value);\n    case \"boolean\" /* Boolean */:\n      return isBoolean(value);\n    case \"number\" /* Number */:\n      return isNumber(value) || isNumberString(value);\n    case \"link\" /* Link */:\n    case \"image\" /* Image */:\n      return isString(value) && isValidURL(value, false);\n    default: {\n      const _ = type;\n      return false;\n    }\n  }\n}\nfunction resolveFetchDataValue(result, request) {\n  if (result.status === \"loading\") {\n    return request.fallbackValue;\n  }\n  if (result.status === \"error\") {\n    throw result.error;\n  }\n  const resolvedValue = getPropertyByPath(result.data, request.resultKeyPath);\n  if (isUndefined(resolvedValue)) {\n    throw new Error(`Key '${request.resultKeyPath}' not found in response`);\n  }\n  if (!isValidFetchDataValueResult(request.resultOutputType, resolvedValue)) {\n    throw new Error(`Resolved value '${resolvedValue}' is not valid for type '${request.resultOutputType}'`);\n  }\n  return resolvedValue;\n}\nfunction isCacheExpired(insertionTimestamp, cacheDuration) {\n  if (RenderTarget.current() === RenderTarget.canvas) {\n    return false;\n  }\n  const cacheDurationMs = cacheDuration === 0 ? (\n    // When the cache is set to 0 seconds we set use a 500ms cache delay\n    // to avoid triggering refetching when a variant switches from\n    // preloading to rendering the component (and\n    // resubscribing to the fetch client). When another component\n    // relying on the same endpoint (eg another page) is mounted again\n    // and the cache time is set to 0, the the data will be fetched\n    // again.\n    500\n  ) : cacheDuration * 1e3;\n  const currentTimestamp = Date.now();\n  const expirationTimestamp = insertionTimestamp + cacheDurationMs;\n  return currentTimestamp >= expirationTimestamp;\n}\nvar noop3 = () => {\n};\nvar _subscribers, _preloadedRequests, _shortestCacheDurations, _cachedAt, _ongoingFetches, _staleQueriesInterval;\nvar _FetchClient = class {\n  constructor() {\n    // A map of FetchResult values for each URL\n    __publicField(this, \"responseValues\", /* @__PURE__ */ new Map());\n    // A map of URLs to their subscribers\n    __privateAdd(this, _subscribers, /* @__PURE__ */ new Map());\n    // A set of requests that have been preloaded by a loading variant\n    __privateAdd(this, _preloadedRequests, /* @__PURE__ */ new Set());\n    // Map for how long to cache the response for (in seconds)\n    __privateAdd(this, _shortestCacheDurations, /* @__PURE__ */ new Map());\n    // Map containing a timestamp when a URL was inserted into the cache\n    __privateAdd(this, _cachedAt, /* @__PURE__ */ new Map());\n    // Map of promises for requests that are currently in flight\n    __privateAdd(this, _ongoingFetches, /* @__PURE__ */ new Map());\n    // An ID for an interval that checks for stale queries and refetches\n    __privateAdd(this, _staleQueriesInterval, /* @__PURE__ */ new Map());\n    __publicField(this, \"persistCache\", debounce(() => {\n      const data2 = {};\n      for (const [url, responseValue] of this.responseValues) {\n        if (!responseValue)\n          continue;\n        if (responseValue.status !== \"success\")\n          continue;\n        const cacheConfig = __privateGet(this, _shortestCacheDurations).get(url);\n        if (!cacheConfig || cacheConfig === 0)\n          continue;\n        const storedAt = __privateGet(this, _cachedAt).get(url);\n        if (!storedAt)\n          continue;\n        if (storedAt && isCacheExpired(storedAt, cacheConfig)) {\n          continue;\n        }\n        data2[url] = [storedAt, cacheConfig, responseValue.data];\n      }\n      try {\n        localStorage.setItem(_FetchClient.cacheKey, JSON.stringify(data2));\n      } catch {\n      }\n    }, 500));\n  }\n  unmount() {\n    for (const [key7, interval] of __privateGet(this, _staleQueriesInterval)) {\n      clearInterval(interval);\n      __privateGet(this, _staleQueriesInterval).delete(key7);\n    }\n  }\n  stopQueryRefetching(request) {\n    const cacheKey = getRequestCacheKey(request);\n    const interval = __privateGet(this, _staleQueriesInterval).get(cacheKey);\n    if (interval) {\n      clearInterval(interval);\n      __privateGet(this, _staleQueriesInterval).delete(cacheKey);\n    }\n  }\n  /**\n   * Start an interval for the given request to refresh the value\n   * depending on the shortest configured cache duration for that request.\n   */\n  startQueryRefetching(request) {\n    const cacheKey = getRequestCacheKey(request);\n    const currentIntervalForRequest = __privateGet(this, _staleQueriesInterval).get(cacheKey);\n    const shortestCacheDuration = __privateGet(this, _shortestCacheDurations).get(cacheKey);\n    if (currentIntervalForRequest)\n      return;\n    if (!shortestCacheDuration)\n      return;\n    const interval = safeWindow.setInterval(() => {\n      if (document.visibilityState === \"hidden\")\n        return;\n      const cachedAt = __privateGet(this, _cachedAt).get(cacheKey);\n      if (!shortestCacheDuration || !cachedAt)\n        return;\n      void this.fetchWithCache({\n        ...request,\n        cacheDuration: shortestCacheDuration\n      });\n    }, shortestCacheDuration);\n    __privateGet(this, _staleQueriesInterval).set(cacheKey, interval);\n  }\n  hydrateCache() {\n    try {\n      const rawData = localStorage.getItem(_FetchClient.cacheKey);\n      if (!rawData)\n        return;\n      const data2 = JSON.parse(rawData);\n      if (typeof data2 !== \"object\")\n        throw new Error(\"Invalid cache data\");\n      for (const cacheKey in data2) {\n        const cached = data2[cacheKey];\n        if (!Array.isArray(cached) || cached.length !== 3)\n          throw new Error(\"Invalid cache data\");\n        const [storedAt, cacheDuration, cachedData] = cached;\n        if (isCacheExpired(storedAt, cacheDuration))\n          continue;\n        __privateGet(this, _cachedAt).set(cacheKey, storedAt);\n        __privateGet(this, _shortestCacheDurations).set(cacheKey, cacheDuration);\n        this.responseValues.set(cacheKey, { status: \"success\", data: cachedData });\n      }\n    } catch (error) {\n      try {\n        localStorage.removeItem(_FetchClient.cacheKey);\n      } catch {\n      }\n    }\n  }\n  setResponseValue(cacheKey, value) {\n    this.responseValues.set(cacheKey, value);\n    this.persistCache();\n    const subscribers = __privateGet(this, _subscribers).get(cacheKey);\n    if (!subscribers)\n      return;\n    for (const subscriber of subscribers) {\n      subscriber();\n    }\n  }\n  async prefetch(request) {\n    if (!isBrowser2())\n      return;\n    if (!isValidURL(request.url, false))\n      return;\n    const cacheKey = getRequestCacheKey(request);\n    __privateGet(this, _preloadedRequests).add(cacheKey);\n    await this.fetchWithCache(request);\n    const result = this.getValue(cacheKey);\n    if (!result || result.status === \"loading\") {\n      throw new Error(\"Unexpected result status for prefetch\");\n    }\n    const subscribers = __privateGet(this, _subscribers).get(cacheKey);\n    for (const subscriber of subscribers ?? []) {\n      subscriber();\n    }\n    const resolvedValue = resolveFetchDataValue(result, request);\n    if (request.resultOutputType === \"image\" /* Image */ && isString(resolvedValue)) {\n      await preloadImage(resolvedValue).catch(noop3);\n    }\n    return resolvedValue;\n  }\n  async fetchWithCache(request) {\n    if (!isBrowser2())\n      return;\n    const cacheKey = getRequestCacheKey(request);\n    const ongoingFetch = __privateGet(this, _ongoingFetches).get(cacheKey);\n    if (ongoingFetch)\n      return ongoingFetch;\n    const cachedAt = __privateGet(this, _cachedAt).get(cacheKey);\n    const hasExpiredCache = cachedAt && isCacheExpired(cachedAt, request.cacheDuration);\n    if (this.responseValues.has(cacheKey) && !hasExpiredCache) {\n      return;\n    }\n    const currentValue = this.responseValues.get(cacheKey);\n    if (!currentValue) {\n      this.setResponseValue(cacheKey, loadingFetchResult);\n    }\n    const doFetch = async () => {\n      try {\n        const response = await fetch(request.url, {\n          method: \"GET\",\n          credentials: request.credentials\n        });\n        if (!response.ok) {\n          this.setResponseValue(cacheKey, {\n            status: \"error\",\n            error: new Error(\"Invalid Response Status\"),\n            data: void 0\n          });\n          return;\n        }\n        const value = await response.json();\n        this.setResponseValue(cacheKey, { status: \"success\", data: value });\n        __privateGet(this, _cachedAt).set(cacheKey, Date.now());\n      } catch (error) {\n        this.setResponseValue(cacheKey, { status: \"error\", error, data: void 0 });\n      }\n    };\n    const promise = doFetch();\n    __privateGet(this, _ongoingFetches).set(cacheKey, promise);\n    void promise.finally(() => {\n      __privateGet(this, _ongoingFetches).delete(cacheKey);\n    });\n    return promise;\n  }\n  getValue(cacheKey, onlyIfPrefetched = false) {\n    if (onlyIfPrefetched && !__privateGet(this, _preloadedRequests).has(cacheKey))\n      return void 0;\n    return this.responseValues.get(cacheKey);\n  }\n  subscribe(request, callback, skipFetchRequest = false) {\n    const { url, cacheDuration } = request;\n    if (!isValidURL(url, false))\n      return noop3;\n    const cacheKey = getRequestCacheKey(request);\n    const cacheDurationForUrl = __privateGet(this, _shortestCacheDurations).get(cacheKey);\n    if (!cacheDurationForUrl || cacheDuration < cacheDurationForUrl) {\n      __privateGet(this, _shortestCacheDurations).set(cacheKey, cacheDuration);\n    }\n    if (!skipFetchRequest) {\n      this.startQueryRefetching(request);\n      void this.fetchWithCache(request);\n    }\n    const subscribers = __privateGet(this, _subscribers).get(cacheKey) ?? /* @__PURE__ */ new Set();\n    subscribers.add(callback);\n    __privateGet(this, _subscribers).set(cacheKey, subscribers);\n    return () => {\n      const nextSubscribers = __privateGet(this, _subscribers).get(cacheKey);\n      if (!nextSubscribers)\n        return;\n      nextSubscribers.delete(callback);\n      if (nextSubscribers.size === 0) {\n        __privateGet(this, _subscribers).delete(cacheKey);\n      }\n      if (__privateGet(this, _subscribers).size === 0) {\n        this.stopQueryRefetching(request);\n      }\n    };\n  }\n};\nvar FetchClient = _FetchClient;\n_subscribers = new WeakMap();\n_preloadedRequests = new WeakMap();\n_shortestCacheDurations = new WeakMap();\n_cachedAt = new WeakMap();\n_ongoingFetches = new WeakMap();\n_staleQueriesInterval = new WeakMap();\n__publicField(FetchClient, \"cacheKey\", \"framer-fetch-client-cache\");\nvar FetchClientContext = /* @__PURE__ */ React64.createContext(void 0);\nvar IsRestoringCacheContext = /* @__PURE__ */ React64.createContext(true);\nvar FetchClientProvider = ({\n  children,\n  client: initialClient\n}) => {\n  const [client] = React64.useState(() => initialClient ?? new FetchClient());\n  const [isRestoring, setIsRestoring] = React64.useState(true);\n  React64.useEffect(() => {\n    client.hydrateCache();\n    React64.startTransition(() => {\n      setIsRestoring(false);\n    });\n    return () => client.unmount();\n  }, [client]);\n  return /* @__PURE__ */ jsx60(IsRestoringCacheContext.Provider, { value: isRestoring, children: /* @__PURE__ */ jsx60(FetchClientContext.Provider, { value: client, children }) });\n};\nvar _subscriptions, _subscribers2, _results, _SSRResults, _onlyPrefetched;\nvar RequestsObserver = class {\n  constructor(client, requests) {\n    this.client = client;\n    this.requests = requests;\n    // a map of subscriptions on the FetchClient\n    __privateAdd(this, _subscriptions, /* @__PURE__ */ new Map());\n    // A set of subscribers to requests of the observer\n    __privateAdd(this, _subscribers2, /* @__PURE__ */ new Set());\n    // The results of the susbcribed requests\n    __privateAdd(this, _results, void 0);\n    // getServerSnapshot is also called on the Client while the tree is hydrating.\n    // It is important to always return the same value or hydration warnings will occur.\n    __privateAdd(this, _SSRResults, void 0);\n    // When the RequestsObserver mounts we allow reading prefetched values.\n    // This is to support Text FX on mount for requests that were prefetched.\n    __privateAdd(this, _onlyPrefetched, true);\n    __publicField(this, \"updateResults\", () => {\n      const data2 = [];\n      const statuses = /* @__PURE__ */ new Set();\n      const errors = [];\n      for (const request of this.requests) {\n        const cachekey = getRequestCacheKey(request);\n        const value = this.client.getValue(cachekey, __privateGet(this, _onlyPrefetched));\n        if (!value) {\n          statuses.add(\"loading\");\n          data2.push(request.fallbackValue);\n          continue;\n        }\n        statuses.add(value.status);\n        try {\n          const resolvedValue = resolveFetchDataValue(value, request);\n          data2.push(resolvedValue);\n        } catch (error) {\n          data2.push(!isUndefined(request.errorFallbackValue) ? request.errorFallbackValue : request.fallbackValue);\n          errors.push(error);\n        }\n      }\n      const status = statuses.has(\"error\") ? \"error\" : statuses.has(\"loading\") ? \"loading\" : \"success\";\n      const result = { status, data: data2 };\n      if (!isEqual(result, __privateGet(this, _results))) {\n        __privateSet(this, _results, result);\n        if (errors.length > 0 && !statuses.has(\"loading\") && __privateGet(this, _subscribers2).size > 0) {\n          console.error(\"Fetch failed: \" + errors.join(\"\\n\"));\n        }\n      }\n      for (const subscriber of __privateGet(this, _subscribers2)) {\n        subscriber();\n      }\n    });\n    __publicField(this, \"subscribe\", (callback) => {\n      __privateGet(this, _subscribers2).add(callback);\n      this.updateResults();\n      return () => {\n        __privateGet(this, _subscribers2).delete(callback);\n      };\n    });\n    __publicField(this, \"getServerResults\", () => {\n      return __privateGet(this, _SSRResults);\n    });\n    __publicField(this, \"getResults\", () => {\n      return __privateGet(this, _results);\n    });\n    this.setRequests(requests, { onlyPrefetched: true });\n    __privateSet(this, _SSRResults, { status: \"loading\", data: requests.map((request) => request.fallbackValue) });\n    __privateSet(this, _results, __privateGet(this, _SSRResults));\n  }\n  setRequests(requests, { onlyPrefetched = false }) {\n    var _a;\n    const lastRequests = this.requests;\n    this.requests = requests;\n    const requestsByCacheKey = new Map(requests.map((request) => [getRequestCacheKey(request), request]));\n    const nextSubscribedKeys = Array.from(requestsByCacheKey.keys());\n    const hasOnlyPrefetchedChange = __privateGet(this, _onlyPrefetched) !== onlyPrefetched;\n    if (!onlyPrefetched)\n      __privateSet(this, _onlyPrefetched, false);\n    const hasSubscriptionChange = nextSubscribedKeys.length !== __privateGet(this, _subscriptions).size || nextSubscribedKeys.some((url) => !__privateGet(this, _subscriptions).has(url));\n    if (!hasSubscriptionChange && !hasOnlyPrefetchedChange) {\n      if (!isEqual(lastRequests, requests)) {\n        this.updateResults();\n      }\n      return;\n    }\n    for (const url of __privateGet(this, _subscriptions).keys()) {\n      (_a = __privateGet(this, _subscriptions).get(url)) == null ? void 0 : _a();\n      __privateGet(this, _subscriptions).delete(url);\n    }\n    for (const cacheKey of nextSubscribedKeys) {\n      const requestConfig = requestsByCacheKey.get(cacheKey);\n      if (!requestConfig)\n        continue;\n      const unsubscribe = this.client.subscribe(requestConfig, this.updateResults, onlyPrefetched);\n      __privateGet(this, _subscriptions).set(cacheKey, unsubscribe);\n    }\n    if (__privateGet(this, _subscribers2).size === 0)\n      return;\n    this.updateResults();\n  }\n  unmount() {\n    for (const unsubscribe of __privateGet(this, _subscribers2)) {\n      unsubscribe();\n    }\n    for (const unsubscribe of __privateGet(this, _subscriptions).values()) {\n      unsubscribe();\n    }\n  }\n};\n_subscriptions = new WeakMap();\n_subscribers2 = new WeakMap();\n_results = new WeakMap();\n_SSRResults = new WeakMap();\n_onlyPrefetched = new WeakMap();\nfunction useFetchRequests(requests, disabled) {\n  const fetchClient = React64.useContext(FetchClientContext);\n  if (!fetchClient) {\n    throw new Error(\"useFetchRequest must be used within a FetchClientProvider\");\n  }\n  const isRestoringCache = React64.useContext(IsRestoringCacheContext);\n  const [observer] = React64.useState(() => new RequestsObserver(fetchClient, requests));\n  const [result, setResult] = React64.useState(() => observer.getServerResults());\n  React64.useLayoutEffect(() => {\n    if (disabled)\n      return;\n    observer.setRequests(requests, { onlyPrefetched: false });\n  }, [requests, observer, disabled]);\n  React64.useEffect(() => {\n    if (isRestoringCache || disabled)\n      return;\n    const unsubscribe = observer.subscribe(() => {\n      React64.startTransition(() => {\n        setResult(observer.getResults());\n      });\n    });\n    return () => {\n      unsubscribe();\n      observer.unmount();\n    };\n  }, [observer, disabled, isRestoringCache]);\n  return result;\n}\nfunction usePrefetch() {\n  const fetchClient = React64.useContext(FetchClientContext);\n  if (!fetchClient) {\n    throw new Error(\"useFetchRequest must be used within a FetchClientProvider\");\n  }\n  return React64.useCallback((request) => fetchClient.prefetch(request), [fetchClient]);\n}\n\n// ../../library/src/modules/PageRoot.tsx\nimport { jsx as jsx61 } from \"react/jsx-runtime\";\nfunction PageRoot({\n  RootComponent,\n  isWebsite,\n  routeId,\n  framerSiteId,\n  pathVariables,\n  routes,\n  collectionUtils,\n  notFoundPage,\n  isReducedMotion = false,\n  includeDataObserver = false,\n  localeId,\n  locales,\n  preserveQueryParams,\n  EditorBar,\n  defaultPageStyle,\n  disableHistory,\n  LayoutTemplate,\n  siteCanonicalURL\n}) {\n  const { enableAsyncURLUpdates } = useLibraryFeatures();\n  React65.useEffect(() => {\n    if (isWebsite)\n      return;\n    MainLoop.start();\n  }, []);\n  if (isWebsite) {\n    return /* @__PURE__ */ jsx61(MotionConfig, { reducedMotion: isReducedMotion ? \"user\" : \"never\", children: /* @__PURE__ */ jsx61(FetchClientProvider, { children: /* @__PURE__ */ jsx61(CustomCursorHost, { children: /* @__PURE__ */ jsx61(FormContext.Provider, { value: framerSiteId, children: /* @__PURE__ */ jsx61(\n      Router,\n      {\n        initialRoute: routeId,\n        initialPathVariables: pathVariables,\n        initialLocaleId: localeId,\n        routes,\n        collectionUtils,\n        notFoundPage,\n        locales,\n        defaultPageStyle: defaultPageStyle ?? { minHeight: \"100vh\", width: \"auto\" },\n        preserveQueryParams,\n        enableAsyncURLUpdates,\n        editorBar: /* @__PURE__ */ jsx61(EditorBarLauncher, { EditorBar }),\n        disableHistory,\n        LayoutTemplate,\n        siteCanonicalURL\n      }\n    ) }) }) }) });\n  } else {\n    const Wrapper = includeDataObserver ? DataObserver : React65.Fragment;\n    return /* @__PURE__ */ jsx61(Wrapper, { children: /* @__PURE__ */ jsx61(RoutesProvider, { routes, children: /* @__PURE__ */ jsx61(NavigationWrapper, { children: React65.isValidElement(RootComponent) ? RootComponent : React65.createElement(\n      // @ts-expect-error to figure out how to type this properly, as tests are using different\n      // $$typeof symbol and isValidElement fails\n      RootComponent,\n      { key: routeId }\n    ) }) }) });\n  }\n}\nfunction EditorBarLauncher({ EditorBar }) {\n  const libraryFeatures = useLibraryFeatures();\n  const [mounted, setMounted] = useState6(false);\n  const framerSiteId = useContext22(FormContext);\n  const editorBarFeatures = useMemo12(() => {\n    const features = {};\n    let key7;\n    for (key7 in libraryFeatures) {\n      if (libraryFeatures.hasOwnProperty(key7) && key7.startsWith(\"editorBar\")) {\n        features[key7] = libraryFeatures[key7];\n      }\n    }\n    return features;\n  }, [libraryFeatures]);\n  useEffect18(() => {\n    startTransition6(() => {\n      setMounted(true);\n    });\n  }, []);\n  if (!EditorBar || !framerSiteId || !mounted)\n    return null;\n  return /* @__PURE__ */ jsx61(IgnoreErrors, { children: /* @__PURE__ */ jsx61(Suspense4, { children: /* @__PURE__ */ jsx61(EditorBar, { framerSiteId, features: editorBarFeatures }) }) });\n}\n\n// ../../library/src/modules/ResolveLinks.tsx\nimport { forwardRef as forwardRef5 } from \"react\";\nvar ResolveLinks = /* @__PURE__ */ withChildrenCanSuspend(\n  /* @__PURE__ */ forwardRef5(function ResolveLinksInner({ links, children, ...rest }, ref) {\n    const router = useRouter();\n    const { activeLocale } = useLocaleInfo();\n    const cloneWithPropsAndRef = useCloneChildrenWithPropsAndRef(ref);\n    const promises = [];\n    const resolvedLinks = links.map((link) => {\n      if (!link)\n        return void 0;\n      if (isString(link))\n        return resolveLinkInternal(link, router);\n      return resolveLinkInternal(\n        link.href,\n        router,\n        link.implicitPathVariables,\n        link.refKey,\n        (unresolvedPathSlugs, unresolvedHashSlugs) => {\n          function handleSlugs(slugs) {\n            const result = {};\n            for (const slugKey in slugs) {\n              const unresolvedSlug = slugs[slugKey];\n              assert(router.collectionUtils, \"collectionUtils should be defined\");\n              assert(unresolvedSlug, \"unresolvedSlug be defined\");\n              const lazyValue = resolveSlug(unresolvedSlug, router.collectionUtils, activeLocale);\n              const promise = lazyValue.preload();\n              if (promise) {\n                promises.push(promise);\n              } else {\n                const resolvedValue = lazyValue.read();\n                if (resolvedValue) {\n                  result[slugKey] = resolvedValue;\n                }\n              }\n            }\n            return result;\n          }\n          return {\n            path: handleSlugs(unresolvedPathSlugs),\n            hash: handleSlugs(unresolvedHashSlugs)\n          };\n        }\n      );\n    });\n    if (promises.length > 0) {\n      throw Promise.allSettled(promises);\n    }\n    const childrenWithLinks = children(resolvedLinks);\n    return cloneWithPropsAndRef(childrenWithLinks, rest);\n  })\n);\n\n// ../../library/src/modules/Fetcher.tsx\nimport * as React66 from \"react\";\nvar Fetcher = /* @__PURE__ */ React66.forwardRef(function Fetcher2({ requests, disabled, children, ...rest }, ref) {\n  const cloneWithPropsAndRef = useCloneChildrenWithPropsAndRef(ref);\n  const { data: data2, status } = useFetchRequests(requests, disabled);\n  const childrenWithValues = children(data2, status);\n  return cloneWithPropsAndRef(childrenWithValues, rest);\n});\n\n// ../../library/src/modules/callEach.ts\nvar callEach = (...fns) => fns.forEach((fn) => fn && fn());\n\n// ../../library/src/utils/getLogger.ts\nfunction getLogger(name) {\n  return {\n    trace(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.trace(...args);\n    },\n    debug(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.debug(...args);\n    },\n    info(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.info(...args);\n    },\n    warn(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.warn(...args);\n    },\n    error(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.error(...args);\n    }\n  };\n}\n\n// ../../library/src/modules/cms/types.ts\nfunction isAnyCollection(value) {\n  return isAnyLegacyCollection(value) || isAnyDatabaseCollection(value);\n}\nfunction isLegacyCollection(value) {\n  return isArray(value) && value.every(isObject);\n}\nfunction isLegacyLocalizedCollection(value) {\n  return isObject(value) && isFunction(value.read) && isFunction(value.preload);\n}\nfunction isAnyLegacyCollection(value) {\n  return isLegacyCollection(value) || isLegacyLocalizedCollection(value);\n}\nfunction isDatabaseCollection(value) {\n  return isObject(value) && isObject(value.schema);\n}\nfunction isLocalizedDatabaseCollection(value) {\n  return isObject(value) && isObject(value.collectionByLocaleId);\n}\nfunction isAnyDatabaseCollection(value) {\n  return isDatabaseCollection(value) || isLocalizedDatabaseCollection(value);\n}\n\n// ../../library/src/modules/cms/CompatibilityDatabaseCollection.ts\nasync function getCollectionItems(collection, locale) {\n  if (isLegacyLocalizedCollection(collection)) {\n    await collection.preload(locale);\n    return collection.read(locale);\n  }\n  return collection;\n}\nvar CompatibilityDatabaseCollection = class {\n  constructor(collection, locale) {\n    this.collection = collection;\n    this.locale = locale;\n    __publicField(this, \"schema\");\n    __publicField(this, \"indexes\", []);\n    const propertyControls = getPropertyControls(collection);\n    assert(propertyControls, \"Collection does not have properties\");\n    const schema = {\n      id: {\n        type: \"string\" /* String */,\n        isNullable: false\n      }\n    };\n    const controlEntries = Object.entries(propertyControls);\n    for (const [key7, controlDescription] of controlEntries) {\n      if (!controlDescription)\n        continue;\n      const type = controlDescription.type;\n      assert(type !== \"array\" /* Array */, \"Array properties are not supported\");\n      assert(type !== \"object\" /* Object */, \"Object properties are not supported\");\n      schema[key7] = {\n        type,\n        isNullable: true\n      };\n    }\n    this.schema = schema;\n  }\n  getDatabaseItem(item, pointer) {\n    const data2 = {};\n    for (const key7 in this.schema) {\n      const value = item[key7];\n      if (isNullish(value))\n        continue;\n      const definition = this.schema[key7];\n      if (isUndefined(definition))\n        continue;\n      assert(definition.type !== \"unknown\", \"Invalid definition type\");\n      data2[key7] = {\n        type: definition.type,\n        value\n      };\n    }\n    return { pointer, data: data2 };\n  }\n  async resolveRichText(pointer) {\n    if (LazyValue.is(pointer)) {\n      const promise = pointer.preload();\n      if (promise)\n        await promise;\n      return pointer.read();\n    }\n    return pointer;\n  }\n  async scanItems() {\n    const items = await getCollectionItems(this.collection, this.locale);\n    return items.map((item, index) => {\n      const pointer = String(index);\n      return this.getDatabaseItem(item, pointer);\n    });\n  }\n  async resolveItems(pointers) {\n    const items = await getCollectionItems(this.collection, this.locale);\n    return pointers.map((pointer) => {\n      const index = Number(pointer);\n      const item = items[index];\n      assert(item, \"Can't find collection item\");\n      return this.getDatabaseItem(item, pointer);\n    });\n  }\n  compareItems(left, right) {\n    return Number(left.pointer) - Number(right.pointer);\n  }\n};\n\n// ../../library/src/modules/cms/DatabaseValue.ts\nfunction compareArray(left, right, collation11) {\n  const leftLength = left.value.length;\n  const rightLength = right.value.length;\n  if (leftLength < rightLength)\n    return -1;\n  if (leftLength > rightLength)\n    return 1;\n  for (let i = 0; i < leftLength; i++) {\n    const leftItem = left.value[i];\n    const rightItem = right.value[i];\n    const result = compare(leftItem, rightItem, collation11);\n    if (result !== 0)\n      return result;\n  }\n  return 0;\n}\nfunction castArray(value, definition) {\n  switch (value == null ? void 0 : value.type) {\n    case \"array\" /* Array */: {\n      const result = value.value.map((item) => {\n        return DatabaseValue.cast(item, definition.definition);\n      });\n      return {\n        type: \"array\" /* Array */,\n        value: result\n      };\n    }\n  }\n  return null;\n}\nfunction compareBoolean(left, right) {\n  if (left.value < right.value)\n    return -1;\n  if (left.value > right.value)\n    return 1;\n  return 0;\n}\nfunction castBoolean(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"boolean\" /* Boolean */: {\n      return value;\n    }\n    case \"number\" /* Number */:\n    case \"string\" /* String */: {\n      return {\n        type: \"boolean\" /* Boolean */,\n        value: Boolean(value.value)\n      };\n    }\n  }\n  return null;\n}\nfunction valueToBoolean(value) {\n  const cast = castBoolean(value);\n  return (cast == null ? void 0 : cast.value) ?? false;\n}\nfunction compareColor(left, right) {\n  if (left.value < right.value)\n    return -1;\n  if (left.value > right.value)\n    return 1;\n  return 0;\n}\nfunction castColor(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"color\" /* Color */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareDate(left, right) {\n  const leftDate = new Date(left.value);\n  const rightDate = new Date(right.value);\n  if (leftDate < rightDate)\n    return -1;\n  if (leftDate > rightDate)\n    return 1;\n  return 0;\n}\nfunction castDate(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"date\" /* Date */: {\n      return value;\n    }\n    case \"number\" /* Number */:\n    case \"string\" /* String */: {\n      const date = new Date(value.value);\n      if (isValidDate(date)) {\n        return {\n          type: \"date\" /* Date */,\n          value: date.toISOString()\n        };\n      }\n      return null;\n    }\n  }\n  return null;\n}\nfunction compareEnum(left, right) {\n  if (left.value < right.value)\n    return -1;\n  if (left.value > right.value)\n    return 1;\n  return 0;\n}\nfunction castEnum(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"enum\" /* Enum */: {\n      return value;\n    }\n    case \"string\" /* String */: {\n      return {\n        type: \"enum\" /* Enum */,\n        value: value.value\n      };\n    }\n  }\n  return null;\n}\nfunction compareFile(left, right) {\n  if (left.value < right.value)\n    return -1;\n  if (left.value > right.value)\n    return 1;\n  return 0;\n}\nfunction castFile(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"file\" /* File */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareLink(left, right) {\n  const leftEncoded = JSON.stringify(left.value);\n  const rightEncoded = JSON.stringify(right.value);\n  if (leftEncoded < rightEncoded)\n    return -1;\n  if (leftEncoded > rightEncoded)\n    return 1;\n  return 0;\n}\nfunction castLink(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"link\" /* Link */: {\n      return value;\n    }\n    case \"string\" /* String */: {\n      try {\n        const { protocol } = new URL(value.value);\n        if (protocol === \"http:\" || protocol === \"https:\") {\n          return {\n            type: \"link\" /* Link */,\n            value: value.value\n          };\n        }\n        return null;\n      } catch {\n        return null;\n      }\n    }\n  }\n  return null;\n}\nfunction compareNumber(left, right) {\n  if (left.value < right.value)\n    return -1;\n  if (left.value > right.value)\n    return 1;\n  return 0;\n}\nfunction castNumber(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"number\" /* Number */:\n    case \"string\" /* String */: {\n      const number = Number(value.value);\n      if (Number.isFinite(number)) {\n        return {\n          type: \"number\" /* Number */,\n          value: number\n        };\n      }\n      return null;\n    }\n  }\n  return null;\n}\nfunction valueToNumber(value) {\n  const cast = castNumber(value);\n  return (cast == null ? void 0 : cast.value) ?? null;\n}\nfunction compareObject(left, right, collation11) {\n  const leftKeys = Object.keys(left.value).sort();\n  const rightKeys = Object.keys(right.value).sort();\n  if (leftKeys.length < rightKeys.length)\n    return -1;\n  if (leftKeys.length > rightKeys.length)\n    return 1;\n  for (let i = 0; i < leftKeys.length; i++) {\n    const leftKey = leftKeys[i];\n    const rightKey = rightKeys[i];\n    if (leftKey < rightKey)\n      return -1;\n    if (leftKey > rightKey)\n      return 1;\n    const leftValue = left.value[leftKey] ?? null;\n    const rightValue = right.value[rightKey] ?? null;\n    const result = compare(leftValue, rightValue, collation11);\n    if (result !== 0)\n      return result;\n  }\n  return 0;\n}\nfunction castObject(value, definition) {\n  switch (value == null ? void 0 : value.type) {\n    case \"object\" /* Object */: {\n      const result = {};\n      const definitionEntries = Object.entries(definition.definitions);\n      for (const [key7, itemDefinition] of definitionEntries) {\n        const item = value.value[key7] ?? null;\n        result[key7] = DatabaseValue.cast(item, itemDefinition);\n      }\n      return {\n        type: \"object\" /* Object */,\n        value: result\n      };\n    }\n  }\n  return null;\n}\nfunction compareResponsiveImage(left, right) {\n  const leftEncoded = JSON.stringify(left.value);\n  const rightEncoded = JSON.stringify(right.value);\n  if (leftEncoded < rightEncoded)\n    return -1;\n  if (leftEncoded > rightEncoded)\n    return 1;\n  return 0;\n}\nfunction castResponsiveImage(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"responsiveimage\" /* ResponsiveImage */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareRichText(left, right) {\n  const leftValue = left.value;\n  const rightValue = right.value;\n  if (leftValue < rightValue)\n    return -1;\n  if (leftValue > rightValue)\n    return 1;\n  return 0;\n}\nfunction castRichText(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"richtext\" /* RichText */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareString(left, right, collation11) {\n  let leftValue = left.value;\n  let rightValue = right.value;\n  if (collation11.type === 0 /* CaseInsensitive */) {\n    leftValue = left.value.toLowerCase();\n    rightValue = right.value.toLowerCase();\n  }\n  if (leftValue < rightValue)\n    return -1;\n  if (leftValue > rightValue)\n    return 1;\n  return 0;\n}\nfunction castString(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"string\" /* String */: {\n      return value;\n    }\n    case \"number\" /* Number */: {\n      return {\n        type: \"string\" /* String */,\n        value: String(value.value)\n      };\n    }\n  }\n  return null;\n}\nfunction valueToString(value) {\n  const cast = castString(value);\n  return (cast == null ? void 0 : cast.value) ?? null;\n}\nvar DatabaseValue = {\n  /**\n   * Casts a value to a different type.\n   */\n  cast(value, definition) {\n    switch (definition.type) {\n      case \"array\" /* Array */:\n        return castArray(value, definition);\n      case \"boolean\" /* Boolean */:\n        return castBoolean(value);\n      case \"color\" /* Color */:\n        return castColor(value);\n      case \"date\" /* Date */:\n        return castDate(value);\n      case \"enum\" /* Enum */:\n        return castEnum(value);\n      case \"file\" /* File */:\n        return castFile(value);\n      case \"link\" /* Link */:\n        return castLink(value);\n      case \"number\" /* Number */:\n        return castNumber(value);\n      case \"object\" /* Object */:\n        return castObject(value, definition);\n      case \"responsiveimage\" /* ResponsiveImage */:\n        return castResponsiveImage(value);\n      case \"richtext\" /* RichText */:\n        return castRichText(value);\n      case \"string\" /* String */:\n        return castString(value);\n      case \"unknown\":\n        return value;\n      default:\n        assertNever(definition, \"Unsupported cast\");\n    }\n  },\n  /**\n   * Parses a JavaScript variable into a DatabaseValue.\n   */\n  parse(value) {\n    if (isBoolean(value)) {\n      return {\n        type: \"boolean\" /* Boolean */,\n        value\n      };\n    }\n    if (isValidDate(value)) {\n      return {\n        type: \"date\" /* Date */,\n        value: value.toISOString()\n      };\n    }\n    if (isNumber(value)) {\n      return {\n        type: \"number\" /* Number */,\n        value\n      };\n    }\n    if (isString(value)) {\n      return {\n        type: \"string\" /* String */,\n        value\n      };\n    }\n    if (isArray(value)) {\n      return {\n        type: \"array\" /* Array */,\n        value: value.map(DatabaseValue.parse)\n      };\n    }\n    return null;\n  },\n  /**\n   * Checks if the left value is equal to the right value. Returns false if\n   * the values are not of the same type.\n   */\n  equal(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) === 0;\n  },\n  /**\n   * Checks if the left value is less than the right value. Returns false if\n   * the values are not of the same type.\n   */\n  lessThan(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) < 0;\n  },\n  /**\n   * Checks if the left value is less than or equal to the right value.\n   * Returns false if the values are not of the same type.\n   */\n  lessThanOrEqual(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) <= 0;\n  },\n  /**\n   * Checks if the left value is greater than the right value. Returns false\n   * if the values are not of the same type.\n   */\n  greaterThan(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) > 0;\n  },\n  /**\n   * Checks if the left value is greater than or equal to the right value.\n   * Returns false if the values are not of the same type.\n   */\n  greaterThanOrEqual(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) >= 0;\n  },\n  /**\n   * Checks if the left value is in the right value. Returns false if the\n   * right value is not an array.\n   */\n  in(left, right, collation11) {\n    if ((right == null ? void 0 : right.type) !== \"array\" /* Array */)\n      return false;\n    return right.value.some((item) => {\n      return DatabaseValue.equal(item, left, collation11);\n    });\n  },\n  /**\n   * Get the index of the first occurrence of `target` in `source`.\n   *\n   * If source has duplicates, the index of the first occurrence is always returned.\n   */\n  indexOf(source, target, collation11) {\n    if ((source == null ? void 0 : source.type) !== \"array\" /* Array */)\n      return -1;\n    return source.value.findIndex((item) => {\n      return DatabaseValue.equal(item, target, collation11);\n    });\n  },\n  contains(source, target, collation11) {\n    let sourceValue = valueToString(source);\n    let targetValue = valueToString(target);\n    if (isNull(sourceValue))\n      return false;\n    if (isNull(targetValue))\n      return false;\n    if (collation11.type === 0 /* CaseInsensitive */) {\n      sourceValue = sourceValue.toLowerCase();\n      targetValue = targetValue.toLowerCase();\n    }\n    return sourceValue.includes(targetValue);\n  },\n  startsWith(source, target, collation11) {\n    let sourceValue = valueToString(source);\n    let targetValue = valueToString(target);\n    if (isNull(sourceValue))\n      return false;\n    if (isNull(targetValue))\n      return false;\n    if (collation11.type === 0 /* CaseInsensitive */) {\n      sourceValue = sourceValue.toLowerCase();\n      targetValue = targetValue.toLowerCase();\n    }\n    return sourceValue.startsWith(targetValue);\n  },\n  endsWith(source, target, collation11) {\n    let sourceValue = valueToString(source);\n    let targetValue = valueToString(target);\n    if (isNull(sourceValue))\n      return false;\n    if (isNull(targetValue))\n      return false;\n    if (collation11.type === 0 /* CaseInsensitive */) {\n      sourceValue = sourceValue.toLowerCase();\n      targetValue = targetValue.toLowerCase();\n    }\n    return sourceValue.endsWith(targetValue);\n  },\n  length(value) {\n    switch (value == null ? void 0 : value.type) {\n      case \"array\" /* Array */:\n        return value.value.length;\n    }\n    return 0;\n  },\n  stringify(value) {\n    if (value === null) {\n      return \"null\";\n    }\n    switch (value.type) {\n      case \"array\" /* Array */:\n        return `[${value.value.map(DatabaseValue.stringify).join(\", \")}]`;\n      case \"boolean\" /* Boolean */:\n      case \"number\" /* Number */:\n        return String(value.value);\n      case \"string\" /* String */:\n        return `'${value.value}'`;\n      case \"enum\" /* Enum */:\n        return `'${value.value}' /* Enum */`;\n      case \"color\" /* Color */:\n        return `'${value.value}' /* Color */`;\n      case \"date\" /* Date */:\n        return `'${value.value}' /* Date */`;\n      case \"richtext\" /* RichText */:\n        return \"RichText\";\n      case \"responsiveimage\" /* ResponsiveImage */:\n        return \"ResponsiveImage\";\n      case \"file\" /* File */:\n        return \"File\";\n      case \"link\" /* Link */:\n        return isString(value.value) ? `'${value.value}' /* Link */` : \"Link\";\n      case \"object\" /* Object */:\n        return \"Object\";\n      default:\n        assertNever(value);\n    }\n  }\n};\nfunction compare(left, right, collation11) {\n  if (isNull(left) || isNull(right)) {\n    assert(left === right);\n    return 0;\n  }\n  switch (left.type) {\n    case \"array\" /* Array */: {\n      assert(left.type === right.type);\n      return compareArray(left, right, collation11);\n    }\n    case \"boolean\" /* Boolean */: {\n      assert(left.type === right.type);\n      return compareBoolean(left, right);\n    }\n    case \"color\" /* Color */: {\n      assert(left.type === right.type);\n      return compareColor(left, right);\n    }\n    case \"date\" /* Date */: {\n      assert(left.type === right.type);\n      return compareDate(left, right);\n    }\n    case \"enum\" /* Enum */: {\n      assert(left.type === right.type);\n      return compareEnum(left, right);\n    }\n    case \"file\" /* File */: {\n      assert(left.type === right.type);\n      return compareFile(left, right);\n    }\n    case \"link\" /* Link */: {\n      assert(left.type === right.type);\n      return compareLink(left, right);\n    }\n    case \"number\" /* Number */: {\n      assert(left.type === right.type);\n      return compareNumber(left, right);\n    }\n    case \"object\" /* Object */: {\n      assert(left.type === right.type);\n      return compareObject(left, right, collation11);\n    }\n    case \"responsiveimage\" /* ResponsiveImage */: {\n      assert(left.type === right.type);\n      return compareResponsiveImage(left, right);\n    }\n    case \"richtext\" /* RichText */: {\n      assert(left.type === right.type);\n      return compareRichText(left, right);\n    }\n    case \"string\" /* String */: {\n      assert(left.type === right.type);\n      return compareString(left, right, collation11);\n    }\n    default: {\n      assertNever(left);\n    }\n  }\n}\n\n// ../../library/src/modules/cms/DatabaseValueDefinition.ts\nvar unknownDefinition = {\n  type: \"unknown\",\n  isNullable: true\n};\n\n// ../../library/src/modules/cms/optimizer/Cost.ts\nfunction getNetworkLatency() {\n  return 25;\n}\nfunction getNetworkSpeed() {\n  return 100 * 125;\n}\nvar KB = 1e3;\nvar Cost = class {\n  constructor(network) {\n    this.network = network;\n  }\n  static estimate(totalRequests, transferredBytes) {\n    const latency = getNetworkLatency();\n    const speed = getNetworkSpeed();\n    const network = totalRequests * latency + transferredBytes / speed;\n    return new Cost(network);\n  }\n  static max(left, right) {\n    const network = Math.max(left.network, right.network);\n    return new Cost(network);\n  }\n  static compare(left, right) {\n    if (left.network < right.network)\n      return -1;\n    if (left.network > right.network)\n      return 1;\n    return 0;\n  }\n  add(cost) {\n    this.network += cost.network;\n    return this;\n  }\n  toString() {\n    return `${this.network}ms`;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Group.ts\nfunction GroupId(id) {\n  return id;\n}\nvar Group = class {\n  constructor(id, relational) {\n    this.id = id;\n    this.relational = relational;\n    /**\n     * A list of all nodes in the group. All nodes must have compatible\n     * relational props.\n     */\n    __publicField(this, \"nodes\", []);\n    /**\n     * A map of all winners in the group by their hash.\n     */\n    __publicField(this, \"winners\", /* @__PURE__ */ new Map());\n  }\n  /**\n   * Adds a node to the group. Throws an error if the node is already in a\n   * group.\n   */\n  addNode(node) {\n    this.nodes.push(node);\n    node.setGroup(this);\n  }\n  /**\n   * Returns the winner for the given required physical props. The winner\n   * stores the best node and its cost. This is used to find the best node in\n   * the group.\n   */\n  getWinner(required) {\n    const hash2 = required.getHash();\n    const existing = this.winners.get(hash2);\n    if (existing)\n      return existing;\n    const winner = new Winner();\n    this.winners.set(hash2, winner);\n    return winner;\n  }\n  /**\n   * Returns the optimized version of the node. The optimized version is the\n   * node with the lowest cost with all children replaced with their optimized\n   * versions. This is used to create the final optimized query plan.\n   */\n  getOptimized(required) {\n    const winner = this.getWinner(required);\n    assert(winner.node, \"Group not optimized\");\n    const optimizer = winner.node.getOptimized(required);\n    optimizer.setGroup(this);\n    return optimizer;\n  }\n};\nvar Winner = class {\n  constructor() {\n    __publicField(this, \"node\");\n    __publicField(this, \"cost\", new Cost(Infinity));\n    __publicField(this, \"nodes\", []);\n  }\n  update(node, cost) {\n    this.nodes.push(node);\n    if (Cost.compare(cost, this.cost) < 0) {\n      this.node = node;\n      this.cost = cost;\n    }\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Evaluate.ts\nfunction evaluateSync(generator) {\n  const state = generator.next();\n  assert(state.done, \"Generator must not yield\");\n  return state.value;\n}\nasync function evaluateAsync(generator, state = generator.next()) {\n  while (!state.done) {\n    const value = await state.value;\n    state = generator.next(value);\n  }\n  return state.value;\n}\nfunction* evaluateObject(values) {\n  const result = {};\n  const keys3 = Object.keys(values);\n  const promises = [];\n  for (const key7 of keys3) {\n    const generator = values[key7];\n    if (isGenerator(generator)) {\n      const state = generator.next();\n      if (state.done) {\n        result[key7] = state.value;\n      } else {\n        promises.push(\n          evaluateAsync(generator, state).then((value) => {\n            result[key7] = value;\n          })\n        );\n      }\n    } else {\n      result[key7] = generator;\n    }\n  }\n  if (promises.length > 0) {\n    yield Promise.all(promises);\n  }\n  return result;\n}\nfunction* evaluateArray(values) {\n  const result = [];\n  const keys3 = values.keys();\n  const promises = [];\n  for (const key7 of keys3) {\n    const generator = values[key7];\n    if (isGenerator(generator)) {\n      const state = generator.next();\n      if (state.done) {\n        result[key7] = state.value;\n      } else {\n        promises.push(\n          evaluateAsync(generator, state).then((value) => {\n            result[key7] = value;\n          })\n        );\n      }\n    } else {\n      result[key7] = generator;\n    }\n  }\n  if (promises.length > 0) {\n    yield Promise.all(promises);\n  }\n  return result;\n}\n\n// ../../library/src/modules/cms/optimizer/nodes/AbstractNode.ts\nvar AbstractNode = class {\n  constructor(isSynchronous) {\n    this.isSynchronous = isSynchronous;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalNode.ts\nvar RelationalNode = class extends AbstractNode {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"group\");\n  }\n  /**\n   * Returns the group that the node belongs to. Throws an error if the node\n   * is not in a group. This should only happen in the constructor because\n   * every node is added to a group right after creation.\n   */\n  getGroup() {\n    assert(this.group, \"Node must be in a group\");\n    return this.group;\n  }\n  /**\n   * Adds the node to the given group. Throws an error if the node is already\n   * in a group.\n   */\n  setGroup(group) {\n    assert(!this.group, \"Node is already in a group\");\n    this.group = group;\n  }\n  /**\n   * Evaluates the node and all children synchronously. Throws an error if the\n   * node is not synchronous.\n   */\n  evaluateSync() {\n    const generator = this.evaluate(void 0);\n    return evaluateSync(generator);\n  }\n  /**\n   * Evaluates the node and all children asynchronously.\n   */\n  evaluateAsync() {\n    const generator = this.evaluate(void 0);\n    return evaluateAsync(generator);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Hashable.ts\nfunction Hash(value) {\n  return value;\n}\nfunction isHashable(value) {\n  return isObject(value) && isFunction(value.getHash);\n}\nfunction calculateHash(name, ...values) {\n  const hashes = values.map((value) => {\n    const isCollectionMetadata = value instanceof CollectionMetadata;\n    assert(!isCollectionMetadata, \"Pass CollectionMetadata.id instead\");\n    const isFieldMetadata = value instanceof FieldMetadata;\n    assert(!isFieldMetadata, \"Pass FieldMetadata.id instead\");\n    const isIndexMetadata = value instanceof IndexMetadata;\n    assert(!isIndexMetadata, \"Pass IndexMetadata.id instead\");\n    const isRelationalNode = value instanceof RelationalNode;\n    assert(!isRelationalNode, \"Pass RelationalNode.group.id instead\");\n    const isGroup = value instanceof Group;\n    assert(!isGroup, \"Pass Group.id instead\");\n    if (isHashable(value)) {\n      return value.getHash();\n    }\n    return JSON.stringify(value);\n  });\n  return Hash(`${name}(${hashes.join(\", \")})`);\n}\n\n// ../../library/src/modules/cms/optimizer/RichText.ts\nvar RichText = class {\n  constructor(data2, pointer) {\n    this.data = data2;\n    this.pointer = pointer;\n    __publicField(this, \"cached\");\n  }\n  resolve() {\n    this.cached ??= this.data.resolveRichText(this.pointer);\n    return this.cached;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Metadata.ts\nvar VIRTUAL_INDEX_FIELD = \"index\";\nvar Metadata = class extends Set {\n  merge(other) {\n    for (const item of other) {\n      this.add(item);\n    }\n  }\n  equals(other) {\n    if (this === other)\n      return true;\n    if (this.size !== other.size)\n      return false;\n    for (const item of this) {\n      if (!other.has(item))\n        return false;\n    }\n    return true;\n  }\n  subsetOf(other) {\n    if (this === other)\n      return true;\n    if (this.size > other.size)\n      return false;\n    for (const item of this) {\n      if (!other.has(item))\n        return false;\n    }\n    return true;\n  }\n  getHash() {\n    const ids = [];\n    for (const item of this) {\n      ids.push(item.id);\n    }\n    ids.sort((a, b) => a - b);\n    return calculateHash(this.name, ...ids);\n  }\n};\nfunction CollectionId(id) {\n  return id;\n}\nvar CollectionMetadata = class {\n  constructor(id, name, data2) {\n    this.id = id;\n    this.name = name;\n    this.data = data2;\n    __publicField(this, \"indexes\", new Indexes());\n    __publicField(this, \"fields\", new Fields());\n  }\n};\nfunction IndexId(id) {\n  return id;\n}\nvar IndexMetadata = class {\n  constructor(id, data2, collection, lookupNodes, constraint, ordering) {\n    this.id = id;\n    this.data = data2;\n    this.collection = collection;\n    this.lookupNodes = lookupNodes;\n    this.constraint = constraint;\n    this.ordering = ordering;\n    __publicField(this, \"resolvedFields\", new Fields());\n    for (const fieldName in data2.schema) {\n      for (const field of collection.fields) {\n        if (field.name === fieldName) {\n          this.resolvedFields.add(field);\n        }\n      }\n    }\n  }\n};\nvar Indexes = class extends Metadata {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"name\", \"Indexes\");\n  }\n};\nfunction FieldId(id) {\n  return id;\n}\nvar FieldMetadata = class {\n  constructor(id, name, definition, collection) {\n    this.id = id;\n    this.name = name;\n    this.definition = definition;\n    this.collection = collection;\n  }\n  getValue(item) {\n    assert(this.name, \"Can only get value of field with a name\");\n    const value = item.data[this.name];\n    if ((value == null ? void 0 : value.type) === \"richtext\" /* RichText */) {\n      assert(this.collection, \"Rich text field must have a collection\");\n      return {\n        type: \"richtext\" /* RichText */,\n        value: new RichText(this.collection.data, value.value)\n      };\n    }\n    return value ?? null;\n  }\n};\nvar Fields = class extends Metadata {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"name\", \"Fields\");\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Ordering.ts\nvar OrderingField = class {\n  constructor(field, direction = \"asc\" /* Ascending */) {\n    this.field = field;\n    this.direction = direction;\n  }\n  getHash() {\n    return calculateHash(\"OrderingField\", this.field.id, this.direction);\n  }\n};\nvar Ordering = class {\n  constructor(ordering) {\n    __publicField(this, \"fields\", []);\n    if (ordering) {\n      this.merge(ordering);\n    }\n  }\n  get length() {\n    return this.fields.length;\n  }\n  getHash() {\n    return calculateHash(\"Ordering\", ...this.fields);\n  }\n  push(field) {\n    this.fields.push(field);\n  }\n  merge(ordering) {\n    this.fields.push(...ordering.fields);\n  }\n  equals(other) {\n    if (this === other)\n      return true;\n    if (this.length !== other.length)\n      return false;\n    return this.getHash() === other.getHash();\n  }\n  providedByFields(fields) {\n    for (const { field } of this.fields) {\n      if (fields.has(field))\n        continue;\n      if (field.name === VIRTUAL_INDEX_FIELD)\n        continue;\n      return false;\n    }\n    return true;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/PhysicalProps.ts\nvar RequiredProps = class {\n  constructor(ordering, resolvedFields) {\n    this.ordering = ordering;\n    this.resolvedFields = resolvedFields;\n  }\n  getHash() {\n    return calculateHash(\"RequiredProps\", this.ordering, this.resolvedFields);\n  }\n  /**\n   * Required props with no ordering and no resolved fields are considered\n   * minimal. Every node can provide them.\n   */\n  get isMinimal() {\n    return this.ordering.length === 0 && this.resolvedFields.size === 0;\n  }\n  /**\n   * Checks if the node can provide the required props. If it can't, we need\n   * to add enforcers that provides them.\n   *\n   * Some nodes don't provide the required props directly, but can pass them\n   * through to their children. E.g. a `RelationalFilter` returns the relation\n   * in the same order and with the same resolved fields as its input. These\n   * nodes should return `true` and pass the required props to their children.\n   */\n  canProvide(node) {\n    return this.canProvideOrdering(node) && this.canProvideResolvedFields(node);\n  }\n  /**\n   * Checks if the given node can provide the required ordering. If it can't,\n   * we need to add an `EnforcerSort` node that provides it.\n   */\n  canProvideOrdering(node) {\n    if (this.ordering.length === 0)\n      return true;\n    return node.canProvideOrdering(this.ordering);\n  }\n  /**\n   * Checks if the given node can provide the required resolved fields. If it\n   * can't, we need to add an `EnforcerResolve` node that provides it.\n   */\n  canProvideResolvedFields(node) {\n    if (this.resolvedFields.size === 0)\n      return true;\n    return node.canProvideResolvedFields(this.resolvedFields);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Scope.ts\nvar Scope = class {\n  constructor(parent) {\n    this.parent = parent;\n    /**\n     * The last node built in the scope.\n     */\n    __publicField(this, \"node\");\n    /**\n     * The required ordering of the scope.\n     */\n    __publicField(this, \"ordering\");\n    /**\n     * A list of all fields available in the scope.\n     */\n    __publicField(this, \"fields\", []);\n  }\n  /**\n   * Returns the last node built in the scope and removes it from the scope.\n   * Throws an error if no node was built in the scope yet.\n   */\n  takeNode() {\n    const node = this.node;\n    assert(node, \"Node is missing\");\n    this.node = void 0;\n    return node;\n  }\n  /**\n   * Sets the last node built in the scope. Throws an error if there is\n   * already a node in the scope.\n   */\n  setNode(node) {\n    assert(!this.node, \"Node already set\");\n    this.node = node;\n  }\n  setOrdering(ordering) {\n    this.ordering = ordering;\n  }\n  /**\n   * Create a new scope with the this scope as its parent.\n   */\n  push() {\n    return new Scope(this);\n  }\n  /**\n   * Creates a new scope with the parent of the this scope as its parent.\n   */\n  replace() {\n    return new Scope(this.parent);\n  }\n  /**\n   * Adds a field to this scope. Any fields that are added will be available\n   * in the this scope and all of its children.\n   */\n  addField(scopeField) {\n    this.fields.push(scopeField);\n  }\n  /**\n   * Merges all fields from the given scope into the this scope.\n   */\n  addFieldsFromScope(scope) {\n    for (const scopeField of scope.fields) {\n      this.addField(scopeField);\n    }\n  }\n  /**\n   * Resolves a field from this scope. If the field is not found, the parent\n   * scope is checked. If the name of a field is ambiguous, an error is\n   * thrown.\n   */\n  resolveField(name, collection) {\n    var _a;\n    const candidates = [];\n    for (const field of this.fields) {\n      if (field.name !== name)\n        continue;\n      if (collection && field.collectionName !== collection)\n        continue;\n      candidates.push(field);\n    }\n    if (candidates.length === 1) {\n      return candidates[0];\n    }\n    if (candidates.length > 1) {\n      throw new Error(\"Ambiguous fields\");\n    }\n    return (_a = this.parent) == null ? void 0 : _a.resolveField(name, collection);\n  }\n  /**\n   * Checks if the scope or any parent scope has the given scope field.\n   */\n  has(scopeField) {\n    var _a;\n    if (this.fields.includes(scopeField)) {\n      return true;\n    }\n    return ((_a = this.parent) == null ? void 0 : _a.has(scopeField)) ?? false;\n  }\n  /**\n   * Returns the required ordering for the scope.\n   */\n  getRequiredOrdering() {\n    return this.ordering ?? new Ordering();\n  }\n  /**\n   * Returns the required resolved fields for the scope.\n   */\n  getRequiredResolvedFields() {\n    const resolvedFields = new Fields();\n    for (const { field } of this.fields) {\n      if (field.collection) {\n        resolvedFields.add(field);\n      }\n    }\n    return resolvedFields;\n  }\n  /**\n   * Returns the set of required physical props for this scope. This is used\n   * to create the required props for the root node in the optimizer.\n   */\n  getRequiredProps() {\n    const ordering = this.getRequiredOrdering();\n    const resolvedFields = this.getRequiredResolvedFields();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  /**\n   * Returns a map of the fields in this scope, with their scope names as\n   * keys. This is used to create the final `QueryResult` with the correct\n   * field names.\n   */\n  getNamedFields() {\n    const namedFields = {};\n    for (const { name, field } of this.fields) {\n      namedFields[name] = field;\n    }\n    return namedFields;\n  }\n  /**\n   * Returns the single field from this scope if it only contains one field.\n   * Throws an error if there are more than one fields.\n   */\n  getSingleField() {\n    assert(this.fields.length === 1, \"Scope must contain exactly one field\");\n    const scopeField = this.fields[0];\n    assert(scopeField, \"Field must exist\");\n    return scopeField.field;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Relation.ts\nvar Tuple = class {\n  constructor() {\n    __publicField(this, \"pointers\", /* @__PURE__ */ new Map());\n    __publicField(this, \"values\", /* @__PURE__ */ new Map());\n  }\n  getKey() {\n    const result = [];\n    for (const [collection, pointer] of this.pointers) {\n      result.push(`${collection.id}-${pointer}`);\n    }\n    return result.sort().join(\"-\");\n  }\n  addValue(field, value) {\n    this.values.set(field, value);\n  }\n  getValue(field) {\n    return this.values.get(field) ?? null;\n  }\n  mergeValues(tuple) {\n    for (const [field, value] of tuple.values) {\n      this.addValue(field, value);\n    }\n  }\n  addPointer(collection, pointer) {\n    this.pointers.set(collection, pointer);\n  }\n  getPointer(collection) {\n    return this.pointers.get(collection);\n  }\n  mergePointers(tuple) {\n    for (const [collection, pointer] of tuple.pointers) {\n      this.addPointer(collection, pointer);\n    }\n  }\n  merge(tuple) {\n    this.mergeValues(tuple);\n    this.mergePointers(tuple);\n  }\n};\nvar Relation = class {\n  constructor(fields, tuples = []) {\n    this.fields = fields;\n    this.tuples = tuples;\n  }\n  push(tuple) {\n    this.tuples.push(tuple);\n  }\n  filter(predicate) {\n    const tuples = this.tuples.filter(predicate);\n    return new Relation(this.fields, tuples);\n  }\n  map(fields, callback) {\n    const tuples = this.tuples.map(callback);\n    return new Relation(fields, tuples);\n  }\n  sort(callback) {\n    const tuples = Array.from(this.tuples).sort(callback);\n    return new Relation(this.fields, tuples);\n  }\n  slice(start, end) {\n    const tuples = this.tuples.slice(start, end);\n    return new Relation(this.fields, tuples);\n  }\n  union(other) {\n    const fields = new Fields();\n    for (const field of this.fields) {\n      if (other.fields.has(field)) {\n        fields.add(field);\n      }\n    }\n    const keys3 = /* @__PURE__ */ new Set();\n    const result = new Relation(fields);\n    for (const tuple of this.tuples) {\n      const key7 = tuple.getKey();\n      keys3.add(key7);\n      result.push(tuple);\n    }\n    for (const tuple of other.tuples) {\n      const key7 = tuple.getKey();\n      if (keys3.has(key7))\n        continue;\n      result.push(tuple);\n    }\n    return result;\n  }\n  intersection(other) {\n    const fields = new Fields();\n    for (const field of this.fields) {\n      if (other.fields.has(field)) {\n        fields.add(field);\n      }\n    }\n    const keys3 = /* @__PURE__ */ new Set();\n    const result = new Relation(fields);\n    for (const tuple of this.tuples) {\n      const key7 = tuple.getKey();\n      keys3.add(key7);\n    }\n    for (const tuple of other.tuples) {\n      const key7 = tuple.getKey();\n      if (!keys3.has(key7))\n        continue;\n      result.push(tuple);\n    }\n    return result;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalProject.ts\nvar ProjectionField = class {\n  constructor(input, field) {\n    this.input = input;\n    this.field = field;\n  }\n  getHash() {\n    return calculateHash(\"ProjectionField\", this.input, this.field.id);\n  }\n};\nvar RelationalProject = class extends RelationalNode {\n  constructor(input, projections, passthrough) {\n    let isSynchronous = input.isSynchronous;\n    for (const projection of projections) {\n      isSynchronous &&= projection.input.isSynchronous;\n    }\n    super(isSynchronous);\n    this.input = input;\n    this.projections = projections;\n    this.passthrough = passthrough;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalProject\", this.inputGroup.id, ...this.projections, this.passthrough);\n  }\n  getOutputFields() {\n    const fields = new Fields();\n    fields.merge(this.passthrough);\n    for (const projection of this.projections) {\n      fields.add(projection.field);\n    }\n    return fields;\n  }\n  canProvideOrdering(ordering) {\n    const projectionFields = new Fields();\n    for (const projection of this.projections) {\n      projectionFields.add(projection.field);\n    }\n    for (const { field } of ordering.fields) {\n      if (projectionFields.has(field)) {\n        return false;\n      }\n    }\n    return true;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    for (const projection of this.projections) {\n      resolvedFields.merge(projection.input.referencedFields);\n      resolvedFields.delete(projection.field);\n    }\n    return new RequiredProps(required.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    let projectionsCost = new Cost(0);\n    for (const projection of this.projections) {\n      const projectionCost = projection.input.optimize(optimizer);\n      projectionsCost = Cost.max(projectionsCost, projectionCost);\n    }\n    return new Cost(0).add(Cost.max(inputCost, projectionsCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const projections = this.projections.map((projection) => {\n      const projectionInput = projection.input.getOptimized();\n      return new ProjectionField(projectionInput, projection.field);\n    });\n    return new RelationalProject(input, projections, this.passthrough);\n  }\n  *evaluate(context) {\n    const outputFields = this.getOutputFields();\n    const input = yield* this.input.evaluate(context);\n    const projectedValues = yield* evaluateArray(\n      input.tuples.map(\n        (tuple) => evaluateArray(\n          this.projections.map(\n            (projection) => evaluateObject({\n              field: projection.field,\n              value: projection.input.evaluate(context, tuple)\n            })\n          )\n        )\n      )\n    );\n    return input.map(outputFields, (tuple, index) => {\n      const result = new Tuple();\n      result.mergePointers(tuple);\n      for (const field of this.passthrough) {\n        const value = tuple.getValue(field);\n        result.addValue(field, value);\n      }\n      const projections = projectedValues[index];\n      assert(projections, \"Projections must exist\");\n      for (const { field, value } of projections) {\n        result.addValue(field, value);\n      }\n      return result;\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNode.ts\nvar collation = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarNode = class extends AbstractNode {\n  constructor(referencedFields, referencedOuterFields, isSynchronous) {\n    super(isSynchronous);\n    this.referencedFields = referencedFields;\n    this.referencedOuterFields = referencedOuterFields;\n    this.isSynchronous = isSynchronous;\n  }\n  /**\n   * Evaluates the node and all children synchronously. Throws an error if the\n   * node is not synchronous.\n   */\n  evaluateSync() {\n    const generator = this.evaluate(void 0, void 0);\n    return evaluateSync(generator);\n  }\n  /**\n   * Evaluates the node and all children asynchronously.\n   */\n  evaluateAsync() {\n    const generator = this.evaluate(void 0, void 0);\n    return evaluateAsync(generator);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarCase.ts\nvar collation2 = {\n  type: 0 /* CaseInsensitive */\n};\nvar CaseCondition = class {\n  constructor(when, then) {\n    this.when = when;\n    this.then = then;\n  }\n  getHash() {\n    return calculateHash(\"CaseCondition\", this.when, this.then);\n  }\n};\nvar ScalarCase = class extends ScalarNode {\n  constructor(input, conditions, otherwise) {\n    const referencedFields = new Fields();\n    const referencedOuterFields = new Fields();\n    let isSynchronous = true;\n    if (input) {\n      referencedFields.merge(input.referencedFields);\n      referencedOuterFields.merge(input.referencedOuterFields);\n      isSynchronous &&= input.isSynchronous;\n    }\n    for (const { when, then } of conditions) {\n      referencedFields.merge(when.referencedFields);\n      referencedOuterFields.merge(when.referencedOuterFields);\n      isSynchronous &&= when.isSynchronous;\n      referencedFields.merge(then.referencedFields);\n      referencedOuterFields.merge(then.referencedOuterFields);\n      isSynchronous &&= then.isSynchronous;\n    }\n    if (otherwise) {\n      referencedFields.merge(otherwise.referencedFields);\n      referencedOuterFields.merge(otherwise.referencedOuterFields);\n      isSynchronous &&= otherwise.isSynchronous;\n    }\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.input = input;\n    this.conditions = conditions;\n    this.otherwise = otherwise;\n    __publicField(this, \"definition\", {\n      type: \"unknown\",\n      isNullable: true\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarCase\", this.input, ...this.conditions, this.otherwise);\n  }\n  optimize(optimizer) {\n    var _a, _b;\n    (_a = this.input) == null ? void 0 : _a.optimize(optimizer);\n    for (const condition of this.conditions) {\n      condition.when.optimize(optimizer);\n      condition.then.optimize(optimizer);\n    }\n    (_b = this.otherwise) == null ? void 0 : _b.optimize(optimizer);\n    return new Cost(0);\n  }\n  getOptimized() {\n    var _a, _b;\n    const input = (_a = this.input) == null ? void 0 : _a.getOptimized();\n    const conditions = this.conditions.map((condition) => {\n      const when = condition.when.getOptimized();\n      const then = condition.then.getOptimized();\n      return new CaseCondition(when, then);\n    });\n    const otherwise = (_b = this.otherwise) == null ? void 0 : _b.getOptimized();\n    return new ScalarCase(input, conditions, otherwise);\n  }\n  *evaluate(context, tuple) {\n    var _a, _b;\n    const { input, conditions, otherwise } = yield* evaluateObject({\n      input: ((_a = this.input) == null ? void 0 : _a.evaluate(context, tuple)) ?? null,\n      conditions: evaluateArray(\n        this.conditions.map(\n          (condition) => evaluateObject({\n            when: condition.when.evaluate(context, tuple),\n            // biome-ignore lint/suspicious/noThenProperty: Existing name.\n            then: condition.then.evaluate(context, tuple)\n          })\n        )\n      ),\n      otherwise: ((_b = this.otherwise) == null ? void 0 : _b.evaluate(context, tuple)) ?? null\n    });\n    if (this.input) {\n      for (const { when, then } of conditions) {\n        if (DatabaseValue.equal(input, when, collation2)) {\n          return then;\n        }\n      }\n    } else {\n      for (const { when, then } of conditions) {\n        if (valueToBoolean(when)) {\n          return then;\n        }\n      }\n    }\n    return otherwise;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Builder.ts\nvar Builder = class {\n  constructor(normalizer, query, locale) {\n    this.normalizer = normalizer;\n    this.query = query;\n    this.locale = locale;\n    __publicField(this, \"collectionId\", 0);\n    __publicField(this, \"indexId\", 0);\n    __publicField(this, \"fieldId\", 0);\n    /**\n     * A stack of the subqueries that are currently being built. We use this to\n     * calculate fields that come from the enclosing scope or from inside the\n     * subquery.\n     */\n    __publicField(this, \"subqueries\", []);\n  }\n  build() {\n    const inScope = new Scope();\n    return this.buildQuery(inScope, this.query);\n  }\n  buildQuery(inScope, query) {\n    const select = { type: \"Select\", ...query };\n    return this.buildSelect(inScope, select);\n  }\n  buildSelect(inScope, select) {\n    const fromScope = this.buildFrom(inScope, select.from);\n    const defaultOrdering = fromScope.getRequiredOrdering();\n    if (select.where) {\n      const input = fromScope.takeNode();\n      const predicate = this.buildExpression(fromScope, select.where);\n      const node = this.normalizer.newRelationalFilter(input, predicate);\n      fromScope.setNode(node);\n    }\n    const orderProjections = [];\n    const orderFields = new Fields();\n    let ordering;\n    if (select.orderBy) {\n      ordering = new Ordering();\n      for (const order of select.orderBy) {\n        if (order.type === \"Identifier\") {\n          const scopeField = fromScope.resolveField(order.name, order.collection);\n          if (isUndefined(scopeField))\n            continue;\n          orderFields.add(scopeField.field);\n          const orderingField = new OrderingField(scopeField.field, order.direction);\n          ordering.push(orderingField);\n        } else {\n          const expression = this.buildExpression(fromScope, order);\n          const fieldId = FieldId(this.fieldId++);\n          const field = new FieldMetadata(fieldId, void 0, expression.definition, void 0);\n          const projection = new ProjectionField(expression, field);\n          orderProjections.push(projection);\n          const orderingField = new OrderingField(field, order.direction);\n          ordering.push(orderingField);\n        }\n      }\n      ordering.merge(defaultOrdering);\n    } else {\n      ordering = defaultOrdering;\n    }\n    const projectionScope = this.buildSelectList(fromScope, select.select, orderFields, orderProjections);\n    projectionScope.setOrdering(ordering);\n    if (select.offset) {\n      const input = projectionScope.takeNode();\n      const offset = this.buildExpression(inScope, select.offset);\n      const node = this.normalizer.newRelationalOffset(input, offset, ordering);\n      projectionScope.setNode(node);\n    }\n    if (select.limit) {\n      const input = projectionScope.takeNode();\n      const limit = this.buildExpression(inScope, select.limit);\n      const node = this.normalizer.newRelationalLimit(input, limit, ordering);\n      projectionScope.setNode(node);\n    }\n    return projectionScope;\n  }\n  buildSelectList(inScope, selects, orderFields, orderProjections) {\n    const outScope = inScope.push();\n    const passthrough = new Fields(orderFields);\n    const projections = [...orderProjections];\n    for (const select of selects) {\n      if (select.type === \"Identifier\") {\n        const scopeField = inScope.resolveField(select.name, select.collection);\n        if (isUndefined(scopeField))\n          continue;\n        passthrough.add(scopeField.field);\n        outScope.addField({ ...scopeField, name: select.alias ?? scopeField.name });\n      } else {\n        const expression = this.buildExpression(inScope, select);\n        assert(select.alias, \"Subqueries should have an alias\");\n        const fieldId = FieldId(this.fieldId++);\n        const fieldName = select.alias;\n        const field = new FieldMetadata(fieldId, fieldName, expression.definition, void 0);\n        const projection = new ProjectionField(expression, field);\n        projections.push(projection);\n        outScope.addField({\n          field,\n          name: fieldName\n        });\n      }\n    }\n    const input = inScope.takeNode();\n    const node = this.normalizer.newRelationalProject(input, projections, passthrough);\n    outScope.setNode(node);\n    return outScope;\n  }\n  buildFrom(inScope, from) {\n    switch (from.type) {\n      case \"Collection\":\n        return this.buildCollection(inScope, from);\n      case \"LeftJoin\":\n        return this.buildJoin(inScope, from);\n      default:\n        assertNever(from, \"Unsupported from type\");\n    }\n  }\n  buildCollection(inScope, from) {\n    const outScope = inScope.push();\n    const collectionData = getCollection(from.data, this.locale);\n    const collectionName = from.alias;\n    const collectionId = CollectionId(this.collectionId++);\n    const collection = new CollectionMetadata(collectionId, collectionName, collectionData);\n    for (const [fieldName, definition] of Object.entries(collectionData.schema)) {\n      const fieldId = FieldId(this.fieldId++);\n      const field = new FieldMetadata(fieldId, fieldName, definition, collection);\n      outScope.addField({\n        field,\n        name: fieldName,\n        collectionName\n      });\n      collection.fields.add(field);\n    }\n    {\n      const definition = { type: \"number\" /* Number */, isNullable: false };\n      const fieldId = FieldId(this.fieldId++);\n      const field = new FieldMetadata(fieldId, VIRTUAL_INDEX_FIELD, definition, collection);\n      outScope.addField({\n        field,\n        name: VIRTUAL_INDEX_FIELD,\n        collectionName\n      });\n      const ordering = new Ordering();\n      const orderingField = new OrderingField(field);\n      ordering.push(orderingField);\n      outScope.setOrdering(ordering);\n    }\n    for (const indexData of collectionData.indexes) {\n      const lookupNodes = [];\n      for (const expression of indexData.fields) {\n        const node2 = this.buildExpression(outScope, expression);\n        lookupNodes.push(node2);\n      }\n      let constraint;\n      if (indexData.where) {\n        constraint = this.buildExpression(outScope, indexData.where);\n      }\n      const ordering = new Ordering();\n      const indexId = IndexId(this.indexId++);\n      const index = new IndexMetadata(indexId, indexData, collection, lookupNodes, constraint, ordering);\n      collection.indexes.add(index);\n    }\n    const node = this.normalizer.newRelationalScan(collection);\n    outScope.setNode(node);\n    return outScope;\n  }\n  buildJoin(inScope, from) {\n    const leftScope = this.buildFrom(inScope, from.left);\n    const rightScope = this.buildFrom(inScope, from.right);\n    const ordering = new Ordering();\n    const leftOrdering = leftScope.getRequiredOrdering();\n    ordering.merge(leftOrdering);\n    const rightOrdering = rightScope.getRequiredOrdering();\n    ordering.merge(rightOrdering);\n    const outScope = inScope.push();\n    outScope.addFieldsFromScope(leftScope);\n    outScope.addFieldsFromScope(rightScope);\n    outScope.setOrdering(ordering);\n    const constraint = this.buildExpression(outScope, from.constraint);\n    const left = leftScope.takeNode();\n    const right = rightScope.takeNode();\n    let node;\n    switch (from.type) {\n      case \"LeftJoin\":\n        node = this.normalizer.newRelationalLeftJoin(left, right, constraint);\n        break;\n      default:\n        assertNever(from.type, \"Unsupported join type\");\n    }\n    outScope.setNode(node);\n    return outScope;\n  }\n  buildExpression(inScope, expression) {\n    switch (expression.type) {\n      case \"Identifier\":\n        return this.buildIdentifier(inScope, expression);\n      case \"LiteralValue\":\n        return this.buildLiteralValue(expression);\n      case \"FunctionCall\":\n        return this.buildFunctionCall(inScope, expression);\n      case \"Case\":\n        return this.buildCase(inScope, expression);\n      case \"UnaryOperation\":\n        return this.buildUnaryOperation(inScope, expression);\n      case \"BinaryOperation\":\n        return this.buildBinaryOperation(inScope, expression);\n      case \"TypeCast\":\n        return this.buildTypeCast(inScope, expression);\n      case \"Select\":\n        throw new Error(\"Subqueries are only supported inside subquery function calls\");\n      default:\n        assertNever(expression, \"Unsupported expression\");\n    }\n  }\n  buildIdentifier(inScope, expression) {\n    const scopeField = inScope.resolveField(expression.name, expression.collection);\n    if (scopeField) {\n      let isOuterField = false;\n      for (const subquery of this.subqueries) {\n        if (isOuterField) {\n          subquery.referencedOuterFields.add(scopeField.field);\n        } else {\n          isOuterField = subquery.inScope.has(scopeField);\n          if (isOuterField) {\n            subquery.referencedFields.add(scopeField.field);\n          }\n        }\n      }\n      return this.normalizer.newScalarVariable(scopeField.field, isOuterField);\n    }\n    return this.normalizer.newScalarConstant(unknownDefinition, null);\n  }\n  buildLiteralValue(expression) {\n    const value = DatabaseValue.parse(expression.value);\n    return this.normalizer.newScalarConstant(unknownDefinition, value);\n  }\n  buildFunctionCall(inScope, expression) {\n    const getArgument = (index) => {\n      const argument = expression.arguments[index];\n      assert(argument, \"Missing argument\");\n      return this.buildExpression(inScope, argument);\n    };\n    switch (expression.functionName) {\n      case \"CONTAINS\" /* Contains */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarContains(source, target);\n      }\n      case \"STARTS_WITH\" /* StartsWith */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarStartsWith(source, target);\n      }\n      case \"ENDS_WITH\" /* EndsWith */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarEndsWith(source, target);\n      }\n      case \"LENGTH\" /* Length */: {\n        const array = getArgument(0);\n        return this.normalizer.newScalarLength(array);\n      }\n      case \"INDEX_OF\" /* IndexOf */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarIndexOf(source, target);\n      }\n      case \"ARRAY\" /* Array */: {\n        const subquery = expression.arguments[0];\n        assert(subquery, \"Missing argument\");\n        assert(subquery.type === \"Select\", \"Subqueries require a select expression\");\n        return this.buildSubqueryArray(inScope, subquery);\n      }\n      case \"FLAT_ARRAY\" /* FlatArray */: {\n        const subquery = expression.arguments[0];\n        assert(subquery, \"Missing argument\");\n        assert(subquery.type === \"Select\", \"Subqueries require a select expression\");\n        return this.buildSubqueryFlatArray(inScope, subquery);\n      }\n      default:\n        throw new Error(\"Unsupported function name\");\n    }\n  }\n  buildSubqueryArray(inScope, expression) {\n    try {\n      const subquery = new Subquery(inScope);\n      this.subqueries.push(subquery);\n      const outScope = this.buildSelect(inScope, expression);\n      const input = outScope.takeNode();\n      const namedFields = outScope.getNamedFields();\n      const ordering = outScope.getRequiredOrdering();\n      const referencedFields = subquery.referencedFields;\n      const referencedOuterFields = subquery.referencedOuterFields;\n      return this.normalizer.newScalarArray(input, namedFields, ordering, referencedFields, referencedOuterFields);\n    } finally {\n      this.subqueries.pop();\n    }\n  }\n  buildSubqueryFlatArray(inScope, expression) {\n    try {\n      const subquery = new Subquery(inScope);\n      this.subqueries.push(subquery);\n      const outScope = this.buildSelect(inScope, expression);\n      const input = outScope.takeNode();\n      const field = outScope.getSingleField();\n      const ordering = outScope.getRequiredOrdering();\n      const referencedFields = subquery.referencedFields;\n      const referencedOuterFields = subquery.referencedOuterFields;\n      return this.normalizer.newScalarFlatArray(input, field, ordering, referencedFields, referencedOuterFields);\n    } finally {\n      this.subqueries.pop();\n    }\n  }\n  buildCase(inScope, expression) {\n    let input;\n    if (expression.value) {\n      input = this.buildExpression(inScope, expression.value);\n    }\n    const conditions = expression.conditions.map((condition) => {\n      const when = this.buildExpression(inScope, condition.when);\n      const then = this.buildExpression(inScope, condition.then);\n      return new CaseCondition(when, then);\n    });\n    let otherwise;\n    if (expression.else) {\n      otherwise = this.buildExpression(inScope, expression.else);\n    }\n    return this.normalizer.newScalarCase(input, conditions, otherwise);\n  }\n  buildUnaryOperation(inScope, expression) {\n    const input = this.buildExpression(inScope, expression.value);\n    switch (expression.operator) {\n      case \"not\" /* Not */:\n        return this.normalizer.newScalarNot(input);\n      default:\n        assertNever(expression.operator, \"Unsupported unary operator\");\n    }\n  }\n  buildBinaryOperation(inScope, expression) {\n    const left = this.buildExpression(inScope, expression.left);\n    const right = this.buildExpression(inScope, expression.right);\n    switch (expression.operator) {\n      case \"and\" /* And */:\n        return this.normalizer.newScalarAnd(left, right);\n      case \"or\" /* Or */:\n        return this.normalizer.newScalarOr(left, right);\n      case \"==\" /* Equals */:\n        return this.normalizer.newScalarEquals(left, right);\n      case \"!=\" /* NotEquals */:\n        return this.normalizer.newScalarNotEquals(left, right);\n      case \"<\" /* LessThan */:\n        return this.normalizer.newScalarLessThan(left, right);\n      case \"<=\" /* LessThanOrEqual */:\n        return this.normalizer.newScalarLessThanOrEqual(left, right);\n      case \">\" /* GreaterThan */:\n        return this.normalizer.newScalarGreaterThan(left, right);\n      case \">=\" /* GreaterThanOrEqual */:\n        return this.normalizer.newScalarGreaterThanOrEqual(left, right);\n      case \"in\" /* In */:\n        return this.normalizer.newScalarIn(left, right);\n      default:\n        assertNever(expression.operator, \"Unsupported binary operator\");\n    }\n  }\n  buildTypeCast(inScope, expression) {\n    const input = this.buildExpression(inScope, expression.value);\n    switch (expression.dataType) {\n      case \"BOOLEAN\" /* Boolean */: {\n        const definition = { type: \"boolean\" /* Boolean */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      case \"DATE\" /* Date */: {\n        const definition = { type: \"date\" /* Date */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      case \"NUMBER\" /* Number */: {\n        const definition = { type: \"number\" /* Number */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      case \"STRING\" /* String */: {\n        const definition = { type: \"string\" /* String */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      default:\n        throw new Error(\"Unsupported data type\");\n    }\n  }\n};\nfunction getCollection(data2, locale) {\n  if (isAnyLegacyCollection(data2)) {\n    return new CompatibilityDatabaseCollection(data2, locale);\n  }\n  if (isDatabaseCollection(data2)) {\n    return data2;\n  }\n  if (isLocalizedDatabaseCollection(data2)) {\n    while (locale) {\n      const collection = data2.collectionByLocaleId[locale.id];\n      if (collection)\n        return collection;\n      locale = locale.fallback;\n    }\n    return data2.collectionByLocaleId.default;\n  }\n  assertNever(data2, \"Unsupported collection type\");\n}\nvar Subquery = class {\n  constructor(inScope) {\n    this.inScope = inScope;\n    /**\n     * A list of fields that are referenced from `inScope` of the subquery.\n     *\n     * To evaluate a subquery, we need to know which fields are coming from\n     * outside the subquery and which fields are coming from inside the\n     * subquery. For example, in the following query:\n     *\n     * ```\n     * SELECT title, (\n     *     SELECT name FROM articles\n     *     WHERE id = author_id\n     * ) AS author FROM articles\n     * ```\n     *\n     * The `name` and `id` fields are coming from the inside the subquery, but\n     * the `author_id` field is coming from the parent scope. We need to resolve\n     * `author_id` before we can evaluate the subquery.\n     */\n    __publicField(this, \"referencedFields\", new Fields());\n    /**\n     * A list of fields that are referenced from the `inScope` of the parent\n     * subquery.\n     */\n    __publicField(this, \"referencedOuterFields\", new Fields());\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalFilter.ts\nvar RelationalFilter = class extends RelationalNode {\n  constructor(input, predicate) {\n    super(input.isSynchronous && predicate.isSynchronous);\n    this.input = input;\n    this.predicate = predicate;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalFilter\", this.inputGroup.id, this.predicate);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering() {\n    return true;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    resolvedFields.merge(this.predicate.referencedFields);\n    return new RequiredProps(required.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    const predicateCost = this.predicate.optimize(optimizer);\n    return new Cost(0).add(Cost.max(inputCost, predicateCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const predicate = this.predicate.getOptimized();\n    return new RelationalFilter(input, predicate);\n  }\n  *evaluate(context) {\n    const input = yield* this.input.evaluate(context);\n    const predicates = yield* evaluateArray(\n      input.tuples.map((tuple) => {\n        return this.predicate.evaluate(context, tuple);\n      })\n    );\n    return input.filter((_, index) => {\n      const predicate = predicates[index] ?? null;\n      return valueToBoolean(predicate);\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalIndexLookup.ts\nvar RelationalIndexLookup = class extends RelationalNode {\n  constructor(index, query) {\n    super(false);\n    this.index = index;\n    this.query = query;\n  }\n  getHash() {\n    return calculateHash(\"RelationalIndexLookup\", this.index.id, ...this.query);\n  }\n  getOutputFields() {\n    return this.index.collection.fields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.index.ordering);\n  }\n  canProvideResolvedFields(resolvedFields) {\n    return resolvedFields.subsetOf(this.index.resolvedFields);\n  }\n  optimize() {\n    const isFullScan = this.query.every((lookup) => lookup.type === \"All\" /* All */);\n    return Cost.estimate(1, isFullScan ? 100 * KB : 50 * KB);\n  }\n  getOptimized() {\n    return new RelationalIndexLookup(this.index, this.query);\n  }\n  *evaluate() {\n    const index = this.index;\n    const collection = index.collection;\n    const outputFields = this.getOutputFields();\n    const items = yield index.data.lookupItems(this.query);\n    const tuples = items.map((item) => {\n      const tuple = new Tuple();\n      for (const field of index.resolvedFields) {\n        const value = field.getValue(item);\n        tuple.addPointer(collection, item.pointer);\n        tuple.addValue(field, value);\n      }\n      return tuple;\n    });\n    return new Relation(outputFields, tuples);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalIntersection.ts\nvar RelationalIntersection = class extends RelationalNode {\n  constructor(left, right) {\n    super(left.isSynchronous && right.isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalIntersection\", this.leftGroup.id, this.rightGroup.id);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    const leftOutputFields = this.leftGroup.relational.outputFields;\n    const rightOutputFields = this.rightGroup.relational.outputFields;\n    for (const field of leftOutputFields) {\n      if (rightOutputFields.has(field)) {\n        outputFields.add(field);\n      }\n    }\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(required) {\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, required.resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    return new RelationalIntersection(left, right);\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    return left.intersection(right);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarEquals.ts\nvar ScalarEquals = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarEquals\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarEquals(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.equal(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalLeftJoin.ts\nvar RelationalLeftJoin = class extends RelationalNode {\n  constructor(left, right, constraint) {\n    super(left.isSynchronous && right.isSynchronous && constraint.isSynchronous);\n    this.left = left;\n    this.right = right;\n    this.constraint = constraint;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalLeftJoin\", this.leftGroup.id, this.rightGroup.id, this.constraint);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    outputFields.merge(this.leftGroup.relational.outputFields);\n    outputFields.merge(this.rightGroup.relational.outputFields);\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(group, required) {\n    const resolvedFields = new Fields();\n    const outputFields = group.relational.outputFields;\n    for (const field of required.resolvedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    for (const field of this.constraint.referencedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    const constraintCost = this.constraint.optimize(optimizer);\n    return Cost.max(Cost.max(leftCost, rightCost), constraintCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    const constraint = this.constraint.getOptimized();\n    return new RelationalLeftJoin(left, right, constraint);\n  }\n  /** Optimized path for equality constraints that runs in O(n + m) time. */\n  *evaluateScalarEquals(left, right, leftConstraint, rightConstraint, context) {\n    const joinKeyMap = /* @__PURE__ */ new Map();\n    for (const rightTuple of right.tuples) {\n      const rightValue = yield* rightConstraint.evaluate(context, rightTuple);\n      const key7 = JSON.stringify((rightValue == null ? void 0 : rightValue.value) ?? null);\n      const tuplesForKey = joinKeyMap.get(key7) ?? [];\n      tuplesForKey.push(rightTuple);\n      joinKeyMap.set(key7, tuplesForKey);\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const leftTuple of left.tuples) {\n      const leftValue = yield* leftConstraint.evaluate(context, leftTuple);\n      const key7 = JSON.stringify((leftValue == null ? void 0 : leftValue.value) ?? null);\n      const matches = joinKeyMap.get(key7) ?? [];\n      if (matches.length === 0) {\n        result.push(leftTuple);\n      } else {\n        for (const rightTuple of matches) {\n          const joinedTuple = new Tuple();\n          joinedTuple.merge(leftTuple);\n          joinedTuple.merge(rightTuple);\n          result.push(joinedTuple);\n        }\n      }\n    }\n    return result;\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    if (this.constraint instanceof ScalarEquals) {\n      if (this.constraint.left.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.right.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.left,\n          this.constraint.right,\n          context\n        );\n      }\n      if (this.constraint.right.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.left.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.right,\n          this.constraint.left,\n          context\n        );\n      }\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const leftTuple of left.tuples) {\n      let hasMatch = false;\n      for (const rightTuple of right.tuples) {\n        const tuple = new Tuple();\n        tuple.merge(leftTuple);\n        tuple.merge(rightTuple);\n        const value = yield* this.constraint.evaluate(context, tuple);\n        if (valueToBoolean(value)) {\n          result.push(tuple);\n          hasMatch = true;\n        }\n      }\n      if (!hasMatch) {\n        result.push(leftTuple);\n      }\n    }\n    return result;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalRightJoin.ts\nvar RelationalRightJoin = class extends RelationalNode {\n  constructor(left, right, constraint) {\n    super(left.isSynchronous && right.isSynchronous && constraint.isSynchronous);\n    this.left = left;\n    this.right = right;\n    this.constraint = constraint;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalRightJoin\", this.leftGroup.id, this.rightGroup.id, this.constraint);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    outputFields.merge(this.leftGroup.relational.outputFields);\n    outputFields.merge(this.rightGroup.relational.outputFields);\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(group, required) {\n    const resolvedFields = new Fields();\n    const outputFields = group.relational.outputFields;\n    for (const field of required.resolvedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    for (const field of this.constraint.referencedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    const constraintCost = this.constraint.optimize(optimizer);\n    return Cost.max(Cost.max(leftCost, rightCost), constraintCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    const constraint = this.constraint.getOptimized();\n    return new RelationalRightJoin(left, right, constraint);\n  }\n  /** Optimized path for equality constraints that runs in O(n + m) time. */\n  *evaluateScalarEquals(left, right, leftConstraint, rightConstraint, context) {\n    const joinKeyMap = /* @__PURE__ */ new Map();\n    for (const leftTuple of left.tuples) {\n      const leftValue = yield* leftConstraint.evaluate(context, leftTuple);\n      const key7 = JSON.stringify((leftValue == null ? void 0 : leftValue.value) ?? null);\n      const tuplesForKey = joinKeyMap.get(key7) ?? [];\n      tuplesForKey.push(leftTuple);\n      joinKeyMap.set(key7, tuplesForKey);\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const rightTuple of right.tuples) {\n      const rightValue = yield* rightConstraint.evaluate(context, rightTuple);\n      const key7 = JSON.stringify((rightValue == null ? void 0 : rightValue.value) ?? null);\n      const matches = joinKeyMap.get(key7) ?? [];\n      if (matches.length === 0) {\n        result.push(rightTuple);\n      } else {\n        for (const leftTuple of matches) {\n          const joinedTuple = new Tuple();\n          joinedTuple.merge(rightTuple);\n          joinedTuple.merge(leftTuple);\n          result.push(joinedTuple);\n        }\n      }\n    }\n    return result;\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    if (this.constraint instanceof ScalarEquals) {\n      if (this.constraint.left.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.right.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.left,\n          this.constraint.right,\n          context\n        );\n      }\n      if (this.constraint.right.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.left.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.right,\n          this.constraint.left,\n          context\n        );\n      }\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const rightTuple of right.tuples) {\n      let hasMatch = false;\n      for (const leftTuple of left.tuples) {\n        const tuple = new Tuple();\n        tuple.merge(rightTuple);\n        tuple.merge(leftTuple);\n        const value = yield* this.constraint.evaluate(context, tuple);\n        if (valueToBoolean(value)) {\n          result.push(tuple);\n          hasMatch = true;\n        }\n      }\n      if (!hasMatch) {\n        result.push(rightTuple);\n      }\n    }\n    return result;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalScan.ts\nvar RelationalScan = class extends RelationalNode {\n  constructor(collection) {\n    super(false);\n    this.collection = collection;\n  }\n  getHash() {\n    return calculateHash(\"RelationalScan\", this.collection.id);\n  }\n  getOutputFields() {\n    return this.collection.fields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields(resolvedFields) {\n    return resolvedFields.subsetOf(this.collection.fields);\n  }\n  optimize() {\n    return Cost.estimate(1, 200 * KB);\n  }\n  getOptimized() {\n    return new RelationalScan(this.collection);\n  }\n  *evaluate() {\n    const collection = this.collection;\n    const outputFields = this.getOutputFields();\n    const items = yield collection.data.scanItems();\n    const tuples = items.map((item) => {\n      const tuple = new Tuple();\n      for (const field of outputFields) {\n        const value = field.getValue(item);\n        tuple.addPointer(collection, item.pointer);\n        tuple.addValue(field, value);\n      }\n      return tuple;\n    });\n    return new Relation(outputFields, tuples);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalUnion.ts\nvar RelationalUnion = class extends RelationalNode {\n  constructor(left, right) {\n    super(left.isSynchronous && right.isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalUnion\", this.leftGroup.id, this.rightGroup.id);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    const leftOutputFields = this.leftGroup.relational.outputFields;\n    const rightOutputFields = this.rightGroup.relational.outputFields;\n    for (const field of leftOutputFields) {\n      if (rightOutputFields.has(field)) {\n        outputFields.add(field);\n      }\n    }\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(required) {\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, required.resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    return new RelationalUnion(left, right);\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    return left.union(right);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarAnd.ts\nvar ScalarAnd = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarAnd\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarAnd(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: valueToBoolean(left) && valueToBoolean(right)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarConstant.ts\nvar ScalarConstant = class extends ScalarNode {\n  constructor(definition, value) {\n    const referencedFields = new Fields();\n    const referencedOuterFields = new Fields();\n    super(referencedFields, referencedOuterFields, true);\n    this.definition = definition;\n    this.value = value;\n  }\n  getHash() {\n    return calculateHash(\"ScalarConstant\", this.definition, this.value);\n  }\n  optimize() {\n    return new Cost(0);\n  }\n  getOptimized() {\n    return this;\n  }\n  // biome-ignore lint/correctness/useYield: Required by the super class.\n  *evaluate() {\n    return this.value;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarContains.ts\nvar collation3 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarContains = class extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarContains\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new ScalarContains(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.contains(source, target, collation3)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarEndsWith.ts\nvar collation4 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarEndsWith = class extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarEndsWith\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new ScalarEndsWith(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.endsWith(source, target, collation4)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarGreaterThan.ts\nvar ScalarGreaterThan = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarGreaterThan\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarGreaterThan(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.greaterThan(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarGreaterThanOrEqual.ts\nvar ScalarGreaterThanOrEqual = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarGreaterThanOrEqual\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarGreaterThanOrEqual(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.greaterThanOrEqual(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarLessThan.ts\nvar ScalarLessThan = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarLessThan\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarLessThan(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.lessThan(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarLessThanOrEqual.ts\nvar ScalarLessThanOrEqual = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarLessThanOrEqual\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarLessThanOrEqual(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.lessThanOrEqual(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNotEquals.ts\nvar ScalarNotEquals = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarNotEquals\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarNotEquals(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: !DatabaseValue.equal(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarOr.ts\nvar ScalarOr = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarOr\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarOr(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: valueToBoolean(left) || valueToBoolean(right)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarStartsWith.ts\nvar collation5 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarStartsWith = class extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarStartsWith\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new ScalarStartsWith(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.startsWith(source, target, collation5)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Explorer.ts\nvar Explorer = class {\n  constructor(normalizer) {\n    this.normalizer = normalizer;\n    __publicField(this, \"memo\");\n    this.memo = normalizer.memo;\n  }\n  explore(before) {\n    const group = before.getGroup();\n    if (before instanceof RelationalLeftJoin) {\n      const after = new RelationalRightJoin(before.right, before.left, before.constraint);\n      this.memo.addRelational(after, group);\n    }\n    if (before instanceof RelationalFilter) {\n      if (before.predicate instanceof ScalarAnd) {\n        const left = this.normalizer.newRelationalFilter(before.input, before.predicate.left);\n        const right = this.normalizer.newRelationalFilter(before.input, before.predicate.right);\n        const after = new RelationalIntersection(left, right);\n        this.memo.addRelational(after, group);\n      }\n      if (before.predicate instanceof ScalarOr) {\n        const left = this.normalizer.newRelationalFilter(before.input, before.predicate.left);\n        const right = this.normalizer.newRelationalFilter(before.input, before.predicate.right);\n        const after = new RelationalUnion(left, right);\n        this.memo.addRelational(after, group);\n      }\n    }\n    if (before instanceof RelationalScan) {\n      for (const index of before.collection.indexes) {\n        if (index.constraint)\n          continue;\n        const query = createIndexQueryAll(index.lookupNodes.length);\n        const after = new RelationalIndexLookup(index, query);\n        this.memo.addRelational(after, group);\n      }\n    }\n    if (before instanceof RelationalFilter) {\n      for (const input of before.inputGroup.nodes) {\n        if (input instanceof RelationalScan) {\n          for (const index of input.collection.indexes) {\n            if (before.predicate instanceof ScalarEquals && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"Equals\" /* Equals */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"Equals\" /* Equals */,\n                value: before.predicate.right.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarNotEquals && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"NotEquals\" /* NotEquals */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"NotEquals\" /* NotEquals */,\n                value: before.predicate.right.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarLessThan && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"LessThan\" /* LessThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"LessThan\" /* LessThan */,\n                value: before.predicate.right.value,\n                inclusive: false\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarLessThanOrEqual && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"LessThan\" /* LessThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"LessThan\" /* LessThan */,\n                value: before.predicate.right.value,\n                inclusive: true\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarGreaterThan && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"GreaterThan\" /* GreaterThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"GreaterThan\" /* GreaterThan */,\n                value: before.predicate.right.value,\n                inclusive: false\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarGreaterThanOrEqual && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"GreaterThan\" /* GreaterThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"GreaterThan\" /* GreaterThan */,\n                value: before.predicate.right.value,\n                inclusive: true\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarContains && before.predicate.source === index.lookupNodes[0] && before.predicate.target instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"Contains\" /* Contains */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"Contains\" /* Contains */,\n                value: before.predicate.target.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarStartsWith && before.predicate.source === index.lookupNodes[0] && before.predicate.target instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"StartsWith\" /* StartsWith */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"StartsWith\" /* StartsWith */,\n                value: before.predicate.target.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarEndsWith && before.predicate.source === index.lookupNodes[0] && before.predicate.target instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"EndsWith\" /* EndsWith */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"EndsWith\" /* EndsWith */,\n                value: before.predicate.target.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n          }\n        }\n      }\n    }\n  }\n};\nfunction createIndexQueryAll(length) {\n  const lookup = { type: \"All\" /* All */ };\n  return new Array(length).fill(lookup);\n}\n\n// ../../library/src/modules/cms/optimizer/LogicalProps.ts\nvar RelationalProps = class {\n  constructor(outputFields) {\n    this.outputFields = outputFields;\n  }\n  /**\n   * Checks if the given relational properties are compatible with this.\n   */\n  isCompatible(other) {\n    return this.outputFields.equals(other.outputFields);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Memo.ts\nvar Memo = class {\n  constructor() {\n    /**\n     * A map of all nodes in the memo by their hash. This allows to easily find\n     * duplicated nodes and their groups.\n     */\n    __publicField(this, \"nodes\", /* @__PURE__ */ new Map());\n    /**\n     * A list of all groups in the memo. The id of a group is the index of the\n     * group in this list.\n     */\n    __publicField(this, \"groups\", []);\n  }\n  /**\n   * Adds a new group with the given relational props to the memo. All nodes\n   * in the group must have the same props. It's expected that the normalized\n   * node is immediately added to the group after creating it.\n   */\n  addGroup(relationalProps) {\n    const id = GroupId(this.groups.length);\n    const group = new Group(id, relationalProps);\n    this.groups.push(group);\n    return group;\n  }\n  /**\n   * Adds a relational node to the memo and the group. If the node is already\n   * in the memo, it returns the existing node. If no group is given, it\n   * creates a new group with the given relational props of the node.\n   */\n  addRelational(node, group) {\n    const hash2 = node.getHash();\n    const existing = this.nodes.get(hash2);\n    if (existing)\n      return existing;\n    this.nodes.set(hash2, node);\n    const outputFields = node.getOutputFields();\n    const relational = new RelationalProps(outputFields);\n    group ??= this.addGroup(relational);\n    group.addNode(node);\n    assert(relational.isCompatible(group.relational), \"Group has inconsistent relational props\");\n    return node;\n  }\n  /**\n   * Adds a scalar node to the memo. If the node is already in the memo, it\n   * returns the existing node.\n   */\n  addScalar(node) {\n    const hash2 = node.getHash();\n    const existing = this.nodes.get(hash2);\n    if (existing)\n      return existing;\n    this.nodes.set(hash2, node);\n    return node;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalLimit.ts\nvar RelationalLimit = class extends RelationalNode {\n  constructor(input, limit, ordering) {\n    super(input.isSynchronous && limit.isSynchronous);\n    this.input = input;\n    this.limit = limit;\n    this.ordering = ordering;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalLimit\", this.inputGroup.id, this.limit);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.ordering);\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    resolvedFields.merge(this.limit.referencedFields);\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    const limitCost = this.limit.optimize(optimizer);\n    return new Cost(0).add(Cost.max(inputCost, limitCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const limit = this.limit.getOptimized();\n    return new RelationalLimit(input, limit, this.ordering);\n  }\n  *evaluate(context) {\n    const { input, limit } = yield* evaluateObject({\n      input: this.input.evaluate(context),\n      limit: this.limit.evaluate(context, void 0)\n    });\n    const value = valueToNumber(limit) ?? Infinity;\n    if (value === Infinity)\n      return input;\n    return input.slice(0, value);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalOffset.ts\nvar RelationalOffset = class extends RelationalNode {\n  constructor(input, offset, ordering) {\n    super(input.isSynchronous && offset.isSynchronous);\n    this.input = input;\n    this.offset = offset;\n    this.ordering = ordering;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalOffset\", this.inputGroup.id, this.offset);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.ordering);\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    resolvedFields.merge(this.offset.referencedFields);\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    const offsetCost = this.offset.optimize(optimizer);\n    return new Cost(0).add(Cost.max(inputCost, offsetCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const offset = this.offset.getOptimized();\n    return new RelationalOffset(input, offset, this.ordering);\n  }\n  *evaluate(context) {\n    const { input, offset } = yield* evaluateObject({\n      input: this.input.evaluate(context),\n      offset: this.offset.evaluate(context, void 0)\n    });\n    const value = valueToNumber(offset) ?? 0;\n    if (value === 0)\n      return input;\n    return input.slice(value);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarArray.ts\nvar ScalarArray = class extends ScalarNode {\n  constructor(input, namedFields, ordering, referencedFields, referencedOuterFields) {\n    super(referencedFields, referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    this.namedFields = namedFields;\n    this.ordering = ordering;\n    this.referencedFields = referencedFields;\n    this.referencedOuterFields = referencedOuterFields;\n    __publicField(this, \"inputGroup\");\n    __publicField(this, \"definition\");\n    this.inputGroup = input.getGroup();\n    const itemDefinitions = {};\n    const namedFieldEntries = Object.entries(namedFields);\n    for (const [name, field] of namedFieldEntries) {\n      itemDefinitions[name] = field.definition;\n    }\n    this.definition = {\n      type: \"array\" /* Array */,\n      isNullable: false,\n      definition: {\n        type: \"object\" /* Object */,\n        isNullable: false,\n        definitions: itemDefinitions\n      }\n    };\n  }\n  getHash() {\n    const namedFieldIds = {};\n    const namedFieldEntries = Object.entries(this.namedFields);\n    for (const [name, field] of namedFieldEntries) {\n      namedFieldIds[name] = field.id;\n    }\n    return calculateHash(\n      \"ScalarArray\",\n      this.inputGroup.id,\n      namedFieldIds,\n      this.ordering,\n      this.referencedFields,\n      this.referencedOuterFields\n    );\n  }\n  getInputRequiredProps() {\n    const resolvedFields = new Fields();\n    const fields = Object.values(this.namedFields);\n    for (const field of fields) {\n      if (isUndefined(field.collection))\n        continue;\n      resolvedFields.add(field);\n    }\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer) {\n    const inputRequired = this.getInputRequiredProps();\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return new Cost(0).add(inputCost);\n  }\n  getOptimized() {\n    const inputRequired = this.getInputRequiredProps();\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new ScalarArray(\n      input,\n      this.namedFields,\n      this.ordering,\n      this.referencedFields,\n      this.referencedOuterFields\n    );\n  }\n  *evaluate(context, tuple) {\n    const inputContext = new Tuple();\n    if (context)\n      inputContext.merge(context);\n    if (tuple)\n      inputContext.merge(tuple);\n    const relation = yield* this.input.evaluate(inputContext);\n    const namedFieldEntries = Object.entries(this.namedFields);\n    return {\n      type: \"array\" /* Array */,\n      value: relation.tuples.map((relationTuple) => {\n        const value = {};\n        for (const [name, field] of namedFieldEntries) {\n          value[name] = relationTuple.getValue(field);\n        }\n        return {\n          type: \"object\" /* Object */,\n          value\n        };\n      })\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarCast.ts\nvar ScalarCast = class extends ScalarNode {\n  constructor(input, definition) {\n    super(input.referencedFields, input.referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    this.definition = definition;\n    assert(definition.isNullable, \"Unsupported non-nullable cast\");\n  }\n  getHash() {\n    return calculateHash(\"ScalarCast\", this.input, this.definition);\n  }\n  optimize(optimizer) {\n    return this.input.optimize(optimizer);\n  }\n  getOptimized() {\n    const input = this.input.getOptimized();\n    return new ScalarCast(input, this.definition);\n  }\n  *evaluate(context, tuple) {\n    const input = yield* this.input.evaluate(context, tuple);\n    return DatabaseValue.cast(input, this.definition);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarFlatArray.ts\nvar ScalarFlatArray = class extends ScalarNode {\n  constructor(input, field, ordering, referencedFields, referencedOuterFields) {\n    super(referencedFields, referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    this.field = field;\n    this.ordering = ordering;\n    this.referencedFields = referencedFields;\n    this.referencedOuterFields = referencedOuterFields;\n    __publicField(this, \"inputGroup\");\n    __publicField(this, \"definition\");\n    this.inputGroup = input.getGroup();\n    this.definition = {\n      type: \"array\" /* Array */,\n      isNullable: false,\n      definition: field.definition\n    };\n  }\n  getHash() {\n    return calculateHash(\n      \"ScalarFlatArray\",\n      this.inputGroup.id,\n      this.field.id,\n      this.ordering,\n      this.referencedFields,\n      this.referencedOuterFields\n    );\n  }\n  getInputRequiredProps() {\n    const resolvedFields = new Fields();\n    if (!isUndefined(this.field.collection)) {\n      resolvedFields.add(this.field);\n    }\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer) {\n    const inputRequired = this.getInputRequiredProps();\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return new Cost(0).add(inputCost);\n  }\n  getOptimized() {\n    const inputRequired = this.getInputRequiredProps();\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new ScalarFlatArray(input, this.field, this.ordering, this.referencedFields, this.referencedOuterFields);\n  }\n  *evaluate(context, tuple) {\n    const inputContext = new Tuple();\n    if (context)\n      inputContext.merge(context);\n    if (tuple)\n      inputContext.merge(tuple);\n    const relation = yield* this.input.evaluate(inputContext);\n    return {\n      type: \"array\" /* Array */,\n      value: relation.tuples.map((relationTuple) => {\n        return relationTuple.getValue(this.field);\n      })\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarIn.ts\nvar collation6 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarIn = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarIn\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarIn(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.in(left, right, collation6)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarIndexOf.ts\nvar collation7 = {\n  type: 1 /* CaseSensitive */\n};\nvar ScalarIndexOf = class extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"number\" /* Number */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarIndexOf\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new ScalarIndexOf(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"number\" /* Number */,\n      value: DatabaseValue.indexOf(source, target, collation7)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarLength.ts\nvar ScalarLength = class extends ScalarNode {\n  constructor(input) {\n    super(input.referencedFields, input.referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    __publicField(this, \"definition\", {\n      type: \"number\" /* Number */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarLength\", this.input);\n  }\n  optimize(optimizer) {\n    return this.input.optimize(optimizer);\n  }\n  getOptimized() {\n    const input = this.input.getOptimized();\n    return new ScalarLength(input);\n  }\n  *evaluate(context, tuple) {\n    const input = yield* this.input.evaluate(context, tuple);\n    return {\n      type: \"number\" /* Number */,\n      value: DatabaseValue.length(input)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNot.ts\nvar ScalarNot = class extends ScalarNode {\n  constructor(input) {\n    super(input.referencedFields, input.referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarNot\", this.input);\n  }\n  optimize(optimizer) {\n    return this.input.optimize(optimizer);\n  }\n  getOptimized() {\n    const input = this.input.getOptimized();\n    return new ScalarNot(input);\n  }\n  *evaluate(context, tuple) {\n    const input = yield* this.input.evaluate(context, tuple);\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: !valueToBoolean(input)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNotIn.ts\nvar collation8 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarNotIn = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarNotIn\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarNotIn(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: !DatabaseValue.in(left, right, collation8)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarVariable.ts\nvar ScalarVariable = class extends ScalarNode {\n  constructor(field, isOuterField) {\n    assert(field.name !== VIRTUAL_INDEX_FIELD, \"Invalid field name\");\n    const referencedFields = new Fields();\n    const referencedOuterFields = new Fields();\n    if (isOuterField) {\n      referencedOuterFields.add(field);\n    } else {\n      referencedFields.add(field);\n    }\n    super(referencedFields, referencedOuterFields, true);\n    this.field = field;\n    this.isOuterField = isOuterField;\n    __publicField(this, \"definition\");\n    this.definition = field.definition;\n  }\n  getHash() {\n    return calculateHash(\"ScalarVariable\", this.field.id, this.isOuterField);\n  }\n  optimize() {\n    return new Cost(0);\n  }\n  getOptimized() {\n    return this;\n  }\n  // biome-ignore lint/correctness/useYield: Required by the super class.\n  *evaluate(context, tuple) {\n    if (this.isOuterField) {\n      assert(context, \"Context must exist\");\n      return context.getValue(this.field);\n    }\n    assert(tuple, \"Tuple must exist\");\n    return tuple.getValue(this.field);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Normalizer.ts\nvar Normalizer = class {\n  constructor(memo2) {\n    this.memo = memo2;\n  }\n  finishRelational(node) {\n    return this.memo.addRelational(node);\n  }\n  newRelationalScan(collection) {\n    const node = new RelationalScan(collection);\n    return this.finishRelational(node);\n  }\n  newRelationalIndexLookup(index, query) {\n    const node = new RelationalIndexLookup(index, query);\n    return this.finishRelational(node);\n  }\n  newRelationalLeftJoin(left, right, constraint) {\n    const node = new RelationalLeftJoin(left, right, constraint);\n    return this.finishRelational(node);\n  }\n  newRelationalRightJoin(left, right, constraint) {\n    return this.newRelationalLeftJoin(right, left, constraint);\n  }\n  newRelationalFilter(input, predicate) {\n    if (input instanceof RelationalLeftJoin && // Check that the predicate doesn't depend on any joined field.\n    predicate.referencedFields.subsetOf(input.leftGroup.relational.outputFields)) {\n      const pushedFilter = this.newRelationalFilter(input.left, predicate);\n      return this.newRelationalLeftJoin(pushedFilter, input.right, input.constraint);\n    }\n    if (input instanceof RelationalRightJoin && // Check that the predicate doesn't depend on any joined field.\n    predicate.referencedFields.subsetOf(input.rightGroup.relational.outputFields)) {\n      const pushedFilter = this.newRelationalFilter(input.right, predicate);\n      return this.newRelationalLeftJoin(input.left, pushedFilter, input.constraint);\n    }\n    const node = new RelationalFilter(input, predicate);\n    return this.finishRelational(node);\n  }\n  newRelationalProject(input, projections, passthrough) {\n    const node = new RelationalProject(input, projections, passthrough);\n    return this.finishRelational(node);\n  }\n  newRelationalLimit(input, limit, ordering) {\n    if (input instanceof RelationalProject && // Check that the limit doesn't depend on any projected field.\n    limit.referencedFields.subsetOf(input.inputGroup.relational.outputFields) && // Check that the ordering doesn't depend on any projected field.\n    ordering.providedByFields(input.inputGroup.relational.outputFields)) {\n      const pushedLimit = this.newRelationalLimit(input.input, limit, ordering);\n      return this.newRelationalProject(pushedLimit, input.projections, input.passthrough);\n    }\n    const node = new RelationalLimit(input, limit, ordering);\n    return this.finishRelational(node);\n  }\n  newRelationalOffset(input, offset, ordering) {\n    const node = new RelationalOffset(input, offset, ordering);\n    return this.finishRelational(node);\n  }\n  finishScalar(node) {\n    const isConstant = node instanceof ScalarConstant;\n    if (!isConstant && node.isSynchronous && node.referencedFields.size === 0 && node.referencedOuterFields.size === 0) {\n      const value = node.evaluateSync();\n      return this.newScalarConstant(node.definition, value);\n    }\n    return this.memo.addScalar(node);\n  }\n  /**\n   * When we create `ScalarConstant` nodes, we always give them an unknown\n   * type definition. Before we compare them to other nodes, we need to cast\n   * them to a specific type.\n   *\n   * For example, in the following query:\n   * ```\n   * SELECT id FROM cars WHERE type = \"coupe\"\n   * ```\n   *\n   * If the `type` field is an enum, and we parse the `\"coupe\"` constant as a\n   * string, the where clause will always be false because an enum can't be\n   * equal to a string. But if we cast the string to an enum type first, the\n   * where clause will work as expected.\n   */\n  removeUnknown(node, definition) {\n    if (node.definition.type !== \"unknown\")\n      return node;\n    if (definition.type === \"unknown\")\n      return node;\n    const nullableDefinition = { ...definition, isNullable: true };\n    return this.newScalarCast(node, nullableDefinition);\n  }\n  newScalarVariable(field, isOuterField) {\n    const node = new ScalarVariable(field, isOuterField);\n    return this.finishScalar(node);\n  }\n  newScalarConstant(definition, value) {\n    const node = new ScalarConstant(definition, value);\n    return this.finishScalar(node);\n  }\n  newScalarNot(input) {\n    if (input instanceof ScalarNot) {\n      if (input.input.definition.type === \"boolean\" /* Boolean */) {\n        return input.input;\n      }\n      const definition = { type: \"boolean\" /* Boolean */, isNullable: true };\n      return this.newScalarCast(input.input, definition);\n    }\n    if (input instanceof ScalarEquals) {\n      return this.newScalarNotEquals(input.left, input.right);\n    }\n    if (input instanceof ScalarNotEquals) {\n      return this.newScalarEquals(input.left, input.right);\n    }\n    if (input instanceof ScalarLessThan) {\n      return this.newScalarGreaterThanOrEqual(input.left, input.right);\n    }\n    if (input instanceof ScalarLessThanOrEqual) {\n      return this.newScalarGreaterThan(input.left, input.right);\n    }\n    if (input instanceof ScalarGreaterThan) {\n      return this.newScalarLessThanOrEqual(input.left, input.right);\n    }\n    if (input instanceof ScalarGreaterThanOrEqual) {\n      return this.newScalarLessThan(input.left, input.right);\n    }\n    if (input instanceof ScalarAnd) {\n      const left = this.newScalarNot(input.left);\n      const right = this.newScalarNot(input.right);\n      return this.newScalarOr(left, right);\n    }\n    if (input instanceof ScalarOr) {\n      const left = this.newScalarNot(input.left);\n      const right = this.newScalarNot(input.right);\n      return this.newScalarAnd(left, right);\n    }\n    const node = new ScalarNot(input);\n    return this.finishScalar(node);\n  }\n  // TODO: Normalize `$1 AND true` to `$1`\n  // TODO: Normalize `true AND $1` to `$1`\n  // TODO: Normalize `$1 AND false` to `false`\n  // TODO: Normalize `false AND $1` to `false`\n  // TODO: Normalize `$1 AND ($2 AND $c)` to `($1 AND $2) AND $c`\n  newScalarAnd(left, right) {\n    const node = new ScalarAnd(left, right);\n    return this.finishScalar(node);\n  }\n  // TODO: Normalize `$1 OR true` to `$1`\n  // TODO: Normalize `true OR $1` to `$1`\n  // TODO: Normalize `$1 OR false` to `$1`\n  // TODO: Normalize `false OR $1` to `false`\n  // TODO: Normalize `$1 OR ($2 OR $c)` to `($1 OR $2) OR $c`\n  newScalarOr(left, right) {\n    const node = new ScalarOr(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarEquals(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarEquals(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarEquals(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarNotEquals(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarNotEquals(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarNotEquals(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarLessThan(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarGreaterThan(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarLessThan(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarLessThanOrEqual(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarGreaterThanOrEqual(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarLessThanOrEqual(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarGreaterThan(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarLessThan(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarGreaterThan(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarGreaterThanOrEqual(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarLessThanOrEqual(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarGreaterThanOrEqual(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarIn(left, right) {\n    if (right.definition.type === \"array\" /* Array */) {\n      left = this.removeUnknown(left, right.definition.definition);\n    }\n    const arrayDefinition = {\n      type: \"array\" /* Array */,\n      isNullable: true,\n      definition: left.definition\n    };\n    right = this.removeUnknown(right, arrayDefinition);\n    const node = new ScalarIn(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarNotIn(left, right) {\n    if (right.definition.type === \"array\" /* Array */) {\n      left = this.removeUnknown(left, right.definition.definition);\n    }\n    const arrayDefinition = {\n      type: \"array\" /* Array */,\n      isNullable: true,\n      definition: left.definition\n    };\n    right = this.removeUnknown(right, arrayDefinition);\n    const node = new ScalarNotIn(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarCase(input, conditions, otherwise) {\n    if (input) {\n      const castConditions = [];\n      for (const { when, then } of conditions) {\n        const castWhen = this.removeUnknown(when, input.definition);\n        const castCondition = new CaseCondition(castWhen, then);\n        castConditions.push(castCondition);\n      }\n      conditions = castConditions;\n    }\n    const node = new ScalarCase(input, conditions, otherwise);\n    return this.finishScalar(node);\n  }\n  newScalarContains(source, target) {\n    const node = new ScalarContains(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarStartsWith(source, target) {\n    const node = new ScalarStartsWith(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarEndsWith(source, target) {\n    const node = new ScalarEndsWith(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarLength(array) {\n    const node = new ScalarLength(array);\n    return this.finishScalar(node);\n  }\n  newScalarIndexOf(source, target) {\n    const node = new ScalarIndexOf(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarArray(input, namedFields, ordering, referencedFields, referencedOuterFields) {\n    const node = new ScalarArray(input, namedFields, ordering, referencedFields, referencedOuterFields);\n    return this.finishScalar(node);\n  }\n  newScalarFlatArray(input, field, ordering, referencedFields, referencedOuterFields) {\n    const node = new ScalarFlatArray(input, field, ordering, referencedFields, referencedOuterFields);\n    return this.finishScalar(node);\n  }\n  newScalarCast(input, definition) {\n    if (input.definition.type === definition.type) {\n      return input;\n    }\n    const node = new ScalarCast(input, definition);\n    return this.finishScalar(node);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/enforcer/EnforcerNode.ts\nvar EnforcerNode = class extends RelationalNode {\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/enforcer/EnforcerResolve.ts\nvar EnforcerResolve = class extends EnforcerNode {\n  constructor(input, fields) {\n    super(false);\n    this.input = input;\n    this.fields = fields;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"EnforcerResolve\", this.inputGroup.id, this.fields);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering() {\n    return true;\n  }\n  canProvideResolvedFields(resolvedFields) {\n    return resolvedFields.subsetOf(this.fields);\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields();\n    return new RequiredProps(required.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return Cost.estimate(0, 100 * KB).add(inputCost);\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new EnforcerResolve(input, this.fields);\n  }\n  *evaluate(context) {\n    const input = yield* this.input.evaluate(context);\n    assert(this.fields.subsetOf(input.fields), \"Fields can't be resolved\");\n    const collections = /* @__PURE__ */ new Set();\n    for (const field of this.fields) {\n      assert(field.collection, \"Collection required to resolve field\");\n      collections.add(field.collection);\n    }\n    for (const tuple of input.tuples) {\n      for (const field of this.fields) {\n        const value = tuple.getValue(field);\n        if ((value == null ? void 0 : value.type) !== \"richtext\" /* RichText */)\n          continue;\n        assert(value.value instanceof RichText, \"Pointer must be wrapped\");\n        void value.value.resolve();\n      }\n    }\n    const collectionItems = yield Promise.all(\n      Array.from(collections).map(async (collection) => {\n        const pointers = [];\n        for (const tuple of input.tuples) {\n          const pointer = tuple.getPointer(collection);\n          if (pointer)\n            pointers.push(pointer);\n        }\n        const items = await collection.data.resolveItems(pointers);\n        assert(items.length === pointers.length, \"Invalid number of items\");\n        return [collection, items];\n      })\n    );\n    return input.map(input.fields, (tuple) => {\n      const result = new Tuple();\n      result.merge(tuple);\n      for (const [collection, items] of collectionItems) {\n        const pointer = tuple.getPointer(collection);\n        if (!pointer)\n          continue;\n        const item = items.shift();\n        assert(item, \"Item not found\");\n        assert(item.pointer === pointer, \"Pointer mismatch\");\n        for (const field of collection.fields) {\n          const value = field.getValue(item);\n          result.addValue(field, value);\n        }\n      }\n      return result;\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/enforcer/EnforcerSort.ts\nvar collation9 = {\n  type: 0 /* CaseInsensitive */\n};\nvar EnforcerSort = class extends EnforcerNode {\n  constructor(input, ordering) {\n    super(input.isSynchronous);\n    this.input = input;\n    this.ordering = ordering;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"EnforcerSort\", this.inputGroup.id, this.ordering);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.ordering);\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    for (const { field } of this.ordering.fields) {\n      if (field.name === VIRTUAL_INDEX_FIELD)\n        continue;\n      if (isUndefined(field.collection))\n        continue;\n      resolvedFields.add(field);\n    }\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return new Cost(0).add(inputCost);\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new EnforcerSort(input, this.ordering);\n  }\n  *evaluate(context) {\n    const input = yield* this.input.evaluate(context);\n    return input.sort((leftTuple, rightTuple) => {\n      for (const { field, direction } of this.ordering.fields) {\n        const isAscending = direction === \"asc\" /* Ascending */;\n        if (field.name === VIRTUAL_INDEX_FIELD) {\n          const collection = field.collection;\n          assert(collection, \"Collection required for sorting\");\n          const leftPointer = leftTuple.getPointer(collection);\n          assert(leftPointer, \"Pointer required for sorting\");\n          const leftItem = { pointer: leftPointer, data: {} };\n          const rightPointer = rightTuple.getPointer(collection);\n          assert(rightPointer, \"Pointer required for sorting\");\n          const rightItem = { pointer: rightPointer, data: {} };\n          const order = collection.data.compareItems(leftItem, rightItem);\n          return isAscending ? order : -order;\n        }\n        const leftValue = leftTuple.getValue(field);\n        const rightValue = rightTuple.getValue(field);\n        if (DatabaseValue.equal(leftValue, rightValue, collation9)) {\n          continue;\n        }\n        if (isNull(leftValue) || DatabaseValue.lessThan(leftValue, rightValue, collation9)) {\n          return isAscending ? -1 : 1;\n        }\n        if (isNull(rightValue) || DatabaseValue.greaterThan(leftValue, rightValue, collation9)) {\n          return isAscending ? 1 : -1;\n        }\n        throw new Error(\"Invalid comparison\");\n      }\n      return 0;\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalAssert.ts\nvar collation10 = {\n  type: 1 /* CaseSensitive */\n};\n\n// ../../library/src/modules/cms/optimizer/Optimizer.ts\nvar Optimizer = class {\n  constructor(query, locale) {\n    this.query = query;\n    this.locale = locale;\n    __publicField(this, \"memo\", new Memo());\n    __publicField(this, \"normalizer\", new Normalizer(this.memo));\n    __publicField(this, \"explorer\", new Explorer(this.normalizer));\n  }\n  optimize() {\n    const builder = new Builder(this.normalizer, this.query, this.locale);\n    const outScope = builder.build();\n    const root = outScope.takeNode();\n    const group = root.getGroup();\n    const required = outScope.getRequiredProps();\n    this.optimizeGroup(group, required);\n    const optimized = group.getOptimized(required);\n    const namedFields = outScope.getNamedFields();\n    return [optimized, namedFields];\n  }\n  optimizeGroup(group, required) {\n    const winner = group.getWinner(required);\n    if (winner.node)\n      return winner.cost;\n    const normalized = group.nodes[0];\n    assert(normalized, \"Normalized node not found\");\n    this.createEnforcer(winner, normalized, required);\n    for (const node of group.nodes) {\n      if (required.canProvide(node)) {\n        const cost = node.optimize(this, required);\n        winner.update(node, cost);\n      }\n      if (required.isMinimal) {\n        this.explorer.explore(node);\n      }\n    }\n    if (false) {\n      assert(winner.node, \"Group not optimized\");\n      const cache2 = /* @__PURE__ */ new Map();\n      winner.node = new RelationalAssert(winner.node, required, cache2);\n    }\n    return winner.cost;\n  }\n  createEnforcer(winner, node, required) {\n    if (required.resolvedFields.size > 0) {\n      const enforcer = new EnforcerResolve(node, required.resolvedFields);\n      const cost = enforcer.optimize(this, required);\n      winner.update(enforcer, cost);\n    }\n    if (required.ordering.length > 0) {\n      const enforcer = new EnforcerSort(node, required.ordering);\n      const cost = enforcer.optimize(this, required);\n      winner.update(enforcer, cost);\n    }\n  }\n};\n\n// ../../library/src/modules/cms/stringifyQuery.ts\nfunction stringifyIdentifier(expression) {\n  if (expression.collection) {\n    return `\"${expression.collection}\".\"${expression.name}\"`;\n  }\n  return `\"${expression.name}\"`;\n}\nfunction stringifyLiteralValue(expression) {\n  if (typeof expression.value === \"string\") {\n    return `'${expression.value}'`;\n  }\n  return expression.value;\n}\nfunction stringifyFunctionCall(expression) {\n  return `${expression.functionName}(${expression.arguments.map((argument) => stringifyExpression(argument)).join(\", \")})`;\n}\nfunction stringifyCaseExpression(expression) {\n  let caseString = \"CASE\";\n  if (expression.value) {\n    caseString += ` ${stringifyExpression(expression.value)}`;\n  }\n  for (const condition of expression.conditions) {\n    caseString += ` WHEN ${stringifyExpression(condition.when)} THEN ${stringifyExpression(condition.then)}`;\n  }\n  if (expression.else) {\n    caseString += ` ELSE ${stringifyExpression(expression.else)}`;\n  }\n  caseString += \" END\";\n  return caseString;\n}\nfunction stringifyUnaryOperation(expression) {\n  const value = stringifyExpression(expression.value);\n  const operator = expression.operator.toUpperCase();\n  return `${operator} ${value}`;\n}\nfunction stringifyBinaryOperation(expression) {\n  const left = stringifyExpression(expression.left);\n  const right = stringifyExpression(expression.right);\n  const operator = expression.operator.toUpperCase();\n  return `${left} ${operator} ${right}`;\n}\nfunction stringifyTypeCast(expression) {\n  return `CAST(${stringifyExpression(expression.value)} as ${expression.dataType})`;\n}\nfunction stringifyExpression(expression) {\n  switch (expression.type) {\n    case \"Identifier\":\n      return stringifyIdentifier(expression);\n    case \"LiteralValue\":\n      return stringifyLiteralValue(expression);\n    case \"FunctionCall\":\n      return stringifyFunctionCall(expression);\n    case \"Case\":\n      return stringifyCaseExpression(expression);\n    case \"UnaryOperation\":\n      return stringifyUnaryOperation(expression);\n    case \"BinaryOperation\":\n      return stringifyBinaryOperation(expression);\n    case \"TypeCast\":\n      return stringifyTypeCast(expression);\n    case \"Select\":\n      return `${stringifyQuery(expression)}`;\n    default: {\n      assertNever(expression);\n    }\n  }\n}\nfunction stringifyCollection(collection) {\n  if (isDatabaseCollection(collection.data)) {\n    return \"Collection\";\n  }\n  if (collection.alias) {\n    return `\"${collection.data.displayName}\" AS \"${collection.alias}\"`;\n  }\n  return `\"${collection.data.displayName}\"`;\n}\nfunction stringifyJoin(join) {\n  let result = `${stringifyFrom(join.left)} LEFT JOIN ${stringifyFrom(join.right)}`;\n  if (join.constraint) {\n    result += ` ON ${stringifyExpression(join.constraint)}`;\n  }\n  return result;\n}\nfunction stringifyFrom(from) {\n  switch (from.type) {\n    case \"Collection\":\n      return stringifyCollection(from);\n    case \"LeftJoin\":\n      return stringifyJoin(from);\n    default:\n      assertNever(from);\n  }\n}\nfunction autoIndentSql(sql) {\n  let formattedSql = \"\";\n  const tokens = sql.split(/\\s+/u);\n  tokens.forEach((token) => {\n    if (token === \"\")\n      return;\n    if ([\"SELECT\", \"FROM\", \"WHERE\", \"ORDER\", \"LIMIT\", \"OFFSET\"].includes(token)) {\n      formattedSql += `\n${token}`;\n    } else if ([\"AND\", \"OR\"].includes(token)) {\n      formattedSql += `\n\t${token}`;\n    } else {\n      formattedSql += ` ${token}`;\n    }\n  });\n  return formattedSql.trim();\n}\nfunction stringifyQuery(query) {\n  let queryString = \"\";\n  queryString += `SELECT ${query.select.map((selectExpression) => {\n    const expressionString = stringifyExpression(selectExpression);\n    if (selectExpression.alias) {\n      return `${expressionString} AS \"${selectExpression.alias}\"`;\n    }\n    return expressionString;\n  }).join(\", \")}`;\n  queryString += ` FROM ${stringifyFrom(query.from)}`;\n  if (query.where) {\n    queryString += ` WHERE ${stringifyExpression(query.where)}`;\n  }\n  if (query.orderBy) {\n    queryString += ` ORDER BY ${query.orderBy.map((orderExpression) => {\n      return `${stringifyExpression(orderExpression)} ${orderExpression.direction ?? \"asc\" /* Ascending */}`;\n    }).join(\", \")}`;\n  }\n  if (query.limit) {\n    queryString += ` LIMIT ${stringifyExpression(query.limit)}`;\n  }\n  if (query.offset) {\n    queryString += ` OFFSET ${stringifyExpression(query.offset)}`;\n  }\n  return autoIndentSql(queryString);\n}\n\n// ../../library/src/modules/cms/QueryEngine.ts\nvar log = /* @__PURE__ */ getLogger(\"query-engine\");\nvar QueryEngine = class {\n  async query(query, locale) {\n    log.debug(`Query:\n${stringifyQuery(query)}`);\n    const optimizer = new Optimizer(query, locale);\n    const [root, namedFields] = optimizer.optimize();\n    const relation = await root.evaluateAsync();\n    const namedFieldEntries = Object.entries(namedFields);\n    const result = await Promise.all(\n      relation.tuples.map(async (tuple) => {\n        const resolvedFields = await Promise.all(\n          namedFieldEntries.map(async ([name, field]) => {\n            const value = tuple.getValue(field);\n            const resolved = await this.resolveValue(value);\n            return [name, resolved];\n          })\n        );\n        return Object.fromEntries(resolvedFields);\n      })\n    );\n    return result;\n  }\n  async resolveValue(value) {\n    if ((value == null ? void 0 : value.type) === \"richtext\" /* RichText */) {\n      assert(value.value instanceof RichText, \"Pointer must be wrapped\");\n      return value.value.resolve();\n    }\n    if ((value == null ? void 0 : value.type) === \"array\" /* Array */) {\n      return Promise.all(\n        value.value.map(async (item) => {\n          return this.resolveValue(item);\n        })\n      );\n    }\n    if ((value == null ? void 0 : value.type) === \"object\" /* Object */) {\n      const entries = Object.entries(value.value);\n      const resolvedEntries = await Promise.all(\n        entries.map(async ([key7, item]) => {\n          const resolved = await this.resolveValue(item);\n          return [key7, resolved];\n        })\n      );\n      return Object.fromEntries(resolvedEntries);\n    }\n    return (value == null ? void 0 : value.value) ?? null;\n  }\n};\n\n// ../../library/src/modules/cms/QueryCache.ts\nvar QueryCache = class {\n  constructor(queryEngine2) {\n    this.queryEngine = queryEngine2;\n    // TODO: Use an LRU cache instead.\n    __publicField(this, \"cache\", /* @__PURE__ */ new Map());\n  }\n  get(query, locale) {\n    const key7 = getCacheKey(query, locale);\n    const existing = this.cache.get(key7);\n    if (existing)\n      return existing;\n    const resolver = () => this.queryEngine.query(query, locale);\n    const value = new LazyValue(resolver);\n    this.cache.set(key7, value);\n    return value;\n  }\n};\nvar collectionIds = /* @__PURE__ */ new WeakMap();\nfunction getCollectionId(collection) {\n  const existing = collectionIds.get(collection);\n  if (existing)\n    return existing;\n  const id = Math.random().toString(16).slice(2);\n  collectionIds.set(collection, id);\n  return id;\n}\nfunction replaceCollection(_, value) {\n  if (isObject(value) && value.type === \"Collection\" && isAnyCollection(value.data)) {\n    return getCollectionId(value.data);\n  }\n  return value;\n}\nfunction getCacheKey(query, locale) {\n  const localeId = (locale == null ? void 0 : locale.id) ?? \"default\";\n  return JSON.stringify(query, replaceCollection) + localeId;\n}\n\n// ../../library/src/modules/useActiveVariantCallback.ts\nimport { useEffect as useEffect19, useRef as useRef19 } from \"react\";\nfunction rejectPending(pendingTimers, pendingPromises) {\n  pendingTimers.forEach((t) => clearTimeout(t));\n  pendingTimers.clear();\n  pendingPromises.forEach((reject) => reject == null ? void 0 : reject(\"Callback cancelled by variant change\"));\n  pendingPromises.clear();\n}\nfunction createSet() {\n  return /* @__PURE__ */ new Set();\n}\nfunction useActiveVariantCallback(baseVariant) {\n  const pendingPromises = useConstant(createSet);\n  const pendingTimers = useConstant(createSet);\n  useOnCurrentTargetChange(() => {\n    return () => rejectPending(pendingTimers, pendingPromises);\n  });\n  useEffect19(() => {\n    return () => rejectPending(pendingTimers, pendingPromises);\n  }, []);\n  useEffect19(() => {\n    rejectPending(pendingTimers, pendingPromises);\n  }, [baseVariant]);\n  return useRef19({\n    /**\n     * Create a callback that can be cancelled if the base variant changes.\n     */\n    activeVariantCallback: (callback) => async (...args) => {\n      return new Promise((resolve, reject) => {\n        pendingPromises.add(reject);\n        void callback(...args).then(resolve);\n      }).catch(() => {\n      });\n    },\n    /**\n     * Execute a callback after a defined period of time. The callback will not\n     * be called if pending events are cancelled because the timeout will be\n     * cancelled.\n     */\n    delay: async (callback, msDelay) => {\n      await new Promise((resolve) => {\n        pendingTimers.add(globalThis.setTimeout(() => resolve(true), msDelay));\n      });\n      callback();\n    }\n  }).current;\n}\nfunction useActiveTargetCallback() {\n  const value = useActiveVariantCallback(void 0);\n  return useRef19({\n    activeTargetCallback: value.activeVariantCallback,\n    delay: value.delay\n  }).current;\n}\n\n// ../../library/src/modules/useAddVariantProps.ts\nimport React67 from \"react\";\nfunction useAddVariantProps(baseVariant, gestureVariant, variantProps) {\n  return React67.useCallback(\n    (id) => {\n      var _a, _b, _c;\n      if (!variantProps)\n        return {};\n      if (!baseVariant)\n        return {};\n      if (gestureVariant) {\n        return Object.assign({}, (_a = variantProps[baseVariant]) == null ? void 0 : _a[id], (_b = variantProps[gestureVariant]) == null ? void 0 : _b[id]);\n      }\n      return ((_c = variantProps[baseVariant]) == null ? void 0 : _c[id]) || {};\n    },\n    [baseVariant, gestureVariant, variantProps]\n  );\n}\n\n// ../../library/src/modules/useBreakpointVariants.ts\nimport { startTransition as startTransition7, useCallback as useCallback14, useContext as useContext23, useEffect as useEffect20, useRef as useRef20 } from \"react\";\nfunction createMediaQueriesFromBreakpoints(breakpoints) {\n  const mediaQueries = {};\n  for (const [variant, query] of Object.entries(breakpoints)) {\n    const { min = 0, max } = query;\n    const mediaQuery = [];\n    if (min)\n      mediaQuery.push(`(min-width: ${min}px)`);\n    if (max)\n      mediaQuery.push(`(max-width: ${max}px)`);\n    if (mediaQuery.length)\n      mediaQueries[variant] = mediaQuery.join(\" and \");\n  }\n  return mediaQueries;\n}\nfunction activeMediaQueryFromWindow(mediaQueries) {\n  for (const [variant, query] of Object.entries(mediaQueries)) {\n    const mql = safeWindow.matchMedia(query);\n    if (mql.matches)\n      return variant;\n  }\n}\nfunction activeBreakpointHashesFromWindow(breakpoints) {\n  var _a;\n  const matches = [];\n  for (const { hash: hash2, mediaQuery } of breakpoints) {\n    if (!mediaQuery)\n      continue;\n    const mql = safeWindow.matchMedia(mediaQuery);\n    if (mql.matches)\n      matches.push(hash2);\n  }\n  if (matches.length > 0)\n    return matches;\n  const defaultHash = (_a = breakpoints[0]) == null ? void 0 : _a.hash;\n  if (!defaultHash)\n    return void 0;\n  return [defaultHash];\n}\nfunction useHydratedBreakpointVariants(initial, mediaQueries, hydratedWithInitial = true) {\n  const isInitialNavigation = useContext23(IsInitialNavigationContext);\n  const isStaticRenderer2 = useIsStaticRenderer();\n  const usesMediaQueries = !isStaticRenderer2 && isBrowser2();\n  const baseVariant = useRef20(usesMediaQueries ? activeMediaQueryFromWindow(mediaQueries) ?? initial : initial);\n  const basePropsVariant = useRef20(hydratedWithInitial && isInitialNavigation ? initial : baseVariant.current);\n  const forceUpdate = useForceUpdate2();\n  const instantTransition = useInstantTransition();\n  const setActiveVariantInstant = useCallback14(\n    (variant) => {\n      if (variant !== baseVariant.current || variant !== basePropsVariant.current) {\n        let updateStateAndRerender2 = function() {\n          baseVariant.current = basePropsVariant.current = variant;\n          startTransition7(() => {\n            forceUpdate();\n          });\n        };\n        var updateStateAndRerender = updateStateAndRerender2;\n        if (isStaticRenderer2) {\n          updateStateAndRerender2();\n        } else {\n          instantTransition(() => {\n            updateStateAndRerender2();\n          });\n        }\n      }\n    },\n    [instantTransition, forceUpdate, isStaticRenderer2]\n  );\n  useIsomorphicLayoutEffect2(() => {\n    if (!isStaticRenderer2)\n      return;\n    setActiveVariantInstant(initial);\n  }, [initial, isStaticRenderer2, setActiveVariantInstant]);\n  useIsomorphicLayoutEffect2(() => {\n    if (!hydratedWithInitial || isInitialNavigation !== true)\n      return;\n    setActiveVariantInstant(baseVariant.current);\n  }, []);\n  useEffect20(() => {\n    const callbacks = [];\n    for (const [variant, query] of Object.entries(mediaQueries)) {\n      const mql = safeWindow.matchMedia(query);\n      const callback = (event) => {\n        if (event.matches)\n          setActiveVariantInstant(variant);\n      };\n      addMQLCallback(mql, callback);\n      callbacks.push([mql, callback]);\n    }\n    return () => callbacks.forEach(([mql, callback]) => removeMQLCallback(mql, callback));\n  }, [mediaQueries, setActiveVariantInstant]);\n  return [baseVariant.current, basePropsVariant.current];\n}\nfunction addMQLCallback(mql, callback) {\n  if (mql.addEventListener) {\n    mql.addEventListener(\"change\", callback);\n  } else {\n    mql.addListener(callback);\n  }\n}\nfunction removeMQLCallback(mql, callback) {\n  if (mql.removeEventListener) {\n    mql.removeEventListener(\"change\", callback);\n  } else {\n    mql.removeListener(callback);\n  }\n}\nfunction useBreakpointVariants(initial, _width, breakpoints) {\n  const mediaQueries = useConstant(() => createMediaQueriesFromBreakpoints(breakpoints));\n  const [initialVariant] = useHydratedBreakpointVariants(initial, mediaQueries, true);\n  return initialVariant;\n}\nfunction removeHiddenBreakpointLayers(_initial, _mediaQueries, _variantClassNames) {\n}\nvar framerBreakpointCSSSelector = \"style[data-framer-breakpoint-css]\";\nfunction requestIdleCallbackFallback(callback) {\n  setTimeout(callback, 1);\n}\nfunction removeHiddenBreakpointLayersV2(breakpoints) {\n  var _a, _b, _c, _d;\n  const suspenseBoundaries = /* @__PURE__ */ new Set();\n  const activeBreakpointHashes = activeBreakpointHashesFromWindow(breakpoints);\n  if (activeBreakpointHashes) {\n    for (const hash2 of activeBreakpointHashes) {\n      for (const hiddenLayer of document.querySelectorAll(\".hidden-\" + hash2)) {\n        if (isSuspenseBoundaryStart(hiddenLayer.previousSibling)) {\n          suspenseBoundaries.add(hiddenLayer.previousSibling);\n        }\n        (_a = hiddenLayer.parentNode) == null ? void 0 : _a.removeChild(hiddenLayer);\n      }\n    }\n  }\n  const requestIdleCallback2 = safeWindow.requestIdleCallback ?? requestIdleCallbackFallback;\n  requestIdleCallback2(() => {\n    var _a2;\n    (_a2 = document.querySelector(framerBreakpointCSSSelector)) == null ? void 0 : _a2.remove();\n  });\n  for (const ssrVariant of document.querySelectorAll(\".ssr-variant:empty\")) {\n    if (isSuspenseBoundaryStart(ssrVariant.previousSibling)) {\n      suspenseBoundaries.add(ssrVariant.previousSibling);\n    }\n    (_b = ssrVariant.parentNode) == null ? void 0 : _b.removeChild(ssrVariant);\n  }\n  for (const suspenseBoundary of suspenseBoundaries) {\n    if (isSuspenseBoundaryEnd(suspenseBoundary.nextSibling)) {\n      (_c = suspenseBoundary.parentNode) == null ? void 0 : _c.removeChild(suspenseBoundary.nextSibling);\n      (_d = suspenseBoundary.parentNode) == null ? void 0 : _d.removeChild(suspenseBoundary);\n    }\n  }\n}\nfunction isSuspenseBoundaryStart(node) {\n  return (node == null ? void 0 : node.nodeType) === Node.COMMENT_NODE && node.textContent === \"$\";\n}\nfunction isSuspenseBoundaryEnd(node) {\n  return (node == null ? void 0 : node.nodeType) === Node.COMMENT_NODE && node.textContent === \"/$\";\n}\n\n// ../../library/src/modules/useDataRecord.ts\nimport { useMemo as useMemo13 } from \"react\";\nfunction useDataRecord(collection, variables) {\n  return useMemo13(() => {\n    if (!Array.isArray(collection)) {\n      return null;\n    }\n    if (!variables) {\n      return null;\n    }\n    const pageRecord = collection.find((record) => {\n      return Object.entries(variables).every(([key7, value]) => {\n        const recordValue = record[key7];\n        if (value === void 0 || recordValue === void 0 || isObject(value) || isObject(recordValue)) {\n          return false;\n        }\n        return String(value) === String(recordValue);\n      });\n    });\n    return pageRecord ?? null;\n  }, [collection, variables]);\n}\n\n// ../../library/src/modules/useDynamicRefs.ts\nimport React68, { createRef, useMemo as useMemo14 } from \"react\";\nfunction useDynamicRefs() {\n  const map2 = useConstant(() => /* @__PURE__ */ new Map());\n  return React68.useCallback((key7) => {\n    const existing = map2.get(key7);\n    if (existing)\n      return existing;\n    const ref = createRef();\n    map2.set(key7, ref);\n    return ref;\n  }, []);\n}\nvar map = /* @__PURE__ */ new Map();\nfunction useSiteRefs() {\n  const route = useCurrentRoute();\n  const path = useMemo14(() => {\n    return getPathForRoute(route, {\n      currentRoutePath: route == null ? void 0 : route.path,\n      currentPathVariables: route == null ? void 0 : route.pathVariables,\n      preserveQueryParams: false,\n      relative: false,\n      siteCanonicalURL: void 0\n    });\n  }, [route]);\n  return React68.useCallback(\n    (key7) => {\n      if (!key7)\n        return;\n      const computedKey = `${path}-${key7}`;\n      const existing = map.get(computedKey);\n      if (existing)\n        return existing;\n      const ref = createRef();\n      map.set(computedKey, ref);\n      return ref;\n    },\n    [path]\n  );\n}\n\n// ../../library/src/modules/useGamepad.ts\nimport React69 from \"react\";\nfunction isFramerGamepadKeydownData(value) {\n  return isObject(value) && value.mapping !== void 0;\n}\nfunction gamepadInputsHaveChanged(previous, current) {\n  if (previous.length !== current.length)\n    return true;\n  if (!previous.every((item, i) => current[i] === item))\n    return true;\n  return false;\n}\nfunction createGamepadPoller() {\n  const handlers = /* @__PURE__ */ new Set();\n  let isConnected = false;\n  let isPolling = null;\n  let lastKeys = [];\n  const startPolling = () => {\n    const input = getGamepadInputs();\n    if (!input)\n      return;\n    const { gamepad, inputs } = input;\n    const { mapping, id } = gamepad;\n    if (gamepadInputsHaveChanged(lastKeys, inputs))\n      handlers.forEach((handler) => handler({ inputs, mapping, id }));\n    lastKeys = inputs;\n    isPolling = safeWindow.requestAnimationFrame(startPolling);\n  };\n  const handleConnection = () => {\n    if (isConnected || isPolling)\n      return;\n    startPolling();\n    isConnected = true;\n  };\n  const stopPolling = () => {\n    if (!isPolling)\n      return;\n    safeWindow.cancelAnimationFrame(isPolling);\n    isPolling = null;\n  };\n  const handleDisconnection = () => {\n    if (!isConnected)\n      return;\n    stopPolling();\n    isConnected = false;\n  };\n  const setupAndStartPolling = () => {\n    if (isPolling)\n      return;\n    const gamepad = getGamepadInputs();\n    if (!gamepad) {\n      safeWindow.addEventListener(\"gamepadconnected\", handleConnection);\n      return;\n    }\n    safeWindow.addEventListener(\"gamepaddisconnected\", handleDisconnection);\n    isConnected = true;\n    startPolling();\n  };\n  const cleanupAndStopPolling = () => {\n    if (!isPolling)\n      return;\n    safeWindow.removeEventListener(\"gamepadconnected\", handleConnection);\n    safeWindow.removeEventListener(\"gamepaddisconnected\", handleDisconnection);\n    stopPolling();\n  };\n  return {\n    register(callback) {\n      if (handlers.size === 0)\n        setupAndStartPolling();\n      handlers.add(callback);\n    },\n    unregister(callback) {\n      handlers.delete(callback);\n      if (handlers.size === 0)\n        cleanupAndStopPolling();\n    }\n  };\n}\nvar gamepadPoller = /* @__PURE__ */ createGamepadPoller();\nvar GamepadContext = /* @__PURE__ */ React69.createContext(gamepadPoller);\nfunction getGamepadInputs() {\n  let firstConnectedGamepad = null;\n  const gamepads = navigator.getGamepads();\n  for (const gamepad of gamepads) {\n    if (!gamepad)\n      continue;\n    if (!firstConnectedGamepad)\n      firstConnectedGamepad = gamepad;\n    const inputs = [...scanPressedAxis(gamepad), ...scanPressedButtons(gamepad)];\n    if (inputs.length > 0)\n      return { gamepad, inputs };\n  }\n  if (firstConnectedGamepad)\n    return { gamepad: firstConnectedGamepad, inputs: [] };\n  return null;\n}\nfunction scanPressedAxis(gamepad) {\n  const axes = [];\n  for (const [idx, axis] of gamepad.axes.entries()) {\n    if (idx > 3)\n      continue;\n    if (axis <= -0.5)\n      axes.push(`Axis ${idx}-`);\n    if (axis > 0.5)\n      axes.push(`Axis ${idx}+`);\n  }\n  return axes;\n}\nfunction scanPressedButtons(gamepad) {\n  const buttons = [];\n  for (const [idx, button] of gamepad.buttons.entries()) {\n    if (isButtonPressed(button))\n      buttons.push(`Button ${idx}`);\n  }\n  return buttons;\n}\nfunction isButtonPressed(button) {\n  return button.pressed === true || button.value > 0;\n}\nfunction useGamepad(input, callback, { mapping, on } = {}) {\n  const context = React69.useContext(GamepadContext);\n  const settings = useConstant(() => ({\n    mapping: mapping ?? \"standard\",\n    on: on ?? \"keydown\"\n  }));\n  const stateRef = React69.useRef({\n    pressed: false,\n    handler: callback\n  });\n  const cb = React69.useCallback(\n    (gamepad) => {\n      const { pressed, handler } = stateRef.current;\n      if (gamepad.inputs.includes(input) && settings.mapping === gamepad.mapping) {\n        settings.on === \"keydown\" && handler();\n        stateRef.current.pressed = true;\n      } else if (pressed) {\n        settings.on === \"keyup\" && handler();\n        stateRef.current.pressed = false;\n      }\n    },\n    [input, settings]\n  );\n  useOnCurrentTargetChange((isInTarget, isOverlayed) => {\n    const isActive = isInTarget && !isOverlayed;\n    if (isActive) {\n      context.register(cb);\n    } else {\n      context.unregister(cb);\n    }\n    return () => context.unregister(cb);\n  }, []);\n  React69.useEffect(() => {\n    return () => context.unregister(cb);\n  }, [cb, context]);\n  React69.useEffect(() => {\n    stateRef.current.handler = callback;\n  }, [callback]);\n}\n\n// ../../library/src/modules/useHotkey.ts\nimport React70 from \"react\";\nvar modifierDefaults = {\n  altKey: false,\n  ctrlKey: false,\n  metaKey: false,\n  shiftKey: false\n};\nfunction createShortcutDefinition(shortcut) {\n  const keys3 = shortcut.split(\"+\");\n  const key7 = keys3.pop();\n  if (!key7)\n    return void 0;\n  const modifiers = {};\n  for (const modifier of keys3) {\n    modifiers[`${modifier}Key`] = true;\n  }\n  return {\n    ...modifierDefaults,\n    ...modifiers,\n    key: key7\n  };\n}\nfunction useHotkey(shortcut, callback) {\n  const inTarget = React70.useRef(true);\n  const shortcutDefinition = useConstant(() => createShortcutDefinition(shortcut));\n  useOnCurrentTargetChange((isCurrentTarget, isOverlayed) => {\n    inTarget.current = isCurrentTarget && !isOverlayed;\n    return () => inTarget.current = false;\n  });\n  const eventHandler = React70.useCallback(\n    (event) => {\n      if (!shortcutDefinition)\n        return;\n      if (!inTarget.current)\n        return;\n      if (!Object.keys(shortcutDefinition).every((key7) => shortcutDefinition[key7] === asRecord(event)[key7]))\n        return;\n      event.preventDefault();\n      callback();\n    },\n    [shortcutDefinition, callback]\n  );\n  React70.useEffect(() => {\n    document.addEventListener(\"keydown\", eventHandler);\n    return () => document.removeEventListener(\"keydown\", eventHandler);\n  }, [eventHandler]);\n}\n\n// ../../library/src/modules/useNavigate.tsx\nfunction useNavigate() {\n  const { navigate } = useRouter();\n  const onCanvas = useIsOnFramerCanvas();\n  if (!navigate)\n    return () => {\n    };\n  return (target) => {\n    if (onCanvas)\n      return;\n    navigate(target);\n    return false;\n  };\n}\n\n// ../../library/src/modules/useOnVariantChange.ts\nimport React71 from \"react\";\nfunction callbackForVariant(map2, variant) {\n  if (map2[variant])\n    return map2[variant];\n  if (variant in map2)\n    return void 0;\n  return map2.default;\n}\nfunction useOnVariantChange(variant, callbackMap) {\n  const isRenderingStaticContent = isStaticRenderer();\n  if (isRenderingStaticContent)\n    return;\n  const isActiveScreenRef = React71.useRef(true);\n  const callbackMapRef = React71.useRef(callbackMap);\n  useOnCurrentTargetChange((isCurrent, isOverlayed) => {\n    const isActiveScreen = isCurrent && !isOverlayed;\n    if (!isActiveScreenRef.current && isActiveScreen) {\n      const callback = callbackForVariant(callbackMapRef.current, variant);\n      if (callback)\n        callback();\n    }\n    isActiveScreenRef.current = isActiveScreen;\n  }, []);\n  React71.useEffect(() => {\n    if (isActiveScreenRef.current) {\n      const callback = callbackForVariant(callbackMapRef.current, variant);\n      if (callback)\n        callback();\n    }\n  }, [variant]);\n}\nfunction useOnAppear(callback) {\n  useOnVariantChange(\"default\", { default: callback });\n}\n\n// ../../library/src/modules/useOverlayState.tsx\nimport React72 from \"react\";\nasync function setOverflow(blockDocumentScrolling, show, yieldBefore2 = true) {\n  if (blockDocumentScrolling === false)\n    return;\n  if (yieldBefore2)\n    await interactionResponse();\n  frame.render(() => {\n    const htmlStyle = document.documentElement.style;\n    if (show) {\n      htmlStyle.setProperty(\"overflow\", \"hidden\");\n    } else {\n      htmlStyle.removeProperty(\"overflow\");\n    }\n  });\n}\nfunction useOverlayState({ blockDocumentScrolling = true } = {}) {\n  const [showOverlay, setShowOverlay] = React72.useState(false);\n  const callback = React72.useCallback(\n    (show) => {\n      setShowOverlay(show);\n      void setOverflow(blockDocumentScrolling, show);\n    },\n    [blockDocumentScrolling]\n  );\n  React72.useEffect(\n    () => () => {\n      void setOverflow(blockDocumentScrolling, false, false);\n    },\n    [blockDocumentScrolling]\n  );\n  return [showOverlay, callback];\n}\n\n// ../../library/src/modules/usePrototypeNavigate.tsx\nimport React73 from \"react\";\n\n// ../../library/src/router/isRoute.ts\nvar key4 = \"page\";\nfunction isRoute(route) {\n  return isObject(route) && key4 in route && route.page !== void 0;\n}\n\n// ../../library/src/modules/usePrototypeNavigate.tsx\nasync function componentForRoute(route) {\n  if (!isRoute(route))\n    return;\n  const { page: routeComponent } = route;\n  if (!routeComponent)\n    return;\n  if (React73.isValidElement(routeComponent))\n    return routeComponent;\n  if (withPreload(routeComponent))\n    await routeComponent.preload();\n  return React73.createElement(routeComponent, { key: route.path });\n}\nvar preloadKey2 = \"preload\";\nfunction withPreload(component) {\n  return !!component && isObject(component) && preloadKey2 in component;\n}\nfunction usePrototypeNavigate({ preload } = {}) {\n  const navigation = useNavigation();\n  const { getRoute } = useRouter();\n  const onCanvas = useIsOnFramerCanvas();\n  React73.useEffect(() => {\n    if (!navigation || onCanvas)\n      return;\n    preload == null ? void 0 : preload.forEach((componentOrRoute) => {\n      let component;\n      if (isString(componentOrRoute)) {\n        const route = getRoute == null ? void 0 : getRoute(componentOrRoute);\n        if (isRoute(route)) {\n          component = route.page;\n        }\n      } else {\n        component = componentOrRoute;\n      }\n      if (component && withPreload(component))\n        void component.preload();\n    });\n  }, []);\n  if (!navigation)\n    return () => {\n    };\n  return async (target, options = {}) => {\n    if (onCanvas)\n      return;\n    if (target === \"previous\") {\n      navigation.goBack();\n      return false;\n    }\n    const Component18 = typeof target === \"string\" ? await componentForRoute(getRoute == null ? void 0 : getRoute(target)).catch(() => {\n    }) : React73.isValidElement(target) ? target : null;\n    if (!Component18)\n      return;\n    const { appearsFrom, backdropColor, animation } = options;\n    const transitionType = options.transition || \"instant\";\n    switch (transitionType) {\n      case \"instant\":\n        navigation.instant(Component18);\n        break;\n      case \"fade\":\n        navigation.fade(Component18, { animation });\n        break;\n      case \"push\":\n        navigation.push(Component18, { appearsFrom, animation });\n        break;\n      case \"flip\":\n        navigation.flip(Component18, { appearsFrom, animation });\n        break;\n      case \"magicMotion\":\n        navigation.magicMotion(Component18, { animation });\n        break;\n      case \"modal\":\n        navigation.modal(Component18, { backdropColor, animation });\n        break;\n      case \"overlay\":\n        navigation.overlay(Component18, { appearsFrom, backdropColor, animation });\n        break;\n    }\n    return false;\n  };\n}\n\n// ../../library/src/modules/useQueryData.ts\nimport { useCallback as useCallback15 } from \"react\";\nfunction use(promise) {\n  throw promise;\n}\nvar queryEngine = /* @__PURE__ */ new QueryEngine();\nvar queryCache = /* @__PURE__ */ new QueryCache(queryEngine);\nfunction useQueryData(query) {\n  const { activeLocale } = useLocaleInfo();\n  const cached = queryCache.get(query, activeLocale);\n  const promise = cached.preload();\n  if (promise)\n    use(promise);\n  return cached.read();\n}\nfunction useQueryCount(query) {\n  const countQuery = { ...query, select: [] };\n  const collection = useQueryData(countQuery);\n  return collection.length;\n}\nfunction usePreloadQuery() {\n  const { activeLocale } = useLocaleInfo();\n  return useCallback15(\n    async (query) => {\n      return queryCache.get(query, activeLocale).readAsync();\n    },\n    [activeLocale]\n  );\n}\nfunction getWhereExpressionFromPathVariables(pathVariables, collection) {\n  const entries = Object.entries(pathVariables ?? {}).filter(([, value]) => {\n    if (isUndefined(value))\n      return false;\n    if (isObject(value))\n      return false;\n    return true;\n  });\n  const expressions = entries.map(\n    ([name, value]) => ({\n      type: \"BinaryOperation\",\n      operator: \"==\" /* Equals */,\n      left: {\n        type: \"TypeCast\",\n        value: {\n          type: \"Identifier\",\n          name,\n          collection\n        },\n        dataType: \"STRING\" /* String */\n      },\n      right: {\n        type: \"LiteralValue\",\n        value: String(value)\n      }\n    })\n  );\n  if (expressions.length === 0) {\n    return {\n      type: \"LiteralValue\",\n      value: false\n    };\n  }\n  return expressions.reduce(\n    (result, expression) => ({\n      type: \"BinaryOperation\",\n      operator: \"and\" /* And */,\n      left: result,\n      right: expression\n    })\n  );\n}\n\n// ../../library/src/components/utils/useLoadMorePaginatedQuery.tsx\nimport { useMemo as useMemo15 } from \"react\";\n\n// ../../library/src/components/utils/useLoadMorePagination.tsx\nimport { startTransition as startTransition8, useCallback as useCallback16, useEffect as useEffect21, useState as useState7 } from \"react\";\nfunction useLoadMorePagination(totalSize, pageSize, hash2, paginateWithSuspendedLoadingState = false) {\n  const totalPages = Math.ceil(totalSize / pageSize);\n  const [paginationInfo, setPaginationInfo] = useState7(() => {\n    var _a, _b, _c, _d;\n    const currentPage = ((_d = (_c = (_b = (_a = globalThis == null ? void 0 : globalThis.history) == null ? void 0 : _a.state) == null ? void 0 : _b.paginationInfo) == null ? void 0 : _c[hash2]) == null ? void 0 : _d.currentPage) ?? 1;\n    return { currentPage, totalPages, isLoading: false };\n  });\n  useEffect21(() => {\n    startTransition8(() => {\n      setPaginationInfo((current) => {\n        if (current.totalPages === totalPages)\n          return current;\n        return { ...current, totalPages };\n      });\n    });\n  }, [totalPages]);\n  useEffect21(() => {\n    pushLoadMoreHistory(hash2, paginationInfo);\n  }, [hash2, paginationInfo]);\n  const onCanvas = useIsOnFramerCanvas();\n  const loadMore = useCallback16(() => {\n    if (onCanvas)\n      return;\n    if (paginationInfo.currentPage >= paginationInfo.totalPages)\n      return;\n    if (!paginateWithSuspendedLoadingState) {\n      startTransition8(() => {\n        setPaginationInfo((info) => ({\n          ...info,\n          currentPage: Math.min(info.currentPage + 1, info.totalPages),\n          isLoading: false\n        }));\n      });\n      return;\n    }\n    setPaginationInfo((info) => ({\n      ...info,\n      isLoading: true\n    }));\n    requestAnimationFrame(() => {\n      setPaginationInfo((info) => ({\n        ...info,\n        currentPage: Math.min(info.currentPage + 1, info.totalPages),\n        isLoading: false\n      }));\n    });\n  }, [onCanvas, paginationInfo.currentPage, paginationInfo.totalPages, paginateWithSuspendedLoadingState]);\n  return { paginationInfo, loadMore };\n}\n\n// ../../library/src/components/utils/useLoadMorePaginatedQuery.tsx\nfunction useLoadMorePaginatedQuery(query, pageSize, hash2) {\n  const count = useQueryCount(query);\n  const { paginationInfo, loadMore } = useLoadMorePagination(count, pageSize, hash2, true);\n  const paginatedQuery = useMemo15(() => {\n    let limit = pageSize * paginationInfo.currentPage;\n    if (query.limit) {\n      if (query.limit.type !== \"LiteralValue\" || typeof query.limit.value !== \"number\") {\n        throw new Error(\"Unexpected type for query limit\");\n      }\n      limit = Math.min(limit, query.limit.value);\n    }\n    return { ...query, limit: { type: \"LiteralValue\", value: limit } };\n  }, [query, pageSize, paginationInfo]);\n  return { paginatedQuery, paginationInfo, loadMore };\n}\n\n// ../../library/src/modules/useVariantState.ts\nimport { startTransition as startTransition9, useCallback as useCallback17, useEffect as useEffect22, useMemo as useMemo16, useRef as useRef21 } from \"react\";\nfunction createGestureVariant(variant, type) {\n  return `${variant}-${type}`;\n}\nfunction nextVariant(allVariants, currentVariant) {\n  const index = allVariants.indexOf(currentVariant);\n  let nextIndex = index + 1;\n  if (nextIndex >= allVariants.length) {\n    nextIndex = 0;\n  }\n  const nextVariant2 = allVariants[nextIndex];\n  assert(nextVariant2 !== void 0, \"nextVariant should be defined\");\n  return nextVariant2;\n}\nfunction activeTransition(transitions, variant) {\n  if (!transitions)\n    return void 0;\n  if (variant) {\n    const variantTransition = transitions[variant];\n    if (variantTransition)\n      return variantTransition;\n  }\n  return transitions.default;\n}\nvar VariantSelector = /* @__PURE__ */ ((VariantSelector2) => {\n  VariantSelector2[\"Variant\"] = \"v\";\n  return VariantSelector2;\n})(VariantSelector || {});\nfunction getGesture(enabledGestures, isHovered, isPressed, isLoading, isError) {\n  const { hover, pressed, loading, error } = enabledGestures || {};\n  if (error && isError)\n    return \"error\";\n  if (loading && isLoading)\n    return \"loading\";\n  if (pressed && isPressed)\n    return \"pressed\";\n  if (hover && isHovered)\n    return \"hover\";\n}\nfunction createVariantClassName(baseVariant, variantClassNames) {\n  const mappedClassName = variantClassNames[baseVariant];\n  if (mappedClassName)\n    return mappedClassName;\n  return `framer-${\"v\" /* Variant */}-${baseVariant}`;\n}\nfunction safeBaseVariant(targetVariant, fallbackVariant, validBaseVariants) {\n  if (!targetVariant)\n    return fallbackVariant;\n  if (validBaseVariants.has(targetVariant))\n    return targetVariant;\n  return fallbackVariant;\n}\nvar CycleVariantState = /* @__PURE__ */ Symbol(\"cycle\");\nfunction useRunCallbackIfPageIsVisible() {\n  const listenerRef = useRef21();\n  const callbackRef = useRef21();\n  const clean = useCallback17(() => {\n    if (!listenerRef.current)\n      return;\n    document.removeEventListener(\"visibilitychange\", listenerRef.current);\n    listenerRef.current = void 0;\n    callbackRef.current = void 0;\n  }, []);\n  useEffect22(() => {\n    return () => {\n      clean();\n    };\n  }, [clean]);\n  return useCallback17(\n    (callback) => {\n      if (!document.hidden) {\n        callback();\n        clean();\n        return;\n      }\n      callbackRef.current = callback;\n      if (listenerRef.current)\n        return;\n      const listenerFn = () => {\n        var _a;\n        if (document.hidden)\n          return;\n        (_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef);\n        clean();\n      };\n      listenerRef.current = listenerFn;\n      document.addEventListener(\"visibilitychange\", listenerFn);\n    },\n    [clean]\n  );\n}\nfunction useRunCallbackIfElementIsInView() {\n  const observerRef = useRef21(null);\n  const isInViewRef = useRef21(false);\n  const callbackRef = useRef21();\n  useEffect22(() => {\n    return () => {\n      var _a;\n      (_a = observerRef.current) == null ? void 0 : _a.disconnect();\n      callbackRef.current = void 0;\n      observerRef.current = null;\n    };\n  }, []);\n  return useCallback17((callback, ref) => {\n    if (!(ref == null ? void 0 : ref.current) || isInViewRef.current) {\n      callback();\n      return;\n    }\n    callbackRef.current = callback;\n    if (observerRef.current)\n      return;\n    const observer = new IntersectionObserver((entries) => {\n      var _a;\n      let isIntersecting = false;\n      for (let i = 0; i < entries.length; ++i) {\n        const entry = entries[i];\n        isIntersecting = entry.isIntersecting;\n      }\n      isInViewRef.current = isIntersecting;\n      if (!isIntersecting)\n        return;\n      (_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef);\n    });\n    observerRef.current = observer;\n    observer.observe(ref.current);\n  }, []);\n}\nfunction useUpdateIfVisible(ref) {\n  const runUpdateIfPageIsVisible = useRunCallbackIfPageIsVisible();\n  const runUpdateIfElementIsInView = useRunCallbackIfElementIsInView();\n  return useCallback17(\n    (callback, checkViewport = false) => {\n      if (isBot) {\n        callback();\n        return;\n      }\n      const runUpdate = checkViewport && ref ? () => runUpdateIfElementIsInView(callback, ref) : callback;\n      runUpdateIfPageIsVisible(runUpdate);\n    },\n    [runUpdateIfPageIsVisible, runUpdateIfElementIsInView, ref]\n  );\n}\nfunction useVariantState({\n  variant,\n  defaultVariant: externalDefaultVariant,\n  transitions: externalTransitions,\n  enabledGestures: externalEnabledGestures,\n  cycleOrder: externalCycleOrder = [],\n  variantProps = {},\n  variantClassNames = {},\n  ref\n}) {\n  const forceUpdate = useForceUpdate2();\n  const isCanvas = useIsOnFramerCanvas();\n  const validBaseVariants = useConstant(() => new Set(externalCycleOrder));\n  const { wrapUpdatesInTransitions, pauseOffscreen: pauseOffscreenFeatureOn } = useLibraryFeatures();\n  const update = useCallback17(\n    (useTransition) => {\n      if (useTransition) {\n        startTransition9(() => void forceUpdate());\n        return;\n      }\n      forceUpdate();\n    },\n    [forceUpdate]\n  );\n  const runUpdateIfVisible = useUpdateIfVisible(ref);\n  const internalState = useRef21({\n    isHovered: false,\n    isPressed: false,\n    isError: false,\n    hasPressedVariants: true,\n    baseVariant: safeBaseVariant(variant, externalDefaultVariant, validBaseVariants),\n    lastVariant: variant,\n    gestureVariant: void 0,\n    loadedBaseVariant: {},\n    // When used in generated components, these are static values defined\n    // outside of the component function that also need to not result in\n    // memoized values being recalculated, so we dump them into the ref.\n    defaultVariant: externalDefaultVariant,\n    enabledGestures: externalEnabledGestures,\n    cycleOrder: externalCycleOrder,\n    transitions: externalTransitions\n  });\n  const resolveNextVariant = useCallback17((targetBaseVariant) => {\n    const { isHovered: isHovered2, isPressed: isPressed2, isError: isError2, enabledGestures: enabledGestures2, defaultVariant: defaultVariant2 } = internalState.current;\n    const nextBaseVariant = safeBaseVariant(targetBaseVariant, defaultVariant2, validBaseVariants);\n    const gesture = getGesture(enabledGestures2 == null ? void 0 : enabledGestures2[nextBaseVariant], isHovered2, isPressed2, false, isError2);\n    const nextGestureVariant = gesture ? createGestureVariant(nextBaseVariant, gesture) : void 0;\n    return [nextBaseVariant, nextGestureVariant];\n  }, []);\n  const updateIfNeeded = useCallback17(\n    (baseVariant2, gestureVariant2, defaultVariant2, nextBaseVariant, isError2 = false, checkViewport = false, highPriority = false, clearError = false) => {\n      const [nextBase, nextGesture] = resolveNextVariant(nextBaseVariant);\n      if (nextBase === baseVariant2 && nextGesture === gestureVariant2)\n        return;\n      if (clearError)\n        internalState.current.isError = false;\n      internalState.current.baseVariant = nextBase || defaultVariant2;\n      internalState.current.gestureVariant = nextGesture;\n      runUpdateIfVisible(\n        () => update(wrapUpdatesInTransitions && !highPriority || isError2),\n        pauseOffscreenFeatureOn && checkViewport\n      );\n    },\n    [resolveNextVariant, wrapUpdatesInTransitions, update, runUpdateIfVisible, pauseOffscreenFeatureOn]\n  );\n  const setGestureState = useCallback17(\n    ({ isHovered: isHovered2, isPressed: isPressed2, isError: isError2 }) => {\n      if (isHovered2 !== void 0)\n        internalState.current.isHovered = isHovered2;\n      if (isPressed2 !== void 0)\n        internalState.current.isPressed = isPressed2;\n      if (isError2 !== void 0)\n        internalState.current.isError = isError2;\n      const { baseVariant: baseVariant2, gestureVariant: gestureVariant2, defaultVariant: defaultVariant2 } = internalState.current;\n      const visibleUserInteraction = isPressed2 || isHovered2;\n      updateIfNeeded(\n        baseVariant2,\n        gestureVariant2,\n        defaultVariant2,\n        baseVariant2,\n        isError2,\n        !visibleUserInteraction,\n        isHovered2\n        // a hover needs instant response for a smooth UX; while we optimize for INP for clicks\n      );\n    },\n    [updateIfNeeded]\n  );\n  const setVariant = useCallback17(\n    (proposedVariant, pauseOffscreen = false) => {\n      const { defaultVariant: defaultVariant2, cycleOrder, baseVariant: baseVariant2, gestureVariant: gestureVariant2 } = internalState.current;\n      const nextBaseVariant = proposedVariant === CycleVariantState ? nextVariant(cycleOrder || [], baseVariant2 || defaultVariant2) : proposedVariant;\n      updateIfNeeded(\n        baseVariant2,\n        gestureVariant2,\n        defaultVariant2,\n        nextBaseVariant,\n        false,\n        pauseOffscreen,\n        false,\n        true\n      );\n    },\n    [updateIfNeeded]\n  );\n  const clearLoadingGesture = useCallback17(() => {\n    const { baseVariant: baseVariant2 } = internalState.current;\n    internalState.current.loadedBaseVariant[baseVariant2] = true;\n    runUpdateIfVisible(() => update(true), true);\n  }, [update, runUpdateIfVisible]);\n  if (variant !== internalState.current.lastVariant) {\n    const [nextBase, nextGesture] = resolveNextVariant(variant);\n    internalState.current.lastVariant = nextBase;\n    if (nextBase !== internalState.current.baseVariant || nextGesture !== internalState.current.gestureVariant) {\n      internalState.current.baseVariant = nextBase;\n      internalState.current.gestureVariant = nextGesture;\n    }\n  }\n  const {\n    baseVariant,\n    gestureVariant,\n    defaultVariant,\n    enabledGestures,\n    isHovered,\n    isPressed,\n    isError,\n    loadedBaseVariant\n  } = internalState.current;\n  const addVariantProps = useAddVariantProps(\n    internalState.current.baseVariant,\n    internalState.current.gestureVariant,\n    variantProps\n  );\n  return useMemo16(() => {\n    var _a;\n    const variants = [];\n    if (baseVariant !== defaultVariant)\n      variants.push(baseVariant);\n    const hasLoadingVariant = (_a = enabledGestures == null ? void 0 : enabledGestures[baseVariant]) == null ? void 0 : _a.loading;\n    const isLoading = !isError && !isCanvas && !!hasLoadingVariant && !loadedBaseVariant[baseVariant];\n    const gesture = isLoading ? createGestureVariant(baseVariant, \"loading\") : gestureVariant;\n    if (gesture)\n      variants.push(gesture);\n    const gestures = enabledGestures == null ? void 0 : enabledGestures[baseVariant];\n    const gestureHandlers = {\n      onMouseEnter: () => setGestureState({ isHovered: true }),\n      onMouseLeave: () => setGestureState({ isHovered: false })\n    };\n    if (gestures == null ? void 0 : gestures.pressed) {\n      Object.assign(gestureHandlers, {\n        onTapStart: () => setGestureState({ isPressed: true }),\n        onTapCancel: () => setGestureState({ isPressed: false }),\n        onTap: () => setGestureState({ isPressed: false })\n      });\n    }\n    return {\n      variants,\n      baseVariant,\n      gestureVariant: gesture,\n      isLoading,\n      transition: activeTransition(internalState.current.transitions, baseVariant),\n      setVariant,\n      setGestureState,\n      clearLoadingGesture,\n      addVariantProps,\n      gestureHandlers,\n      classNames: cx(\n        createVariantClassName(baseVariant, variantClassNames),\n        getGesture(gestures, isHovered, isPressed, isLoading, isError)\n      )\n    };\n  }, [\n    baseVariant,\n    gestureVariant,\n    isHovered,\n    isPressed,\n    loadedBaseVariant,\n    addVariantProps,\n    setVariant,\n    defaultVariant,\n    enabledGestures,\n    setGestureState,\n    clearLoadingGesture,\n    variantClassNames\n  ]);\n}\n\n// ../../library/src/modules/safeCSSValue.ts\nvar reUnsafeCharacters = /[}{<>&;]/u;\nfunction safeCSSValue(value) {\n  if (!isString(value))\n    return \"none\";\n  if (reUnsafeCharacters.test(value))\n    return \"none\";\n  return value;\n}\n\n// ../../library/src/modules/code-boundary/withCodeBoundaryForOverrides.tsx\nimport React74 from \"react\";\nimport { jsx as jsx62 } from \"react/jsx-runtime\";\nfunction withCodeBoundaryForOverrides(Component18, { scopeId, nodeId, override, inComponentSlot }) {\n  if (!shouldEnableCodeBoundaries()) {\n    return override(Component18);\n  }\n  const appliedOverride = tryToApplyOverride(Component18, override);\n  let hasErrorBeenLogged = false;\n  function CodeBoundaryForOverrides(props, ref) {\n    const nearestExternalComponent = useNearestExternalComponent();\n    const shouldWrapWithBoundary = shouldWrapOverrideWithBoundary(\n      scopeId,\n      nearestExternalComponent == null ? void 0 : nearestExternalComponent.scopeId,\n      nearestExternalComponent == null ? void 0 : nearestExternalComponent.level,\n      inComponentSlot ?? false\n    );\n    if (shouldWrapWithBoundary) {\n      if (appliedOverride.status === \"success\") {\n        return /* @__PURE__ */ jsx62(\n          CodeComponentBoundary,\n          {\n            errorMessage: getErrorMessageForOverride(scopeId, nodeId),\n            fallback: /* @__PURE__ */ jsx62(Component18, { ...props, ref }),\n            children: /* @__PURE__ */ jsx62(appliedOverride.Component, { ...props, ref })\n          }\n        );\n      } else {\n        if (!hasErrorBeenLogged) {\n          logError(appliedOverride.error);\n          logError(getErrorMessageForOverride(scopeId, nodeId));\n          collectErrorToAnalytics(appliedOverride.error);\n          hasErrorBeenLogged = true;\n        }\n        return /* @__PURE__ */ jsx62(Component18, { ...props, ref });\n      }\n    } else {\n      if (appliedOverride.status === \"success\") {\n        return /* @__PURE__ */ jsx62(appliedOverride.Component, { ...props, ref });\n      } else {\n        throw appliedOverride.error;\n      }\n    }\n  }\n  return React74.forwardRef(CodeBoundaryForOverrides);\n}\nfunction tryToApplyOverride(Component18, override) {\n  try {\n    const ComponentWithOverrides = override(Component18);\n    return { status: \"success\", Component: ComponentWithOverrides };\n  } catch (error) {\n    return { status: \"error\", error };\n  }\n}\n\n// ../../library/src/modules/withMappedReactProps.tsx\nimport { jsx as jsx63 } from \"react/jsx-runtime\";\nfunction extractMappingFromInfo(info) {\n  var _a;\n  const json = (_a = info.__FramerMetadata__.exports.default.annotations) == null ? void 0 : _a.framerVariables;\n  if (!json)\n    return void 0;\n  try {\n    return JSON.parse(json);\n  } catch {\n    return void 0;\n  }\n}\nfunction withMappedReactProps(Component18, info) {\n  return (rawProps) => {\n    const props = {};\n    const mapping = extractMappingFromInfo(info);\n    for (const key7 in rawProps) {\n      asRecord(props)[(mapping == null ? void 0 : mapping[key7]) ?? key7] = rawProps[key7];\n    }\n    return /* @__PURE__ */ jsx63(Component18, { ...props });\n  };\n}\n\n// ../../library/src/modules/withVariantAppearEffect.tsx\nimport React75 from \"react\";\nimport { jsx as jsx64 } from \"react/jsx-runtime\";\nvar keys = /* @__PURE__ */ new Set([\n  \"visibleVariantId\",\n  \"obscuredVariantId\",\n  \"threshold\",\n  \"animateOnce\",\n  \"variantAppearEffectEnabled\",\n  \"targets\",\n  \"exitTarget\",\n  \"scrollDirection\"\n]);\nvar defaultRanges3 = { inputRange: [], outputRange: [] };\nfunction createInputOutputRanges2(transformTargets, threshold, exitTarget) {\n  const outputRange = [];\n  const inputRange = createTransformInputRange(\n    transformTargets,\n    threshold,\n    (index) => outputRange.unshift(index, index)\n  );\n  if (exitTarget) {\n    const lastInputRange = inputRange[inputRange.length - 1];\n    if (!isNumber(lastInputRange))\n      return defaultRanges3;\n    inputRange.push(lastInputRange + 1);\n    outputRange.push(-1);\n  }\n  const firstItem = inputRange[0];\n  if (!isNumber(firstItem))\n    return defaultRanges3;\n  if (firstItem <= 1)\n    return { inputRange, outputRange };\n  return { inputRange: [0, Math.max(firstItem - 1, 0), ...inputRange], outputRange: [-1, -1, ...outputRange] };\n}\nvar withVariantAppearEffect = (Component18) => React75.forwardRef(\n  (props, forwardedRef) => {\n    if (RenderTarget.current() === RenderTarget.canvas)\n      return /* @__PURE__ */ jsx64(Component18, { ...props, ref: forwardedRef });\n    const { wrapUpdatesInTransitions } = useLibraryFeatures();\n    const [options, rest] = extractPrefixedProps(props, keys);\n    const {\n      visibleVariantId,\n      obscuredVariantId,\n      animateOnce,\n      threshold,\n      variantAppearEffectEnabled,\n      targets,\n      exitTarget,\n      scrollDirection\n    } = options;\n    const [activeVariant, setVariant] = React75.useState(obscuredVariantId);\n    const animateState = React75.useRef(false);\n    const observerRef = useObserverRef(forwardedRef);\n    useAppearEffect(\n      observerRef,\n      (appears) => {\n        if (options.targets)\n          return;\n        if (options.scrollDirection)\n          return;\n        if (animateOnce && animateState.current === true)\n          return;\n        if (animateState.current === appears)\n          return;\n        animateState.current = appears;\n        if (appears) {\n          if (wrapUpdatesInTransitions) {\n            React75.startTransition(() => {\n              setVariant(visibleVariantId);\n            });\n          } else {\n            setVariant(visibleVariantId);\n          }\n        } else {\n          if (wrapUpdatesInTransitions) {\n            React75.startTransition(() => {\n              setVariant(obscuredVariantId);\n            });\n          } else {\n            setVariant(obscuredVariantId);\n          }\n        }\n      },\n      {\n        enabled: variantAppearEffectEnabled,\n        animateOnce,\n        threshold: {\n          y: threshold\n        }\n      }\n    );\n    React75.useEffect(() => {\n      if (scrollDirection)\n        return;\n      if (!targets)\n        return;\n      const playedState = {};\n      let currentVariant = void 0;\n      return scrollInfo(({ y: scrollY }) => {\n        var _a;\n        if (!targets[0] || targets[0].ref && !targets[0].ref.current)\n          return;\n        const { inputRange, outputRange } = createInputOutputRanges2(\n          targets,\n          (threshold ?? 0) * scrollY.containerLength,\n          exitTarget\n        );\n        if (inputRange.length === 0 || inputRange.length !== outputRange.length)\n          return;\n        const index = Math.floor(transform(scrollY.current, inputRange, outputRange));\n        if (animateOnce && playedState[index])\n          return;\n        playedState[index] = true;\n        const variant = ((_a = targets[index]) == null ? void 0 : _a.target) ?? void 0;\n        if (variant === currentVariant)\n          return;\n        currentVariant = variant;\n        if (wrapUpdatesInTransitions) {\n          React75.startTransition(() => {\n            setVariant(variant);\n          });\n        } else {\n          setVariant(variant);\n        }\n      });\n    }, [animateOnce, threshold, targets, props.variant, scrollDirection, exitTarget, wrapUpdatesInTransitions]);\n    useScrollDirectionChange(scrollDirection, setVariant, {\n      enabled: variantAppearEffectEnabled,\n      repeat: !animateOnce\n    });\n    useOnRouteChange(() => {\n      if (!variantAppearEffectEnabled)\n        return;\n      const useObscuredVariant = !options.targets && !options.scrollDirection;\n      const target = useObscuredVariant ? options.obscuredVariantId : void 0;\n      if (wrapUpdatesInTransitions) {\n        React75.startTransition(() => setVariant(target));\n        return;\n      }\n      setVariant(target);\n    });\n    if (!(\"variantAppearEffectEnabled\" in options) || variantAppearEffectEnabled === true) {\n      return /* @__PURE__ */ jsx64(Component18, { ...rest, variant: activeVariant ?? props.variant, ref: observerRef });\n    } else {\n      return /* @__PURE__ */ jsx64(Component18, { ...rest });\n    }\n  }\n);\n\n// ../../library/src/modules/withVariantFX.tsx\nimport React76 from \"react\";\nimport { jsx as jsx65 } from \"react/jsx-runtime\";\nvar withVariantFX = (Component18) => React76.forwardRef(\n  ({ initial, animate: animate3, exit, ...props }, forwardedRef) => {\n    const observerRef = useObserverRef(forwardedRef);\n    const effect = usePresenceAnimation(\n      {\n        initial,\n        animate: animate3,\n        exit\n      },\n      observerRef,\n      true\n    );\n    return /* @__PURE__ */ jsx65(Component18, { ...props, style: { ...props == null ? void 0 : props.style, ...effect.values }, ref: observerRef });\n  }\n);\n\n// ../../library/src/render/WindowContext.ts\nimport React77 from \"react\";\nvar WindowContext = /* @__PURE__ */ React77.createContext(\n  void 0\n);\nvar useProvidedWindow = () => React77.useContext(WindowContext);\n\n// ../../library/src/render/componentLoader/definition.ts\nfunction isDesignDefinition(d) {\n  return d.type === \"master\";\n}\nfunction isOverride(d) {\n  return d.type === \"override\";\n}\nfunction isReactDefinition(d) {\n  return d.type !== \"master\";\n}\n\n// ../../library/src/render/componentLoader/package.ts\nvar localPackageFallbackIdentifier = \"|local|\";\n\n// ../../library/src/render/fonts/fonts.ts\nvar safeFonts = {\n  Arial: {\n    Regular: { selector: \"Arial\", weight: void 0 },\n    Black: { selector: \"Arial-Black\", weight: void 0 },\n    Narrow: { selector: \"Arial Narrow\", weight: void 0 },\n    \"Rounded Bold\": { selector: \"Arial Rounded MT Bold\", weight: void 0 }\n  },\n  Avenir: {\n    Book: { selector: \"Avenir\", weight: void 0 },\n    Light: { selector: \"Avenir-Light\", weight: void 0 },\n    Medium: { selector: \"Avenir-Medium\", weight: void 0 },\n    Heavy: { selector: \"Avenir-Heavy\", weight: void 0 },\n    Black: { selector: \"Avenir-Black\", weight: void 0 }\n  },\n  \"Avenir Next\": {\n    Regular: { selector: \"Avenir Next\", weight: void 0 },\n    \"Ultra Light\": { selector: \"AvenirNext-UltraLight\", weight: void 0 },\n    Medium: { selector: \"AvenirNext-Medium\", weight: void 0 },\n    \"Demi Bold\": { selector: \"AvenirNext-DemiBold\", weight: void 0 },\n    Heavy: { selector: \"AvenirNext-Heavy\", weight: void 0 }\n  },\n  \"Avenir Next Condensed\": {\n    Regular: { selector: \"Avenir Next Condensed\", weight: void 0 },\n    \"Ultra Light\": { selector: \"AvenirNextCondensed-UltraLight\", weight: void 0 },\n    Medium: { selector: \"AvenirNextCondensed-Medium\", weight: void 0 },\n    \"Demi Bold\": { selector: \"AvenirNextCondensed-DemiBold\", weight: void 0 },\n    Heavy: { selector: \"AvenirNextCondensed-Heavy\", weight: void 0 }\n  },\n  Baskerville: {\n    Regular: { selector: \"Baskerville\", weight: void 0 },\n    \"Semi Bold\": { selector: \"Baskerville-SemiBold\", weight: void 0 }\n  },\n  \"Bodoni 72\": {\n    Book: { selector: \"Bodoni 72\", weight: void 0 },\n    Oldstyle: { selector: \"Bodoni 72 Oldstyle\", weight: void 0 },\n    Smallcaps: { selector: \"Bodoni 72 Smallcaps\", weight: void 0 }\n  },\n  Courier: { Regular: { selector: \"Courier\", weight: void 0 } },\n  \"Courier New\": { Regular: { selector: \"Courier New\", weight: void 0 } },\n  Futura: {\n    Medium: { selector: \"Futura\", weight: void 0 },\n    Condensed: { selector: \"Futura-CondensedMedium\", weight: void 0 },\n    \"Condensed ExtraBold\": { selector: \"Futura-CondensedExtraBold\", weight: void 0 }\n  },\n  Georgia: { Regular: { selector: \"Georgia\", weight: void 0 } },\n  \"Gill Sans\": {\n    Regular: { selector: \"Gill Sans\", weight: void 0 },\n    Light: { selector: \"GillSans-Light\", weight: void 0 },\n    SemiBold: { selector: \"GillSans-SemiBold\", weight: void 0 },\n    UltraBold: { selector: \"GillSans-UltraBold\", weight: void 0 }\n  },\n  Helvetica: {\n    Regular: { selector: \"Helvetica\", weight: void 0 },\n    Light: { selector: \"Helvetica-Light\", weight: void 0 },\n    Bold: { selector: \"Helvetica-Bold\", weight: void 0 },\n    Oblique: { selector: \"Helvetica-Oblique\", weight: void 0 },\n    \"Light Oblique\": { selector: \"Helvetica-LightOblique\", weight: void 0 },\n    \"Bold Oblique\": { selector: \"Helvetica-BoldOblique\", weight: void 0 }\n  },\n  \"Helvetica Neue\": {\n    Regular: { selector: \"Helvetica Neue\", weight: void 0 },\n    UltraLight: { selector: \"HelveticaNeue-UltraLight\", weight: void 0 },\n    Thin: { selector: \"HelveticaNeue-Thin\", weight: void 0 },\n    Light: { selector: \"HelveticaNeue-Light\", weight: void 0 },\n    Medium: { selector: \"HelveticaNeue-Medium\", weight: void 0 },\n    Bold: { selector: \"HelveticaNeue-Bold\", weight: void 0 },\n    Italic: { selector: \"HelveticaNeue-Italic\", weight: void 0 },\n    \"UltraLight Italic\": { selector: \"HelveticaNeue-UltraLightItalic\", weight: void 0 },\n    \"Thin Italic\": { selector: \"HelveticaNeue-ThinItalic\", weight: void 0 },\n    \"Light Italic\": { selector: \"HelveticaNeue-LightItalic\", weight: void 0 },\n    \"Medium Italic\": { selector: \"HelveticaNeue-MediumItalic\", weight: void 0 },\n    \"Bold Italic\": { selector: \"HelveticaNeue-BoldItalic\", weight: void 0 },\n    \"Condensed Bold\": { selector: \"HelveticaNeue-CondensedBold\", weight: void 0 },\n    \"Condensed Black\": { selector: \"HelveticaNeue-CondensedBlack\", weight: void 0 }\n  },\n  \"Hoefler Text\": { Regular: { selector: \"Hoefler Text\", weight: void 0 } },\n  Impact: { Regular: { selector: \"Impact\", weight: void 0 } },\n  \"Lucida Grande\": { Regular: { selector: \"Lucida Grande\", weight: void 0 } },\n  Menlo: { Regular: { selector: \"Menlo\", weight: void 0 } },\n  Monaco: { Regular: { selector: \"Monaco\", weight: void 0 } },\n  Optima: {\n    Regular: { selector: \"Optima\", weight: void 0 },\n    ExtraBlack: { selector: \"Optima-ExtraBlack\", weight: void 0 }\n  },\n  Palatino: { Regular: { selector: \"Palatino\", weight: void 0 } },\n  \"SF Pro Display\": {\n    Regular: { selector: \"__SF-UI-Display-Regular__\", weight: 400 },\n    Ultralight: { selector: \"__SF-UI-Display-Ultralight__\", weight: 100 },\n    Thin: { selector: \"__SF-UI-Display-Thin__\", weight: 200 },\n    Light: { selector: \"__SF-UI-Display-Light__\", weight: 300 },\n    Medium: { selector: \"__SF-UI-Display-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Display-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Display-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Display-Heavy__\", weight: 800 },\n    Black: { selector: \"__SF-UI-Display-Black__\", weight: 900 },\n    Italic: { selector: \"__SF-UI-Display-Italic__\", weight: 400 },\n    \"Ultralight Italic\": { selector: \"__SF-UI-Display-Ultralight-Italic__\", weight: 100 },\n    \"Thin Italic\": { selector: \"__SF-UI-Display-Thin-Italic__\", weight: 200 },\n    \"Light Italic\": { selector: \"__SF-UI-Display-Light-Italic__\", weight: 300 },\n    \"Medium Italic\": { selector: \"__SF-UI-Display-Medium-Italic__\", weight: 500 },\n    \"Semibold Italic\": { selector: \"__SF-UI-Display-Semibold-Italic__\", weight: 600 },\n    \"Bold Italic\": { selector: \"__SF-UI-Display-Bold-Italic__\", weight: 700 },\n    \"Heavy Italic\": { selector: \"__SF-UI-Display-Heavy-Italic__\", weight: 800 },\n    \"Black Italic\": { selector: \"__SF-UI-Display-Black-Italic__\", weight: 900 }\n  },\n  \"SF Pro Display Condensed\": {\n    Regular: { selector: \"__SF-UI-Display-Condensed-Regular__\", weight: 400 },\n    Ultralight: { selector: \"__SF-UI-Display-Condensed-Ultralight__\", weight: 100 },\n    Thin: { selector: \"__SF-UI-Display-Condensed-Thin__\", weight: 200 },\n    Light: { selector: \"__SF-UI-Display-Condensed-Light__\", weight: 300 },\n    Medium: { selector: \"__SF-UI-Display-Condensed-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Display-Condensed-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Display-Condensed-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Display-Condensed-Heavy__\", weight: 800 },\n    Black: { selector: \"__SF-UI-Display-Condensed-Black__\", weight: 900 }\n  },\n  \"SF Pro Text\": {\n    Regular: { selector: \"__SF-UI-Text-Regular__\", weight: 400 },\n    Light: { selector: \"__SF-UI-Text-Light__\", weight: 200 },\n    Medium: { selector: \"__SF-UI-Text-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Text-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Text-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Text-Heavy__\", weight: 800 },\n    Italic: { selector: \"__SF-UI-Text-Italic__\", weight: 400 },\n    \"Light Italic\": { selector: \"__SF-UI-Text-Light-Italic__\", weight: 200 },\n    \"Medium Italic\": { selector: \"__SF-UI-Text-Medium-Italic__\", weight: 500 },\n    \"Semibold Italic\": { selector: \"__SF-UI-Text-Semibold-Italic__\", weight: 600 },\n    \"Bold Italic\": { selector: \"__SF-UI-Text-Bold-Italic__\", weight: 700 },\n    \"Heavy Italic\": { selector: \"__SF-UI-Text-Heavy-Italic__\", weight: 800 }\n  },\n  \"SF Pro Text Condensed\": {\n    Regular: { selector: \"__SF-UI-Text-Condensed-Regular__\", weight: 400 },\n    Light: { selector: \"__SF-UI-Text-Condensed-Light__\", weight: 200 },\n    Medium: { selector: \"__SF-UI-Text-Condensed-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Text-Condensed-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Text-Condensed-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Text-Condensed-Heavy__\", weight: 800 }\n  },\n  Tahoma: { Regular: { selector: \"Tahoma\", weight: void 0 } },\n  Times: { Regular: { selector: \"Times\", weight: void 0 } },\n  \"Times New Roman\": { Regular: { selector: \"Times New Roman\", weight: void 0 } },\n  Trebuchet: { Regular: { selector: \"Trebuchet MS\", weight: void 0 } },\n  Verdana: { Regular: { selector: \"Verdana\", weight: void 0 } }\n};\nvar fontAliases = {\n  \"__SF-Compact-Display-Regular__\": \"SFCompactDisplay-Regular|.SFCompactDisplay-Regular\",\n  \"__SF-Compact-Display-Ultralight__\": \"SFCompactDisplay-Ultralight|.SFCompactDisplay-Ultralight\",\n  \"__SF-Compact-Display-Thin__\": \"SFCompactDisplay-Thin|.SFCompactDisplay-Thin\",\n  \"__SF-Compact-Display-Light__\": \"SFCompactDisplay-Light|.SFCompactDisplay-Light\",\n  \"__SF-Compact-Display-Medium__\": \"SFCompactDisplay-Medium|.SFCompactDisplay-Medium\",\n  \"__SF-Compact-Display-Semibold__\": \"SFCompactDisplay-Semibold|.SFCompactDisplay-Semibold\",\n  \"__SF-Compact-Display-Heavy__\": \"SFCompactDisplay-Heavy|.SFCompactDisplay-Heavy\",\n  \"__SF-Compact-Display-Black__\": \"SFCompactDisplay-Black|.SFCompactDisplay-Black\",\n  \"__SF-Compact-Display-Bold__\": \"SFCompactDisplay-Bold|.SFCompactDisplay-Bold\",\n  \"__SF-UI-Text-Regular__\": \".SFNSText|SFProText-Regular|SFUIText-Regular|.SFUIText\",\n  \"__SF-UI-Text-Light__\": \".SFNSText-Light|SFProText-Light|SFUIText-Light|.SFUIText-Light\",\n  \"__SF-UI-Text-Medium__\": \".SFNSText-Medium|SFProText-Medium|SFUIText-Medium|.SFUIText-Medium\",\n  \"__SF-UI-Text-Semibold__\": \".SFNSText-Semibold|SFProText-Semibold|SFUIText-Semibold|.SFUIText-Semibold\",\n  \"__SF-UI-Text-Bold__\": \".SFNSText-Bold|SFProText-Bold|SFUIText-Bold|.SFUIText-Bold\",\n  \"__SF-UI-Text-Heavy__\": \".SFNSText-Heavy|SFProText-Heavy|.SFUIText-Heavy\",\n  \"__SF-UI-Text-Italic__\": \".SFNSText-Italic|SFProText-Italic|SFUIText-Italic|.SFUIText-Italic\",\n  \"__SF-UI-Text-Light-Italic__\": \".SFNSText-LightItalic|SFProText-LightItalic|SFUIText-LightItalic|.SFUIText-LightItalic\",\n  \"__SF-UI-Text-Medium-Italic__\": \".SFNSText-MediumItalic|SFProText-MediumItalic|SFUIText-MediumItalic|.SFUIText-MediumItalic\",\n  \"__SF-UI-Text-Semibold-Italic__\": \".SFNSText-SemiboldItalic|SFProText-SemiboldItalic|SFUIText-SemiboldItalic|.SFUIText-SemiboldItalic\",\n  \"__SF-UI-Text-Bold-Italic__\": \".SFNSText-BoldItalic|SFProText-BoldItalic|SFUIText-BoldItalic|.SFUIText-BoldItalic\",\n  \"__SF-UI-Text-Heavy-Italic__\": \".SFNSText-HeavyItalic|SFProText-HeavyItalic|.SFUIText-HeavyItalic\",\n  \"__SF-Compact-Text-Regular__\": \"SFCompactText-Regular|.SFCompactText-Regular\",\n  \"__SF-Compact-Text-Light__\": \"SFCompactText-Light|.SFCompactText-Light\",\n  \"__SF-Compact-Text-Medium__\": \"SFCompactText-Medium|.SFCompactText-Medium\",\n  \"__SF-Compact-Text-Semibold__\": \"SFCompactText-Semibold|.SFCompactText-Semibold\",\n  \"__SF-Compact-Text-Bold__\": \"SFCompactText-Bold|.SFCompactText-Bold\",\n  \"__SF-Compact-Text-Heavy__\": \"SFCompactText-Heavy|.SFCompactText-Heavy\",\n  \"__SF-Compact-Text-Italic__\": \"SFCompactText-Italic|.SFCompactText-Italic\",\n  \"__SF-Compact-Text-Light-Italic__\": \"SFCompactText-LightItalic|.SFCompactText-LightItalic\",\n  \"__SF-Compact-Text-Medium-Italic__\": \"SFCompactText-MediumItalic|.SFCompactText-MediumItalic\",\n  \"__SF-Compact-Text-Semibold-Italic__\": \"SFCompactText-SemiboldItalic|.SFCompactText-SemiboldItalic\",\n  \"__SF-Compact-Text-Bold-Italic__\": \"SFCompactText-BoldItalic|.SFCompactText-BoldItalic\",\n  \"__SF-Compact-Text-Heavy-Italic__\": \"SFCompactText-HeavyItalic|.SFCompactText-HeavyItalic\",\n  \"__SF-UI-Display-Condensed-Regular__\": \".SFNSDisplayCondensed-Regular|SFUIDisplayCondensed-Regular|.SFUIDisplayCondensed-Regular\",\n  \"__SF-UI-Display-Condensed-Ultralight__\": \".SFNSDisplayCondensed-Ultralight|SFUIDisplayCondensed-Ultralight|.SFUIDisplayCondensed-Ultralight\",\n  \"__SF-UI-Display-Condensed-Thin__\": \".SFNSDisplayCondensed-Thin|SFUIDisplayCondensed-Thin|.SFUIDisplayCondensed-Thin\",\n  \"__SF-UI-Display-Condensed-Light__\": \".SFNSDisplayCondensed-Light|SFUIDisplayCondensed-Light|.SFUIDisplayCondensed-Light\",\n  \"__SF-UI-Display-Condensed-Medium__\": \".SFNSDisplayCondensed-Medium|SFUIDisplayCondensed-Medium|.SFUIDisplayCondensed-Medium\",\n  \"__SF-UI-Display-Condensed-Semibold__\": \".SFNSDisplayCondensed-Semibold|SFUIDisplayCondensed-Semibold|.SFUIDisplayCondensed-Semibold\",\n  \"__SF-UI-Display-Condensed-Bold__\": \".SFNSDisplayCondensed-Bold|SFUIDisplayCondensed-Bold|.SFUIDisplayCondensed-Bold\",\n  \"__SF-UI-Display-Condensed-Heavy__\": \".SFNSDisplayCondensed-Heavy|SFUIDisplayCondensed-Heavy|.SFUIDisplayCondensed-Heavy\",\n  \"__SF-UI-Display-Condensed-Black__\": \".SFNSDisplayCondensed-Black|.SFUIDisplayCondensed-Black\",\n  \"__SF-UI-Display-Regular__\": \".SFNSDisplay|SFProDisplay-Regular|SFUIDisplay-Regular|.SFUIDisplay\",\n  \"__SF-UI-Display-Ultralight__\": \".SFNSDisplay-Ultralight|SFProDisplay-Ultralight|SFUIDisplay-Ultralight|.SFUIDisplay-Ultralight\",\n  \"__SF-UI-Display-Thin__\": \".SFNSDisplay-Thin|SFProDisplay-Thin|SFUIDisplay-Thin|.SFUIDisplay-Thin\",\n  \"__SF-UI-Display-Light__\": \".SFNSDisplay-Light|SFProDisplay-Light|SFUIDisplay-Light|.SFUIDisplay-Light\",\n  \"__SF-UI-Display-Medium__\": \".SFNSDisplay-Medium|SFProDisplay-Medium|SFUIDisplay-Medium|.SFUIDisplay-Medium\",\n  \"__SF-UI-Display-Semibold__\": \".SFNSDisplay-Semibold|SFProDisplay-Semibold|SFUIDisplay-Semibold|.SFUIDisplay-Semibold\",\n  \"__SF-UI-Display-Bold__\": \".SFNSDisplay-Bold|SFProDisplay-Bold|SFUIDisplay-Bold|.SFUIDisplay-Bold\",\n  \"__SF-UI-Display-Heavy__\": \".SFNSDisplay-Heavy|SFProDisplay-Heavy|SFUIDisplay-Heavy|.SFUIDisplay-Heavy\",\n  \"__SF-UI-Display-Black__\": \".SFNSDisplay-Black|SFProDisplay-Black|.SFUIDisplay-Black\",\n  \"__SF-UI-Display-Italic__\": \".SFNSDisplay-Italic|SFProDisplay-Italic|SFUIDisplay-Italic\",\n  \"__SF-UI-Display-Ultralight-Italic__\": \".SFNSDisplay-UltralightItalic|SFProDisplay-UltralightItalic|SFUIDisplay-UltralightItalic|.SFUIDisplay-UltralightItalic\",\n  \"__SF-UI-Display-Thin-Italic__\": \".SFNSDisplay-ThinItalic|SFProDisplay-ThinItalic|SFUIDisplay-ThinItalic|.SFUIDisplay-ThinItalic\",\n  \"__SF-UI-Display-Light-Italic__\": \".SFNSDisplay-LightItalic|SFProDisplay-LightItalic|SFUIDisplay-LightItalic|.SFUIDisplay-LightItalic\",\n  \"__SF-UI-Display-Medium-Italic__\": \".SFNSDisplay-MediumItalic|SFProDisplay-MediumItalic|SFUIDisplay-MediumItalic|.SFUIDisplay-MediumItalic\",\n  \"__SF-UI-Display-Semibold-Italic__\": \".SFNSDisplay-SemiboldItalic|SFProDisplay-SemiboldItalic|SFUIDisplay-SemiboldItalic|.SFUIDisplay-SemiboldItalic\",\n  \"__SF-UI-Display-Bold-Italic__\": \".SFNSDisplay-BoldItalic|SFProDisplay-BoldItalic|SFUIDisplay-BoldItalic|.SFUIDisplay-BoldItalic\",\n  \"__SF-UI-Display-Heavy-Italic__\": \".SFNSDisplay-HeavyItalic|SFProDisplay-HeavyItalic|SFUIDisplay-HeavyItalic|.SFUIDisplay-HeavyItalic\",\n  \"__SF-UI-Display-Black-Italic__\": \".SFNSDisplay-BlackItalic|SFProDisplay-BlackItalic|.SFUIDisplay-BlackItalic\",\n  \"__SF-UI-Text-Condensed-Regular__\": \".SFNSTextCondensed-Regular|SFUITextCondensed-Regular|.SFUITextCondensed-Regular\",\n  \"__SF-UI-Text-Condensed-Light__\": \".SFNSTextCondensed-Light|SFUITextCondensed-Light|.SFUITextCondensed-Light\",\n  \"__SF-UI-Text-Condensed-Medium__\": \".SFNSTextCondensed-Medium|SFUITextCondensed-Medium|.SFUITextCondensed-Medium\",\n  \"__SF-UI-Text-Condensed-Semibold__\": \".SFNSTextCondensed-Semibold|SFUITextCondensed-Semibold|.SFUITextCondensed-Semibold\",\n  \"__SF-UI-Text-Condensed-Bold__\": \".SFNSTextCondensed-Bold|SFUITextCondensed-Bold|.SFUITextCondensed-Bold\",\n  \"__SF-UI-Text-Condensed-Heavy__\": \".SFNSTextCondensed-Heavy|.SFUITextCondensed-Heavy\",\n  \"__SF-Compact-Rounded-Regular__\": \"SFCompactRounded-Regular|.SFCompactRounded-Regular\",\n  \"__SF-Compact-Rounded-Ultralight__\": \"SFCompactRounded-Ultralight|.SFCompactRounded-Ultralight\",\n  \"__SF-Compact-Rounded-Thin__\": \"SFCompactRounded-Thin|.SFCompactRounded-Thin\",\n  \"__SF-Compact-Rounded-Light__\": \"SFCompactRounded-Light|.SFCompactRounded-Light\",\n  \"__SF-Compact-Rounded-Medium__\": \"SFCompactRounded-Medium|.SFCompactRounded-Medium\",\n  \"__SF-Compact-Rounded-Semibold__\": \"SFCompactRounded-Semibold|.SFCompactRounded-Semibold\",\n  \"__SF-Compact-Rounded-Bold__\": \"SFCompactRounded-Bold|.SFCompactRounded-Bold\",\n  \"__SF-Compact-Rounded-Heavy__\": \"SFCompactRounded-Heavy|.SFCompactRounded-Heavy\",\n  \"__SF-Compact-Rounded-Black__\": \"SFCompactRounded-Black|.SFCompactRounded-Black\"\n};\nvar fontFamilies = safeFonts;\n\n// ../../library/src/render/fonts/types.ts\nvar FontSourceNames = /* @__PURE__ */ ((FontSourceNames2) => {\n  FontSourceNames2[\"Google\"] = \"google\";\n  FontSourceNames2[\"Fontshare\"] = \"fontshare\";\n  FontSourceNames2[\"Framer\"] = \"framer\";\n  FontSourceNames2[\"Local\"] = \"local\";\n  FontSourceNames2[\"Custom\"] = \"custom\";\n  FontSourceNames2[\"BuiltIn\"] = \"builtIn\";\n  return FontSourceNames2;\n})(FontSourceNames || {});\nfunction isSuccessfullyParsedFontVariant(variant) {\n  return variant.weight !== void 0 && variant.style !== void 0;\n}\n\n// ../../library/src/render/fonts/LocalFontSource.ts\nvar systemFontFamilyName = \"System Default\";\nvar LocalFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"local\" /* Local */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n    __publicField(this, \"fontAliasBySelector\", /* @__PURE__ */ new Map());\n    __publicField(this, \"fontAliases\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  // TODO: these are duplicated across implementations of FontSource\n  // When adding a third source, we should abstract them\n  createFontFamily(family) {\n    const fontFamily = { name: family, fonts: [], source: this.name };\n    this.addFontFamily(fontFamily);\n    return fontFamily;\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n  // end of duplication\n  importFonts() {\n    const fonts = [];\n    for (const family of Object.keys(fontFamilies)) {\n      const members = fontFamilies[family];\n      if (!members)\n        continue;\n      const fontFamily = this.createFontFamily(family);\n      for (const variant of Object.keys(members)) {\n        const member = members[variant];\n        if (!member)\n          continue;\n        const { selector, weight } = member;\n        const font = {\n          variant,\n          selector,\n          weight,\n          family: fontFamily\n        };\n        fontFamily.fonts.push(font);\n      }\n      fonts.push(...fontFamily.fonts);\n    }\n    for (const [key7, value] of Object.entries(fontAliases)) {\n      this.addFontAlias(key7, value);\n    }\n    const { fontFamily: systemFontFamily, aliases } = this.getSystemFontFamily();\n    this.addFontFamily(systemFontFamily);\n    for (const [key7, value] of aliases) {\n      this.addFontAlias(key7, value);\n    }\n    fonts.push(...systemFontFamily.fonts);\n    return fonts;\n  }\n  addFontAlias(key7, value) {\n    this.fontAliases.set(key7, value);\n    this.fontAliasBySelector.set(value, key7);\n  }\n  getSystemFontFamily() {\n    const fontFamilies2 = (\n      // System fonts - Taken from https://furbo.org/stuff/systemfonts-new.html - \"All Platforms\" section\n      \"system-ui|-apple-system|BlinkMacSystemFont|Segoe UI|Roboto|Oxygen|Ubuntu|Cantarell|Fira Sans|Droid Sans|Helvetica Neue|sans-serif\"\n    );\n    const fontFamily = { name: systemFontFamilyName, fonts: [], source: this.name };\n    const aliases = /* @__PURE__ */ new Map();\n    const weights = [400, 100, 200, 300, 500, 600, 700, 800, 900];\n    const styles4 = [\"normal\", \"italic\"];\n    for (const style of styles4) {\n      for (const weight of weights) {\n        const variant = createVariantName(weight, style);\n        const alias = `__SystemDefault-${weight}-${style}__`;\n        const font = {\n          variant,\n          selector: alias,\n          style,\n          weight,\n          family: fontFamily\n        };\n        fontFamily.fonts.push(font);\n        aliases.set(alias, fontFamilies2);\n      }\n    }\n    return { fontFamily, aliases };\n  }\n  getFontAliasBySelector(selector) {\n    return this.fontAliasBySelector.get(selector) || null;\n  }\n  getFontSelectorByAlias(alias) {\n    return this.fontAliases.get(alias) || null;\n  }\n  /** Font family aliases are in the format of `__Alias-Name__` */\n  isFontFamilyAlias(value) {\n    if (value && /^__.*__$/u.exec(value))\n      return true;\n    return false;\n  }\n};\nvar fontWeightNames = {\n  \"100\": \"Thin\",\n  \"200\": \"Extra Light\",\n  \"300\": \"Light\",\n  \"400\": \"Normal\",\n  \"500\": \"Medium\",\n  \"600\": \"Semi Bold\",\n  \"700\": \"Bold\",\n  \"800\": \"Extra Bold\",\n  \"900\": \"Black\"\n};\nfunction createVariantName(weight, style) {\n  const friendlyStyle = style === \"normal\" ? \"Regular\" : \"Italic\";\n  if (weight === 400) {\n    return friendlyStyle;\n  }\n  if (style !== \"normal\") {\n    return `${fontWeightNames[weight]} ${friendlyStyle}`;\n  }\n  return `${fontWeightNames[weight]}`;\n}\n\n// ../../library/src/render/fonts/fontStore.ts\nvar import_process3 = __toESM(require_browser(), 1);\n\n// ../../library/src/utils/variableFont.ts\nfunction isVariableFont(font) {\n  return Boolean(font.variationAxes);\n}\nfunction createFontFamilyName(font) {\n  if (isVariableFont(font) && font.family.source !== \"custom\") {\n    return createVariableFontFamilyName(font.family.name);\n  }\n  return font.family.name;\n}\nfunction createVariableFontFamilyName(familyName) {\n  return `${familyName} Variable`;\n}\n\n// ../../library/src/render/fonts/fontUtils.ts\nfunction supportsOpenType(openTypeData) {\n  return Boolean(openTypeData && Array.isArray(openTypeData));\n}\nfunction validateVariationAxes(variationAxesData) {\n  if (!variationAxesData)\n    return;\n  if (!Array.isArray(variationAxesData))\n    return;\n  const variationAxes = [];\n  for (const axis of variationAxesData) {\n    if (!isVariationAxis(axis))\n      continue;\n    variationAxes.push({\n      tag: axis.tag,\n      name: axis.name,\n      minValue: axis.minValue,\n      maxValue: axis.maxValue,\n      defaultValue: axis.defaultValue\n    });\n  }\n  return variationAxes;\n}\nfunction isOpenTypeFeature(feature) {\n  if (typeof feature !== \"object\" || feature === null)\n    return false;\n  if (!(\"tag\" in feature) || typeof feature.tag !== \"string\")\n    return false;\n  if (\"coverage\" in feature && typeof feature.coverage !== \"undefined\" && !Array.isArray(feature.coverage)) {\n    return false;\n  }\n  return true;\n}\nfunction isVariationAxis(axis) {\n  if (typeof axis !== \"object\" || axis === null)\n    return false;\n  if (!(\"tag\" in axis) || typeof axis.tag !== \"string\")\n    return false;\n  if (\"name\" in axis && typeof axis.name !== \"string\")\n    return false;\n  if (!(\"minValue\" in axis) || typeof axis.minValue !== \"number\")\n    return false;\n  if (!(\"maxValue\" in axis) || typeof axis.maxValue !== \"number\")\n    return false;\n  if (!(\"defaultValue\" in axis) || typeof axis.defaultValue !== \"number\") {\n    return false;\n  }\n  return true;\n}\n\n// ../../library/src/render/fonts/BuiltInFontSource.ts\nvar builtInFontSelectorPrefix = \"BI;\";\nvar BuiltInFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"builtIn\" /* BuiltIn */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n    __publicField(this, \"assetsByFamily\", /* @__PURE__ */ new Map());\n  }\n  importFonts(assets) {\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    this.assetsByFamily.clear();\n    const fonts = [];\n    for (const asset of assets) {\n      if (!this.isValidBuiltInFont(asset))\n        continue;\n      const { properties } = asset;\n      const fontName = properties.font.preferredFamily || properties.font.fontFamily;\n      const fontFamily = this.createFontFamily(\n        fontName,\n        properties.font.foundryName,\n        properties.font.fontVersion\n      );\n      const openTypeData = properties.font.openTypeData;\n      const variationAxesData = properties.font.variationAxes;\n      const isVariableFont2 = Array.isArray(variationAxesData);\n      const variant = isVariableFont2 ? \"variable\" : properties.font.preferredSubFamily || properties.font.fontSubFamily || \"regular\";\n      const font = {\n        family: fontFamily,\n        selector: this.createSelector(fontName, variant, properties.font.fontVersion),\n        variant,\n        file: asset.url,\n        hasOpenTypeFeatures: supportsOpenType(openTypeData),\n        variationAxes: validateVariationAxes(variationAxesData),\n        category: properties.font.fontCategory,\n        weight: variantNameToWeight(variant),\n        style: getFontStyle(variant)\n      };\n      fontFamily.fonts.push(font);\n      this.assetsByFamily.set(fontName, asset);\n      fonts.push(font);\n    }\n    for (const fontFamily of this.fontFamilies) {\n      fontFamily.fonts.sort((a, b) => {\n        const weightA = variantNameToWeight(a.variant);\n        const weightB = variantNameToWeight(b.variant);\n        if (!weightA || !weightB)\n          return 1;\n        return weightA - weightB;\n      });\n    }\n    return fonts;\n  }\n  static parseVariant(variant) {\n    const kebabCaseVariant = variantToKebabCase(variant);\n    const weight = variantsNameToWeight[kebabCaseVariant];\n    const style = getFontStyle(variant);\n    return { weight, style };\n  }\n  getFontBySelector(selector, createFont = true) {\n    const locator = this.parseSelector(selector);\n    if (!locator)\n      return;\n    if (!createFont && !this.byFamilyName.get(locator.name))\n      return;\n    const fontFamily = this.getFontFamilyByName(locator.name);\n    if (!fontFamily)\n      return;\n    return fontFamily.fonts.find((f) => f.selector === selector);\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  createFontFamily(family, foundryName, version2) {\n    const existingFontFamily = this.byFamilyName.get(family);\n    if (existingFontFamily && existingFontFamily.version === version2)\n      return existingFontFamily;\n    const fontFamily = {\n      source: this.name,\n      name: family,\n      fonts: [],\n      foundryName,\n      version: version2\n    };\n    this.addFontFamily(fontFamily);\n    return fontFamily;\n  }\n  getOpenTypeFeatures(family) {\n    var _a, _b;\n    const assets = this.assetsByFamily.get(family);\n    const openTypeData = (_b = (_a = assets == null ? void 0 : assets.properties) == null ? void 0 : _a.font) == null ? void 0 : _b.openTypeData;\n    if (!supportsOpenType(openTypeData))\n      return [];\n    return openTypeData == null ? void 0 : openTypeData.map((feature) => {\n      if (!isOpenTypeFeature(feature))\n        return;\n      return { tag: feature.tag, coverage: feature.coverage };\n    });\n  }\n  isValidBuiltInFont(asset) {\n    var _a;\n    if (!asset.mimeType.startsWith(\"font/\"))\n      return false;\n    if (((_a = asset.properties) == null ? void 0 : _a.kind) !== \"font\")\n      return false;\n    if (!asset.properties.font)\n      return false;\n    if (!asset.properties.font.fontVersion)\n      return false;\n    if (!asset.properties.font.fontFamily)\n      return false;\n    return \"fontFamily\" in asset.properties.font;\n  }\n  createSelector(family, variant, version2) {\n    return `${builtInFontSelectorPrefix}${family}/${variant}/${version2}`;\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(builtInFontSelectorPrefix))\n      return null;\n    const [_, selectorWithoutPrefix] = selector.split(builtInFontSelectorPrefix);\n    if (selectorWithoutPrefix === void 0)\n      return null;\n    const [name, variant, version2] = selectorWithoutPrefix.split(\"/\");\n    if (!name || !variant || !version2)\n      return null;\n    return {\n      name,\n      variant,\n      source: this.name,\n      isVariable: variant.toLowerCase().includes(\"variable\")\n    };\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n};\nvar variantsNameToWeight = {\n  ultralight: 100,\n  \"ultralight-italic\": 100,\n  thin: 200,\n  \"thin-italic\": 200,\n  demi: 200,\n  light: 300,\n  \"light-italic\": 300,\n  normal: 350,\n  base: 400,\n  regular: 400,\n  classic: 400,\n  \"regular-slanted\": 400,\n  italic: 400,\n  oblique: 400,\n  dense: 400,\n  brukt: 300,\n  book: 400,\n  \"book-italic\": 400,\n  text: 400,\n  \"text-italic\": 400,\n  medium: 500,\n  solid: 500,\n  \"medium-oblique\": 500,\n  \"medium-italic\": 500,\n  mittel: 500,\n  semibold: 600,\n  \"semibold-italic\": 600,\n  bold: 700,\n  \"bold-italic\": 700,\n  \"bold-oblique\": 700,\n  fett: 700,\n  ultrabold: 800,\n  \"ultrabold-italic\": 800,\n  extrabold: 800,\n  \"extrabold-italic\": 800,\n  black: 900,\n  \"black-italic\": 900,\n  \"extra-italic\": 900,\n  \"extra-italic-bold\": 900,\n  satt: 900,\n  heavy: 900,\n  \"heavy-italic\": 900,\n  // The following variants are only used in the FT88 font. These are not really weights, but more font styles (gothique, cursive, etc.).\n  // We assign them different (fake) weights to ensure that the changes are picked up when switching between variants.\n  serif: 100,\n  school: 200,\n  expanded: 300,\n  gothique: 500,\n  // The following variants are only used in the ARK_ES font.\n  // We assign them different (fake) weights to ensure that the changes are picked up when switching between variants.\n  // The order is important because we want to group all the light together and solid together.\n  \"dense-light\": 200,\n  \"dense-regular\": 300,\n  \"dense-medium\": 400,\n  \"dense-bold\": 500,\n  \"solid-light\": 600,\n  \"solid-regular\": 700,\n  \"solid-medium\": 800,\n  \"solid-bold\": 900,\n  // we want to put variable fonts last\n  variable: 1e3,\n  \"variable-italic\": 1e3\n};\nfunction variantNameToWeight(variant) {\n  const kebabCaseVariant = variantToKebabCase(variant);\n  return variantsNameToWeight[kebabCaseVariant];\n}\nfunction variantToKebabCase(variant) {\n  return variant.toLowerCase().replace(/\\s+/gu, \"-\");\n}\nfunction getFontStyle(variant) {\n  variant = variant.toLowerCase();\n  if (variant.includes(\"italic\") || variant.includes(\"oblique\") || variant.includes(\"slanted\"))\n    return \"italic\";\n  return \"normal\";\n}\n\n// ../../library/src/render/fonts/CustomFontSource.ts\nvar customFontSelectorPrefix = \"CUSTOM;\";\nfunction getCustomFontName(fileName, properties) {\n  if (!properties)\n    return fileName.substring(0, fileName.lastIndexOf(\".\"));\n  const { font } = properties;\n  const fontFamily = font.preferredFamily || font.fontFamily;\n  const isAssetVariableFont = Array.isArray(font.variationAxes);\n  if (isAssetVariableFont && fontFamily.toLowerCase().includes(\"variable\"))\n    return fontFamily;\n  const variant = isAssetVariableFont ? \"Variable\" : (font.preferredSubFamily || font.fontSubFamily).trim();\n  if (variant === \"\")\n    return fontFamily;\n  return `${fontFamily} ${variant}`;\n}\nvar CustomFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"custom\" /* Custom */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n    __publicField(this, \"assetsByFamily\", /* @__PURE__ */ new Map());\n  }\n  importFonts(assets) {\n    var _a, _b, _c;\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    this.assetsByFamily.clear();\n    const fonts = [];\n    for (const asset of assets) {\n      if (!this.isValidCustomFontAsset(asset)) {\n        continue;\n      }\n      const variationAxesData = (_a = asset.properties) == null ? void 0 : _a.font.variationAxes;\n      const isVariableFont2 = Array.isArray(variationAxesData);\n      const fontName = getCustomFontName(asset.name, asset.properties);\n      const fontFamily = this.createFontFamily(fontName);\n      const openTypeData = (_b = asset.properties) == null ? void 0 : _b.font.openTypeData;\n      const variant = isVariableFont2 ? \"variable\" : this.inferVariantName(fontName);\n      const font = {\n        family: fontFamily,\n        selector: `${customFontSelectorPrefix}${fontName}`,\n        variant,\n        postscriptName: (_c = asset.properties) == null ? void 0 : _c.font.postscriptName,\n        file: asset.url,\n        hasOpenTypeFeatures: supportsOpenType(openTypeData),\n        variationAxes: validateVariationAxes(variationAxesData)\n      };\n      fontFamily.fonts.push(font);\n      fontFamily.owner = asset.ownerType === \"team\" ? \"team\" : \"project\";\n      this.assetsByFamily.set(fontName, asset);\n      fonts.push(...fontFamily.fonts);\n    }\n    return fonts;\n  }\n  isValidCustomFontAsset(asset) {\n    var _a;\n    if (!asset.mimeType.startsWith(\"font/\"))\n      return false;\n    if (((_a = asset.properties) == null ? void 0 : _a.kind) !== \"font\")\n      return false;\n    if (!asset.properties.font)\n      return false;\n    return \"fontFamily\" in asset.properties.font;\n  }\n  getOpenTypeFeatures(family) {\n    var _a, _b;\n    const assets = this.assetsByFamily.get(family);\n    const openTypeData = (_b = (_a = assets == null ? void 0 : assets.properties) == null ? void 0 : _a.font) == null ? void 0 : _b.openTypeData;\n    if (!supportsOpenType(openTypeData))\n      return [];\n    return openTypeData == null ? void 0 : openTypeData.map((feature) => {\n      if (!isOpenTypeFeature(feature))\n        return;\n      return { tag: feature.tag, coverage: feature.coverage };\n    });\n  }\n  inferVariantName(family) {\n    const possibleValues = [\n      \"thin\",\n      \"ultra light\",\n      \"extra light\",\n      \"light\",\n      \"normal\",\n      \"medium\",\n      \"semi bold\",\n      \"bold\",\n      \"extra bold\",\n      \"black\"\n    ];\n    const possibleValuesWithItalics = [...possibleValues.map((value) => `${value} italic`), ...possibleValues];\n    const lowerCaseFamily = family.toLowerCase();\n    const tokens = [...lowerCaseFamily.split(\" \"), ...lowerCaseFamily.split(\"-\"), ...lowerCaseFamily.split(\"_\")];\n    const foundToken = possibleValuesWithItalics.find(\n      (value) => tokens.includes(value) || tokens.includes(value.replace(/\\s+/gu, \"\"))\n    );\n    if (foundToken)\n      return foundToken.replace(/^\\w|\\s\\w/gu, (char) => char.toUpperCase());\n    return \"Regular\";\n  }\n  createFontFamily(family) {\n    const existingFontFamily = this.byFamilyName.get(family);\n    if (existingFontFamily)\n      return existingFontFamily;\n    const fontFamily = {\n      source: this.name,\n      name: family,\n      fonts: []\n    };\n    this.addFontFamily(fontFamily);\n    return fontFamily;\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(customFontSelectorPrefix))\n      return null;\n    const tokens = selector.split(customFontSelectorPrefix);\n    if (tokens[1] === void 0)\n      return null;\n    const locator = { source: \"custom\", name: tokens[1] };\n    return locator;\n  }\n  getFontBySelector(selector, createFont = true) {\n    const locator = this.parseSelector(selector);\n    if (!locator)\n      return;\n    if (!createFont && !this.byFamilyName.get(locator.name))\n      return;\n    const fonts = this.getFontFamilyByName(locator.name).fonts;\n    const woff2Font = fonts.find((font) => {\n      var _a;\n      return (_a = font.file) == null ? void 0 : _a.endsWith(\".woff2\");\n    });\n    return woff2Font || fonts[0];\n  }\n  getFontFamilyByName(family) {\n    const foundFontFamily = this.byFamilyName.get(family);\n    if (foundFontFamily)\n      return foundFontFamily;\n    const fontFamily = {\n      source: \"custom\",\n      name: family,\n      fonts: []\n    };\n    fontFamily.fonts.push({\n      selector: `${customFontSelectorPrefix}${family}`,\n      variant: this.inferVariantName(family),\n      family: fontFamily\n    });\n    return fontFamily;\n  }\n};\n\n// ../../library/src/render/fonts/getRelatedFontVariants.ts\nfunction getRelatedFontVariants(currentVariant, availableVariants) {\n  return {\n    ...pickBoldItalicVariants(currentVariant, availableVariants),\n    ...pickVariableVariants(currentVariant, availableVariants)\n  };\n}\nfunction pickBoldItalicVariants(currentVariant, availableVariants) {\n  if (availableVariants.length === 0) {\n    return {\n      variantBold: void 0,\n      variantBoldItalic: void 0,\n      variantItalic: void 0\n    };\n  }\n  const { weight: currentWeight, style: currentStyle } = currentVariant;\n  const variantByWeightAndStyle = /* @__PURE__ */ new Map();\n  const boldVariantByStyle = /* @__PURE__ */ new Map();\n  for (const variant of availableVariants) {\n    if (variant.isVariable !== currentVariant.isVariable)\n      continue;\n    variantByWeightAndStyle.set(`${variant.weight}-${variant.style}`, variant);\n    if (variant.weight <= currentWeight)\n      continue;\n    if (!boldVariantByStyle.has(variant.style)) {\n      boldVariantByStyle.set(variant.style, variant);\n    }\n  }\n  let variantBold = boldVariantByStyle.get(currentStyle);\n  let variantBoldItalic = boldVariantByStyle.get(\"italic\");\n  const currentVariantWeight = currentVariant.weight;\n  if (currentVariantWeight <= 300) {\n    variantBold = variantByWeightAndStyle.get(`400-${currentStyle}`) ?? variantBold;\n    variantBoldItalic = variantByWeightAndStyle.get(\"400-italic\") ?? variantBoldItalic;\n  } else if (currentVariantWeight <= 500) {\n    variantBold = variantByWeightAndStyle.get(`700-${currentStyle}`) ?? variantBold;\n    variantBoldItalic = variantByWeightAndStyle.get(\"700-italic\") ?? variantBoldItalic;\n  } else {\n    variantBold = variantByWeightAndStyle.get(`900-${currentStyle}`) ?? variantBold;\n    variantBoldItalic = variantByWeightAndStyle.get(\"900-italic\") ?? variantBoldItalic;\n  }\n  const variantItalic = variantByWeightAndStyle.get(`${currentWeight}-italic`);\n  return { variantBold, variantItalic, variantBoldItalic };\n}\nfunction pickVariableVariants(currentVariant, availableVariants) {\n  if (availableVariants.length === 0)\n    return { variantVariable: void 0, variantVariableItalic: void 0 };\n  const variantByWeightAndStyle = /* @__PURE__ */ new Map();\n  for (const variant of availableVariants) {\n    if (!variant.isVariable)\n      continue;\n    variantByWeightAndStyle.set(`${variant.weight}-${variant.style}`, variant);\n  }\n  return {\n    variantVariable: variantByWeightAndStyle.get(`${currentVariant.weight}-normal`) ?? variantByWeightAndStyle.get(`400-normal`) ?? void 0,\n    variantVariableItalic: variantByWeightAndStyle.get(`${currentVariant.weight}-italic`) ?? variantByWeightAndStyle.get(`400-italic`) ?? void 0\n  };\n}\n\n// ../../library/src/render/fonts/loadOpenType.ts\nasync function loadFontsWithOpenType(source) {\n  switch (source) {\n    case \"google\": {\n      const supportedFonts = await import(\"./google-AYKKG2SQ.mjs\");\n      return supportedFonts == null ? void 0 : supportedFonts.default;\n    }\n    case \"fontshare\": {\n      const supportedFonts = await import(\"./fontshare-26R7ZKFH.mjs\");\n      return supportedFonts == null ? void 0 : supportedFonts.default;\n    }\n    default:\n      throw new Error(`Unknown font source: ${source}`);\n  }\n}\nasync function loadFontToOpenTypeFeatures(source) {\n  switch (source) {\n    case \"google\": {\n      const features = await import(\"./google-SWLQ2TQI.mjs\");\n      return features == null ? void 0 : features.default;\n    }\n    case \"fontshare\": {\n      const features = await import(\"./fontshare-TJDTFQF5.mjs\");\n      return features == null ? void 0 : features.default;\n    }\n    case \"framer\": {\n      const features = await import(\"./framer-font-O4FG2JPU.mjs\");\n      return features == null ? void 0 : features.default;\n    }\n    default:\n      throw new Error(`Unknown font source: ${source}`);\n  }\n}\n\n// ../../library/src/render/fonts/parseFontshareCategories.ts\nvar knownFontshareCategories = [\"display\", \"sans\", \"serif\", \"slab\", \"handwritten\", \"script\"];\nfunction parseFontshareCategories(categoriesField) {\n  return categoriesField.split(\",\").map((category) => category.trim().toLowerCase()).filter(isKnownFontshareCategory);\n}\nfunction isKnownFontshareCategory(category) {\n  return knownFontshareCategories.includes(category);\n}\n\n// ../../library/src/render/fonts/FontshareSource.ts\nvar fontsharePrefix = \"FS;\";\nvar weightNameToNumber = {\n  thin: 100,\n  hairline: 100,\n  // Alternative name for \"thin\".\n  extralight: 200,\n  light: 300,\n  regular: 400,\n  medium: 500,\n  semibold: 600,\n  bold: 700,\n  extrabold: 800,\n  ultra: 800,\n  // Alternative name for \"extrabold\".\n  black: 900,\n  heavy: 900\n  // Alternative name for \"black\".\n};\nvar weightNames = /* @__PURE__ */ Object.keys(weightNameToNumber);\nvar allowedVariantsRegex = /* @__PURE__ */ (() => new RegExp(`^(?:${[...weightNames, \"italic\", \"variable\"].join(\"|\")})`, \"u\"))();\nvar FontshareSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"fontshare\" /* Fontshare */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  /**\n   * Parses variant a string into a weight number and style, defaulting to a\n   * weight of `400` and/or a style of `\"normal\"` depending on what isn't\n   * present in the variant string.\n   *\n   * E.g:\n   *   - `\"Bold\"` becomes `{ weight: 700, style: \"normal\" }`\n   *   - `\"Bold Italic\"` becomes `{ weight: 700, style: \"italic\" }`\n   *   - `\"Italic\"` becomes `{ weight: 400, style: \"italic\" }`\n   *   - `\"Variable Italic\"` becomes `{ weight: 400, style: \"italic\" }`\n   */\n  static parseVariant(variant) {\n    const variantSplit = variant.toLowerCase().split(\" \");\n    const weightName = weightNames.find((weightName2) => {\n      return variantSplit.includes(weightName2);\n    });\n    const styleName = variant.toLowerCase().includes(\"italic\") ? \"italic\" : \"normal\";\n    const weight = weightName && weightNameToNumber[weightName] || 400;\n    const style = styleName === \"italic\" ? styleName : \"normal\";\n    return { weight, style };\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(fontsharePrefix))\n      return null;\n    const tokens = selector.split(\"-\");\n    if (tokens.length !== 2)\n      return null;\n    const [family, variant] = tokens;\n    if (!family || !variant)\n      return null;\n    return {\n      name: family.replace(fontsharePrefix, \"\"),\n      variant,\n      source: this.name,\n      isVariable: variant.toLowerCase().includes(\"variable\")\n    };\n  }\n  static createSelector(family, variant) {\n    return `${fontsharePrefix}${family}-${variant.toLowerCase()}`;\n  }\n  /**\n   * We are using this selector to get Open Type features and variable fonts variation axes.\n   * CAUTION: This method has to be exactly the same as the one in font-metadata-extractor tool.\n   * https://github.com/framer/FramerStudio/blob/master/tools/font-metadata-extractor/src/utils/fontShare.ts\n   */\n  static createMetadataSelector(family) {\n    return `${fontsharePrefix}${family}`;\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n  async importFonts(fontshareFonts, variationAxesData) {\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    const fontsWithOpenType = await loadFontsWithOpenType(\"fontshare\" /* Fontshare */);\n    const fonts = [];\n    for (const fontshareFont of fontshareFonts) {\n      const fontStyles = fontshareFont.font_styles.filter((fontStyle) => {\n        const variant = fontStyle.name.toLowerCase();\n        const allowedVariantMatch = allowedVariantsRegex.exec(variant);\n        if (!allowedVariantMatch || variant.split(\" \").includes(\"wide\")) {\n          return false;\n        }\n        return true;\n      });\n      const fontVariants = fontStyles.map((fontStyle) => {\n        const variantInfo = FontshareSource.parseVariant(fontStyle.name);\n        return {\n          ...variantInfo,\n          selector: FontshareSource.createSelector(fontshareFont.name, fontStyle.name),\n          isVariable: fontStyle.is_variable,\n          fontshareVariantName: fontStyle.name,\n          file: fontStyle.file\n        };\n      });\n      const key7 = FontshareSource.createMetadataSelector(fontshareFont.name);\n      const variationAxes = variationAxesData == null ? void 0 : variationAxesData[key7];\n      const familyName = fontshareFont.name;\n      let fontFamily = this.getFontFamilyByName(familyName);\n      if (!fontFamily) {\n        fontFamily = { name: familyName, fonts: [], source: this.name };\n        this.addFontFamily(fontFamily);\n      }\n      const fontMetadataSelector = FontshareSource.createMetadataSelector(fontshareFont.name);\n      const hasOpenTypeFeatures = fontsWithOpenType[fontMetadataSelector];\n      for (const fontVariant of fontVariants) {\n        const { variantBold, variantBoldItalic, variantItalic, variantVariable, variantVariableItalic } = getRelatedFontVariants(fontVariant, fontVariants);\n        const font = {\n          family: fontFamily,\n          variant: fontVariant.fontshareVariantName.toLowerCase(),\n          selector: fontVariant.selector,\n          selectorBold: variantBold == null ? void 0 : variantBold.selector,\n          selectorBoldItalic: variantBoldItalic == null ? void 0 : variantBoldItalic.selector,\n          selectorItalic: variantItalic == null ? void 0 : variantItalic.selector,\n          selectorVariable: variantVariable == null ? void 0 : variantVariable.selector,\n          selectorVariableItalic: variantVariableItalic == null ? void 0 : variantVariableItalic.selector,\n          weight: fontVariant.weight,\n          style: fontVariant.style,\n          file: fontVariant.file,\n          category: mapToKnownCategory(fontshareFont.category),\n          hasOpenTypeFeatures,\n          variationAxes: fontVariant.isVariable ? variationAxes : void 0\n        };\n        fontFamily.fonts.push(font);\n        fonts.push(font);\n      }\n    }\n    return fonts;\n  }\n  async getOpenTypeFeatures(family) {\n    const fontToOpenTypeFeatures = await loadFontToOpenTypeFeatures(\"fontshare\" /* Fontshare */);\n    const selector = FontshareSource.createMetadataSelector(family);\n    return fontToOpenTypeFeatures[selector];\n  }\n};\nfunction mapToKnownCategory(categoryString) {\n  const categoryMapping = {\n    serif: \"serif\",\n    sans: \"sans-serif\",\n    slab: \"slab\",\n    display: \"display\",\n    // As of Nov 2023, these two look similar enough \u2013 so we can map them into the same category.\n    handwritten: \"handwriting\",\n    script: \"handwriting\"\n  };\n  const category = parseFontshareCategories(categoryString)[0];\n  return category && categoryMapping[category];\n}\n\n// ../../library/src/render/fonts/FramerFontSource.ts\nvar framerInterFontPrefix = \"Inter\";\nvar framerFontPrefix = \"FR;\";\nvar weightNameToNumber2 = {\n  Thin: 100,\n  ExtraLight: 200,\n  Light: 300,\n  \"\": 400,\n  // Regular weights have a selector like \"Inter\" or \"Inter-Italic\", with no mention of weight.\n  Medium: 500,\n  SemiBold: 600,\n  Bold: 700,\n  ExtraBold: 800,\n  Black: 900\n};\nvar FramerFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"framer\" /* Framer */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  addFontFamily(familyName) {\n    const fontFamily = { name: familyName, fonts: [], source: this.name };\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n    return fontFamily;\n  }\n  static getDraftFontPropertiesBySelector(selector) {\n    if (!selector.startsWith(framerFontPrefix) && !selector.startsWith(framerInterFontPrefix))\n      return null;\n    const tokens = selector.split(\"-\");\n    const [family, weightAndStyleInfo = \"\"] = tokens;\n    if (!family)\n      return null;\n    const style = weightAndStyleInfo.includes(\"Italic\") ? \"italic\" : \"normal\";\n    const weightName = weightAndStyleInfo.replace(\"Italic\", \"\");\n    const weight = weightName && weightNameToNumber2[weightName] || 400;\n    return {\n      family,\n      style,\n      weight,\n      source: \"framer\" /* Framer */,\n      variant: void 0,\n      category: \"sans-serif\"\n    };\n  }\n  static createMetadataSelector(family) {\n    return `${framerFontPrefix}${family}`;\n  }\n  importFonts(framerFonts, variationAxesData) {\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    const fonts = [];\n    framerFonts.forEach((framerFont) => {\n      const { familyName, ...rest } = framerFont;\n      const key7 = FramerFontSource.createMetadataSelector(framerFont.familyName);\n      const variationAxes = variationAxesData == null ? void 0 : variationAxesData[key7];\n      let fontFamily = this.getFontFamilyByName(familyName);\n      if (!fontFamily) {\n        fontFamily = this.addFontFamily(familyName);\n      }\n      const isVariable = framerFont.selector === framerFont.selectorVariable || framerFont.selector === framerFont.selectorVariableItalic;\n      const font = {\n        ...rest,\n        family: fontFamily,\n        variationAxes: isVariable ? variationAxes : void 0\n      };\n      fontFamily.fonts.push(font);\n      fonts.push(font);\n    });\n    return fonts;\n  }\n  async getOpenTypeFeatures(family) {\n    const fontToOpenTypeFeatures = await loadFontToOpenTypeFeatures(\"framer\" /* Framer */);\n    const selector = FramerFontSource.createMetadataSelector(family);\n    return fontToOpenTypeFeatures[selector];\n  }\n};\n\n// ../../library/src/render/fonts/GoogleFontSource.ts\nvar googleFontSelectorPrefix = \"GF;\";\nvar GoogleFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"google\" /* Google */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  static parseVariant(variant) {\n    if (variant === \"regular\")\n      return { style: \"normal\", weight: 400 };\n    const match = /(\\d*)(normal|italic)?/u.exec(variant);\n    if (!match)\n      return {};\n    const weight = parseInt(match[1] || \"400\");\n    const style = match[2] === \"italic\" ? \"italic\" : \"normal\";\n    return { weight, style };\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(googleFontSelectorPrefix))\n      return null;\n    const isVariable = selector.includes(\"-variable-\");\n    const tokens = isVariable ? selector.split(\"-variable-\") : selector.split(\"-\");\n    if (tokens.length !== 2)\n      return null;\n    const [family, variant] = tokens;\n    if (!family || !variant)\n      return null;\n    return { name: family.replace(googleFontSelectorPrefix, \"\"), variant, source: this.name, isVariable };\n  }\n  static createSelector(family, variant, isVariableFont2) {\n    return `${googleFontSelectorPrefix}${family}-${isVariableFont2 ? \"variable-\" : \"\"}${variant}`;\n  }\n  /**\n   * We are using this selector to get Open Type features and variable fonts variation axes.\n   * CAUTION: This method has to be exactly the same as the one in font-metadata-extractor tool.\n   * https://github.com/framer/FramerStudio/blob/master/tools/font-metadata-extractor/src/utils/googleFonts.ts\n   */\n  static createMetadataSelector(family) {\n    return `${googleFontSelectorPrefix}${family}`;\n  }\n  addFontFamily(family) {\n    const fontFamily = { name: family, fonts: [], source: this.name };\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n    return fontFamily;\n  }\n  async importFonts(webFonts, webFontsWithAxes, fontsToVariationAxes) {\n    var _a;\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    const fontsWithOpenType = await loadFontsWithOpenType(\"google\" /* Google */);\n    const fonts = [];\n    const webFontsMap = mapBy(webFonts, (webFont) => webFont.family);\n    const webFontsWithAxesMap = mapBy(webFontsWithAxes, (webFont) => webFont.family);\n    for (const webFontName in webFontsMap) {\n      const webFont = webFontsMap[webFontName];\n      if (!webFont)\n        continue;\n      let fontFamily = this.getFontFamilyByName(webFont.family);\n      if (!fontFamily) {\n        fontFamily = this.addFontFamily(webFont.family);\n      }\n      const rawStaticVariants = webFont.variants;\n      const staticVariants = rawStaticVariants.map((variantName) => {\n        const parsedVariant = GoogleFontSource.parseVariant(variantName);\n        return {\n          ...parsedVariant,\n          googleFontsVariantName: variantName,\n          selector: GoogleFontSource.createSelector(webFontName, variantName, false),\n          isVariable: false,\n          file: webFont.files[variantName]\n        };\n      });\n      const variableFont = webFontsWithAxesMap[webFontName];\n      const variableVariants = (variableFont == null ? void 0 : variableFont.axes) ? variableFont.variants.map((variantName) => {\n        const parsedVariant = GoogleFontSource.parseVariant(variantName);\n        return {\n          ...parsedVariant,\n          googleFontsVariantName: variantName,\n          selector: GoogleFontSource.createSelector(webFontName, variantName, true),\n          isVariable: true,\n          file: variableFont.files[variantName]\n        };\n      }) : [];\n      const key7 = GoogleFontSource.createMetadataSelector(webFont.family);\n      const variationAxes = fontsToVariationAxes == null ? void 0 : fontsToVariationAxes[key7];\n      const allVariants = [...staticVariants, ...variableVariants];\n      const allSuccessfullyParsedVariants = allVariants.filter(isSuccessfullyParsedFontVariant);\n      const fontMetadataSelector = GoogleFontSource.createMetadataSelector(webFontName);\n      const hasOpenTypeFeatures = fontsWithOpenType[fontMetadataSelector];\n      for (const variant of allVariants) {\n        const { weight, style, selector, googleFontsVariantName } = variant;\n        const linkedVariants = isSuccessfullyParsedFontVariant(variant) ? getRelatedFontVariants(variant, allSuccessfullyParsedVariants) : void 0;\n        const { variantBold, variantItalic, variantBoldItalic, variantVariable, variantVariableItalic } = linkedVariants ?? {};\n        const font = {\n          family: fontFamily,\n          variant: googleFontsVariantName,\n          selector,\n          selectorBold: variantBold == null ? void 0 : variantBold.selector,\n          selectorBoldItalic: variantBoldItalic == null ? void 0 : variantBoldItalic.selector,\n          selectorItalic: variantItalic == null ? void 0 : variantItalic.selector,\n          selectorVariable: variantVariable == null ? void 0 : variantVariable.selector,\n          selectorVariableItalic: variantVariableItalic == null ? void 0 : variantVariableItalic.selector,\n          weight,\n          style,\n          category: mapToKnownCategory2(webFont.category),\n          file: (_a = variant.file) == null ? void 0 : _a.replace(\"http://\", \"https://\"),\n          variationAxes: variant.isVariable ? variationAxes : void 0,\n          hasOpenTypeFeatures\n        };\n        fontFamily.fonts.push(font);\n        fonts.push(font);\n      }\n    }\n    return fonts;\n  }\n  async getOpenTypeFeatures(family) {\n    const fontToOpenTypeFeatures = await loadFontToOpenTypeFeatures(\"google\" /* Google */);\n    const selector = GoogleFontSource.createMetadataSelector(family);\n    return fontToOpenTypeFeatures[selector];\n  }\n};\nfunction mapToKnownCategory2(category) {\n  const categoryMapping = {\n    serif: \"serif\",\n    \"sans-serif\": \"sans-serif\",\n    display: \"display\",\n    handwriting: \"handwriting\",\n    monospace: \"monospace\"\n  };\n  if (!category)\n    return void 0;\n  return categoryMapping[category];\n}\nfunction mapBy(array, keyFn) {\n  return array.reduce(\n    (acc, item) => {\n      acc[keyFn(item)] = item;\n      return acc;\n    },\n    {}\n  );\n}\n\n// ../../library/src/render/fonts/loadFont.ts\nvar import_fontfaceobserver = __toESM(require_fontfaceobserver_standalone(), 1);\nvar FONT_LOADING_TIMEOUT = 5e3;\nvar MAX_RETRIES = 3;\nvar FontLoadingError = class extends Error {\n  constructor(message) {\n    super(message);\n    this.name = \"FontLoadingError\";\n  }\n};\nvar fontRequests = /* @__PURE__ */ new Map();\nvar fontReadyPromises = /* @__PURE__ */ new Map();\nvar loadFont = (data2, doc) => loadFontWithRetries(data2, doc);\nasync function loadFontWithRetries(data2, doc, attempt = 0) {\n  const { family, url, stretch, unicodeRange, isVariableFont: isVariableFont2 } = data2;\n  const weight = isVariableFont2 ? data2.weight : data2.weight || 500;\n  const style = data2.style || \"normal\";\n  const requestId = `${family}-${style}-${weight}-${url}`;\n  if (!fontRequests.has(requestId) || attempt > 0) {\n    const fontFace = new FontFace(family, `url(${url})`, {\n      weight: isString(weight) ? weight : weight == null ? void 0 : weight.toString(),\n      style,\n      stretch,\n      unicodeRange\n    });\n    const readyPromise = fontFace.load().then(() => {\n      doc.fonts.add(fontFace);\n      return isFontReady(family, style, weight);\n    }).catch((e) => {\n      if (e.name !== \"NetworkError\") {\n        throw e;\n      }\n      if (attempt < MAX_RETRIES) {\n        return loadFontWithRetries(data2, doc, attempt + 1);\n      }\n      throw new FontLoadingError(\n        `Font loading failed after ${attempt} retries due to network error: ${JSON.stringify({\n          family,\n          style,\n          weight,\n          url,\n          stretch,\n          unicodeRange\n        })}`\n      );\n    });\n    fontRequests.set(requestId, readyPromise);\n  }\n  await fontRequests.get(requestId);\n}\nasync function isFontReady(family, style, weight) {\n  const readyPromiseId = `${family}-${style}-${weight}`;\n  if (!fontReadyPromises.has(readyPromiseId)) {\n    const observer = new import_fontfaceobserver.default(family, {\n      style,\n      weight\n    });\n    const readyPromise = observer.load(null, FONT_LOADING_TIMEOUT);\n    fontReadyPromises.set(readyPromiseId, readyPromise);\n  }\n  try {\n    await fontReadyPromises.get(readyPromiseId);\n  } catch (e) {\n    throw new FontLoadingError(\n      `Failed to check if font is ready (${FONT_LOADING_TIMEOUT}ms timeout exceeded): ${JSON.stringify({\n        family,\n        style,\n        weight\n      })}`\n    );\n  }\n}\n\n// ../../library/src/render/fonts/static/variable-fonts/framer.json\nvar framer_default = { \"FR;Inter\": [{ tag: \"opsz\", minValue: 14, maxValue: 32, defaultValue: 14, name: \"Optical size\" }, { tag: \"wght\", minValue: 100, maxValue: 900, defaultValue: 400, name: \"Weight\" }] };\n\n// ../../library/src/render/fonts/loadVariationAxes.ts\nfunction loadVariationAxes(source) {\n  try {\n    if (source === \"framer\" /* Framer */) {\n      if (!isValidVariationAxesData(framer_default))\n        return void 0;\n      return framer_default;\n    } else {\n      const axes = (async () => {\n        switch (source) {\n          case \"google\" /* Google */: {\n            return (await import(\"./google-UJB733SC.mjs\")).default;\n          }\n          case \"fontshare\" /* Fontshare */: {\n            return (await import(\"./fontshare-5ADQGVKG.mjs\")).default;\n          }\n          default:\n            assertNever(source);\n        }\n      })();\n      if (!isValidVariationAxesData(axes))\n        return void 0;\n      return axes;\n    }\n  } catch (error) {\n    console.error(error);\n    return void 0;\n  }\n}\nfunction isValidVariationAxesData(data2) {\n  return isObject(data2) && Object.values(data2).every(isValidVariationAxes);\n}\nfunction isVariationAxis2(data2) {\n  return isObject(data2) && isString(data2.tag);\n}\nfunction isValidVariationAxes(data2) {\n  return Array.isArray(data2) && data2.every(isVariationAxis2);\n}\n\n// ../../library/src/render/fonts/fontStore.ts\nvar FontStore = class {\n  constructor() {\n    /**\n     * Enabling the `FontStore` will make Text components automatically load\n     * their fonts on render. Otherwise font loading is the responsibility of\n     * the environment.\n     */\n    __publicField(this, \"enabled\", false);\n    __publicField(this, \"bySelector\", /* @__PURE__ */ new Map());\n    __publicField(this, \"getGoogleFontsListPromise\");\n    __publicField(this, \"getFontshareFontsListPromise\");\n    __publicField(this, \"getBuiltInFontsListPromise\");\n    __publicField(this, \"loadedSelectors\", /* @__PURE__ */ new Set());\n    __publicField(this, \"local\");\n    __publicField(this, \"google\");\n    __publicField(this, \"fontshare\");\n    __publicField(this, \"builtIn\");\n    __publicField(this, \"framer\");\n    __publicField(this, \"custom\");\n    this.local = new LocalFontSource();\n    this.google = new GoogleFontSource();\n    this.fontshare = new FontshareSource();\n    this.framer = new FramerFontSource();\n    this.custom = new CustomFontSource();\n    this.builtIn = new BuiltInFontSource();\n    this.bySelector = /* @__PURE__ */ new Map();\n    this.importLocalFonts();\n  }\n  addFont(font) {\n    this.bySelector.set(font.selector, font);\n  }\n  getAvailableFonts() {\n    return Array.from(this.bySelector.values());\n  }\n  importLocalFonts() {\n    for (const font of this.local.importFonts()) {\n      this.addFont(font);\n      this.loadFont(font);\n    }\n  }\n  async importGoogleFonts() {\n    if (!this.getGoogleFontsListPromise) {\n      this.getGoogleFontsListPromise = Promise.resolve().then(async () => {\n        const { staticFonts, variableFonts } = await runtime.fetchGoogleFontsList();\n        const axesData = await loadVariationAxes(\"google\" /* Google */);\n        for (const font of await this.google.importFonts(staticFonts, variableFonts, axesData)) {\n          this.addFont(font);\n        }\n        return { staticFonts, variableFonts };\n      });\n    }\n    return this.getGoogleFontsListPromise;\n  }\n  async importFontshareFonts() {\n    if (!this.getFontshareFontsListPromise) {\n      this.getFontshareFontsListPromise = runtime.fetchFontshareFontsList();\n      const fontshareFonts = await this.getFontshareFontsListPromise;\n      const axesData = await loadVariationAxes(\"fontshare\" /* Fontshare */);\n      for (const font of await this.fontshare.importFonts(fontshareFonts, axesData)) {\n        this.addFont(font);\n      }\n    }\n    return this.getFontshareFontsListPromise;\n  }\n  async importBuiltInFonts() {\n    if (!this.getBuiltInFontsListPromise) {\n      this.getBuiltInFontsListPromise = runtime.fetchBuiltInFontsList();\n      const builtInFonts = await this.getBuiltInFontsListPromise;\n      for (const font of await this.builtIn.importFonts(builtInFonts)) {\n        this.addFont(font);\n      }\n    }\n    return this.getBuiltInFontsListPromise;\n  }\n  importFramerFonts(fonts) {\n    const axesData = loadVariationAxes(\"framer\" /* Framer */);\n    this.framer.importFonts(fonts, axesData).forEach((font) => {\n      this.addFont(font);\n    });\n  }\n  importCustomFonts(assets) {\n    this.bySelector.forEach((_, key7) => {\n      if (key7.startsWith(customFontSelectorPrefix)) {\n        this.bySelector.delete(key7);\n      }\n    });\n    for (const font of this.custom.importFonts(assets)) {\n      this.addFont(font);\n    }\n  }\n  getFontFamily(info) {\n    const fontFamily = this[info.source].getFontFamilyByName(info.name);\n    return fontFamily;\n  }\n  getFontBySelector(selector, createFont = true) {\n    if (!selector)\n      return void 0;\n    if (selector.startsWith(customFontSelectorPrefix)) {\n      return this.custom.getFontBySelector(selector, createFont);\n    }\n    return this.bySelector.get(selector);\n  }\n  // Function called by draft to get font properties for a selector, before the (google) font is available in the store\n  // It replaces a previous function that created Font instances and added them to the store\n  // on the fly while rendering drafts, which caused issues (overriding real google font info with fake instances with partial data).\n  // Ideally this should not happen, but that's a fix for another day\n  getDraftPropertiesBySelector(selector) {\n    const font = this.getFontBySelector(selector);\n    if (font) {\n      return {\n        style: font.style,\n        weight: font.weight,\n        variant: font.variant,\n        family: createFontFamilyName(font),\n        source: font.family.source,\n        category: font.category\n      };\n    }\n    const googleLocator = this.google.parseSelector(selector);\n    if (googleLocator) {\n      const fontVariant = GoogleFontSource.parseVariant(googleLocator.variant);\n      if (isSuccessfullyParsedFontVariant(fontVariant)) {\n        const family = googleLocator.isVariable ? createVariableFontFamilyName(googleLocator.name) : googleLocator.name;\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: googleLocator.variant,\n          family,\n          source: \"google\" /* Google */,\n          category: void 0\n        };\n      }\n    }\n    const fontshareLocator = this.fontshare.parseSelector(selector);\n    if (fontshareLocator) {\n      const fontVariant = FontshareSource.parseVariant(fontshareLocator.variant);\n      if (isSuccessfullyParsedFontVariant(fontVariant)) {\n        const family = fontshareLocator.isVariable ? createVariableFontFamilyName(fontshareLocator.name) : fontshareLocator.name;\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: fontshareLocator.variant,\n          family,\n          source: \"fontshare\" /* Fontshare */,\n          category: void 0\n        };\n      }\n    }\n    const builtInFontLocator = this.builtIn.parseSelector(selector);\n    if (builtInFontLocator) {\n      const fontVariant = BuiltInFontSource.parseVariant(builtInFontLocator.variant);\n      if (isSuccessfullyParsedFontVariant(fontVariant)) {\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: builtInFontLocator.variant,\n          family: builtInFontLocator.name,\n          source: \"builtIn\" /* BuiltIn */,\n          category: void 0\n        };\n      }\n    }\n    const framerFontDraftProperties = FramerFontSource.getDraftFontPropertiesBySelector(selector);\n    if (framerFontDraftProperties) {\n      return framerFontDraftProperties;\n    }\n    return null;\n  }\n  isSelectorLoaded(selector) {\n    return this.loadedSelectors.has(selector);\n  }\n  /**\n   * Load a single font\n   * */\n  async loadFont(font) {\n    if (this.isSelectorLoaded(font.selector)) {\n      return 0 /* AlreadyLoaded */;\n    }\n    const source = font.family.source;\n    const fontIsVariable = isVariableFont(font);\n    switch (source) {\n      case \"local\" /* Local */:\n        this.loadedSelectors.add(font.selector);\n        return 1 /* Loaded */;\n      case \"framer\" /* Framer */:\n        if (import_process3.default.env.NODE_ENV !== \"test\") {\n          await isFontReady(font.family.name, font.style, font.weight);\n        }\n        if (fontIsVariable) {\n          if (!font.file) {\n            return Promise.reject(`Unable to load font: ${font.selector}`);\n          }\n          await loadFont(\n            {\n              family: createFontFamilyName(font),\n              url: font.file,\n              weight: font.weight,\n              style: font.style,\n              isVariableFont: fontIsVariable\n            },\n            document\n          );\n        }\n        this.loadedSelectors.add(font.selector);\n        return 1 /* Loaded */;\n      case \"google\" /* Google */:\n      case \"fontshare\" /* Fontshare */:\n      case \"builtIn\" /* BuiltIn */:\n      case \"custom\" /* Custom */:\n        if (!font.file) {\n          return Promise.reject(`Unable to load font: ${font.selector}`);\n        }\n        await loadFont(\n          {\n            family: createFontFamilyName(font),\n            url: font.file,\n            weight: font.weight,\n            style: font.style,\n            isVariableFont: fontIsVariable\n          },\n          document\n        );\n        this.loadedSelectors.add(font.selector);\n        return 1 /* Loaded */;\n      default:\n        assertNever(source);\n    }\n  }\n  async loadFontsFromSelectors(selectors) {\n    if (!this.enabled)\n      return [];\n    const googleFontsRequested = selectors.some((selector) => selector.startsWith(googleFontSelectorPrefix));\n    const fontshareFontsRequested = selectors.some((selector) => selector.startsWith(fontsharePrefix));\n    const builtInFontsRequested = selectors.some((selector) => selector.startsWith(builtInFontSelectorPrefix));\n    if (googleFontsRequested || fontshareFontsRequested || builtInFontsRequested) {\n      try {\n        await this.importFontshareFonts();\n      } catch (error) {\n        warnOnce(\"Failed to load Fontshare fonts:\", error);\n      }\n      try {\n        await this.importGoogleFonts();\n      } catch (error) {\n        warnOnce(\"Failed to load Google fonts:\", error);\n      }\n      try {\n        await this.importBuiltInFonts();\n      } catch (error) {\n        warnOnce(\"Failed to load built=in fonts:\", error);\n      }\n    }\n    const fonts = selectors.map((s) => this.bySelector.get(s)).filter((f) => !!f);\n    return Promise.allSettled(fonts.map((f) => this.loadFont(f)));\n  }\n  async loadFonts(fontSelectors) {\n    const results = await this.loadFontsFromSelectors(fontSelectors);\n    const newlyLoadedFontCount = results.filter(\n      (result) => result.status === \"fulfilled\" && result.value === 1 /* Loaded */\n    ).length;\n    return { newlyLoadedFontCount };\n  }\n  // Deprecated methods that are kept for backwards compatibility with any compiled code that might still be using them\n  /**\n   * @deprecated This method\u2019s API is confusing as 1) it works for all fonts,\n   * not just missing ones, 2) it supports both async/await and a callback,\n   * but the callback is called only if *all* fonts have been loaded. Use\n   * `loadFonts` instead.\n   */\n  async loadMissingFonts(fontSelectors, fontsLoadedCallback) {\n    const selectors = fontSelectors.filter((selector) => {\n      return !fontStore.isSelectorLoaded(selector);\n    });\n    if (selectors.length === 0)\n      return;\n    await fontStore.loadWebFontsFromSelectors(selectors);\n    const isEachFontLoaded = selectors.every((selector) => {\n      return fontStore.isSelectorLoaded(selector);\n    });\n    if (isEachFontLoaded && fontsLoadedCallback)\n      fontsLoadedCallback();\n  }\n  /**\n   * @deprecated This method is misleading as it works with all fonts, not\n   * just web fonts. Use `loadFonts` instead. (In Framer, \u201Cweb fonts\u201D has a\n   * specific meaning: it refers to Google/Fontshare fonts and exludes custom\n   * and local fonts. See e.g. `WebFontStore` and the \u201CWeb\u201D/\u201CCustom\u201D toggle in\n   * the font picker in the UI. More context: https://github.com/framer/FramerStudio/pull/15778#discussion_r1395120760)\n   */\n  async loadWebFontsFromSelectors(selectors) {\n    return this.loadFontsFromSelectors(selectors);\n  }\n  // defaultFont doesn\u2019t seem to be used anywhere in our code (except tests),\n  // but keeping it for backwards compatibility with any compiled code.\n  /** @deprecated This will be removed in the future. Don\u2019t use it. */\n  get defaultFont() {\n    const defaultFont = this.getFontBySelector(\"Inter\");\n    assert(defaultFont, \"Can\\u2019t find Inter font\");\n    return defaultFont;\n  }\n};\nvar fontStore = /* @__PURE__ */ new FontStore();\n\n// ../../library/src/render/presentation/CustomProperties.tsx\nimport { jsx as jsx66 } from \"react/jsx-runtime\";\nfunction CustomProperties({\n  children,\n  customProperties\n}) {\n  return /* @__PURE__ */ jsx66(\"div\", { style: customProperties, children });\n}\n\n// ../../library/src/render/presentation/DeprecatedComponentContainer.tsx\nimport React78 from \"react\";\nimport { jsx as jsx67 } from \"react/jsx-runtime\";\nvar DeprecatedComponentContainer = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"state\", {});\n      __publicField(this, \"setElement\", (element) => {\n        if (this.props.innerRef) {\n          this.props.innerRef.current = element;\n        }\n        this.setLayerElement(element);\n      });\n    }\n    componentDidCatch(error, info) {\n      var _a2;\n      let stack = (_a2 = info.componentStack) == null ? void 0 : _a2.split(\"\\n\").filter((line) => line.length !== 0);\n      let currentIndex = 0;\n      if (stack) {\n        for (const line of stack) {\n          if (line.startsWith(`    in ${this.constructor.name}`)) {\n            break;\n          }\n          currentIndex++;\n        }\n        stack = stack.slice(0, currentIndex);\n      }\n      this.setState({\n        lastError: {\n          children: this.props.children,\n          name: error.name,\n          message: error.message,\n          componentStack: stack\n        }\n      });\n    }\n    renderErrorPlaceholder(error) {\n      const { RenderPlaceholder } = runtime;\n      return /* @__PURE__ */ jsx67(FrameWithMotion, { ...this.props, background: null, children: /* @__PURE__ */ jsx67(RenderPlaceholder, { error }) });\n    }\n    render() {\n      var _a2, _b;\n      countNodeRender();\n      let { children } = this.props;\n      const { componentIdentifier } = this.props;\n      const { lastError: error } = this.state;\n      const noChildren = !children || Array.isArray(children) && children.filter((c) => c).length === 0;\n      if (noChildren) {\n        const errorComponent = runtime.componentLoader.errorForIdentifier(componentIdentifier);\n        if (errorComponent) {\n          const title = `Error in ${errorComponent.file}`;\n          const message = errorComponent.error;\n          return this.renderErrorPlaceholder({ title, message });\n        }\n      }\n      if (error && error.children === children) {\n        const component = runtime.componentLoader.componentForIdentifier(componentIdentifier);\n        const file = component ? component.file : \"???\";\n        const title = `Error in ${file}`;\n        const message = error.message;\n        return this.renderErrorPlaceholder({ title, message });\n      }\n      ;\n      (_b = (_a2 = asRecord(safeWindow))[\"__checkComponentBudget__\"]) == null ? void 0 : _b.call(_a2);\n      let frameProps = this.props;\n      if (RenderTarget.current() !== RenderTarget.canvas) {\n        const {\n          left,\n          right,\n          top,\n          bottom,\n          center,\n          centerX,\n          centerY,\n          aspectRatio,\n          parentSize,\n          width,\n          height,\n          rotation,\n          opacity: _opacity,\n          visible,\n          _constraints,\n          _initialStyle,\n          name,\n          positionSticky,\n          positionStickyTop,\n          positionStickyRight,\n          positionStickyBottom,\n          positionStickyLeft,\n          // Remove the children and the componentIdentifier from the props passed into the component\n          componentIdentifier: originalComponentIdentifier,\n          children: originalChildren,\n          style,\n          duplicatedFrom,\n          widthType,\n          heightType,\n          ...childProps\n        } = frameProps;\n        children = React78.Children.map(originalChildren, (child) => {\n          if (!isReactChild(child) || !isReactElement(child)) {\n            return child;\n          }\n          if (!isPageOrScroll(originalComponentIdentifier)) {\n            return /* @__PURE__ */ jsx67(LayoutGroup, { inherit: false, id: this.props.__layoutId, children: /* @__PURE__ */ jsx67(AutomaticLayoutIds, { enabled: false, children: React78.cloneElement(child, childProps) }) });\n          }\n          return React78.cloneElement(child, childProps);\n        });\n        frameProps = {\n          style,\n          _constraints,\n          _initialStyle,\n          left,\n          right,\n          top,\n          bottom,\n          center,\n          centerX,\n          centerY,\n          aspectRatio,\n          parentSize,\n          width,\n          height,\n          rotation,\n          visible,\n          name,\n          duplicatedFrom,\n          id: frameProps.id,\n          layoutId: this.props.__layoutId,\n          widthType,\n          heightType,\n          positionSticky,\n          positionStickyTop,\n          positionStickyRight,\n          positionStickyBottom,\n          positionStickyLeft\n        };\n      }\n      return (\n        /* The background should come before the frameProps. It looks like there never should be a background in frameProps,\n         * but published design components can contain an old version of the presentation tree that expects the background\n         * that is passed to be rendered here\n         * See the stackBackgroundTest.tsx integration test for an example of such a case\n         */\n        /* @__PURE__ */ jsx67(ComponentContainerContext.Provider, { value: true, children: /* @__PURE__ */ jsx67(\n          FrameWithMotion,\n          {\n            \"data-framer-component-container\": true,\n            background: null,\n            overflow: \"visible\",\n            ref: this.setElement,\n            ...frameProps,\n            children\n          }\n        ) })\n      );\n    }\n  }, __publicField(_a, \"supportsConstraints\", true), __publicField(_a, \"defaultComponentContainerProps\", {\n    style: {},\n    visible: true,\n    componentIdentifier: \"\"\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultComponentContainerProps\n  }), __publicField(_a, \"contextType\", ComponentContainerContext), _a;\n})();\nfunction isPageOrScroll(identifier) {\n  if (!identifier)\n    return false;\n  if (identifier === \"framer/Page\")\n    return true;\n  if (identifier === \"framer/Scroll\")\n    return true;\n  return false;\n}\n\n// ../../library/src/render/presentation/Forms/FormPlainTextInput.tsx\nimport { forwardRef as forwardRef7, startTransition as startTransition10, useCallback as useCallback18, useState as useState8 } from \"react\";\n\n// ../../library/src/render/presentation/Forms/shared.ts\nimport React79 from \"react\";\nvar FormInputStyleVariableNames = /* @__PURE__ */ ((FormInputStyleVariableNames2) => {\n  FormInputStyleVariableNames2[\"Padding\"] = \"--framer-input-padding\";\n  FormInputStyleVariableNames2[\"BorderRadiusTopLeft\"] = \"--framer-input-border-radius-top-left\";\n  FormInputStyleVariableNames2[\"BorderRadiusTopRight\"] = \"--framer-input-border-radius-top-right\";\n  FormInputStyleVariableNames2[\"BorderRadiusBottomRight\"] = \"--framer-input-border-radius-bottom-right\";\n  FormInputStyleVariableNames2[\"BorderRadiusBottomLeft\"] = \"--framer-input-border-radius-bottom-left\";\n  FormInputStyleVariableNames2[\"BorderColor\"] = \"--framer-input-border-color\";\n  FormInputStyleVariableNames2[\"BorderTopWidth\"] = \"--framer-input-border-top-width\";\n  FormInputStyleVariableNames2[\"BorderRightWidth\"] = \"--framer-input-border-right-width\";\n  FormInputStyleVariableNames2[\"BorderBottomWidth\"] = \"--framer-input-border-bottom-width\";\n  FormInputStyleVariableNames2[\"BorderLeftWidth\"] = \"--framer-input-border-left-width\";\n  FormInputStyleVariableNames2[\"BorderStyle\"] = \"--framer-input-border-style\";\n  FormInputStyleVariableNames2[\"Background\"] = \"--framer-input-background\";\n  FormInputStyleVariableNames2[\"FontFamily\"] = \"--framer-input-font-family\";\n  FormInputStyleVariableNames2[\"FontWeight\"] = \"--framer-input-font-weight\";\n  FormInputStyleVariableNames2[\"FontSize\"] = \"--framer-input-font-size\";\n  FormInputStyleVariableNames2[\"FontColor\"] = \"--framer-input-font-color\";\n  FormInputStyleVariableNames2[\"FontStyle\"] = \"--framer-input-font-style\";\n  FormInputStyleVariableNames2[\"FontLetterSpacing\"] = \"--framer-input-font-letter-spacing\";\n  FormInputStyleVariableNames2[\"FontTextAlignment\"] = \"--framer-input-font-text-alignment\";\n  FormInputStyleVariableNames2[\"FontLineHeight\"] = \"--framer-input-font-line-height\";\n  FormInputStyleVariableNames2[\"FontOpenType\"] = \"--framer-input-font-open-type-features\";\n  FormInputStyleVariableNames2[\"PlaceholderColor\"] = \"--framer-input-placeholder-color\";\n  FormInputStyleVariableNames2[\"BoxShadow\"] = \"--framer-input-box-shadow\";\n  FormInputStyleVariableNames2[\"FocusedBorderColor\"] = \"--framer-input-focused-border-color\";\n  FormInputStyleVariableNames2[\"FocusedBorderWidth\"] = \"--framer-input-focused-border-width\";\n  FormInputStyleVariableNames2[\"FocusedBorderStyle\"] = \"--framer-input-focused-border-style\";\n  FormInputStyleVariableNames2[\"FocusedBackground\"] = \"--framer-input-focused-background\";\n  FormInputStyleVariableNames2[\"FocusedBoxShadow\"] = \"--framer-input-focused-box-shadow\";\n  FormInputStyleVariableNames2[\"FocusedTransition\"] = \"--framer-input-focused-transition\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBackground\"] = \"--framer-input-boolean-checked-background\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBorderColor\"] = \"--framer-input-boolean-checked-border-color\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBorderWidth\"] = \"--framer-input-boolean-checked-border-width\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBorderStyle\"] = \"--framer-input-boolean-checked-border-style\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBoxShadow\"] = \"--framer-input-boolean-checked-box-shadow\";\n  FormInputStyleVariableNames2[\"BooleanCheckedTransition\"] = \"--framer-input-boolean-checked-transition\";\n  FormInputStyleVariableNames2[\"InvalidTextColor\"] = \"--framer-input-invalid-text-color\";\n  FormInputStyleVariableNames2[\"IconBackgroundImage\"] = \"--framer-input-icon-image\";\n  FormInputStyleVariableNames2[\"IconMaskImage\"] = \"--framer-input-icon-mask-image\";\n  FormInputStyleVariableNames2[\"IconColor\"] = \"--framer-input-icon-color\";\n  FormInputStyleVariableNames2[\"WrapperHeight\"] = \"--framer-input-wrapper-height\";\n  return FormInputStyleVariableNames2;\n})(FormInputStyleVariableNames || {});\nvar Var = FormInputStyleVariableNames;\nvar inputClassName = \"framer-form-input\";\nvar inputWrapperClassName = \"framer-form-input-wrapper\";\nvar emptyValueClassName = \"framer-form-input-empty\";\nvar forcedFocusClassName = \"framer-form-input-forced-focus\";\nvar forcedCheckedClassName = \"framer-form-input-forced-checked\";\nfunction cssValue(value) {\n  if (typeof value === \"number\")\n    return value;\n  if (value.startsWith(\"--\"))\n    return css.variable(value);\n  if (value === \"\")\n    return '\"\"';\n  return value;\n}\nfunction css(selector, declaration) {\n  let output = \" \";\n  for (const key7 in declaration) {\n    const value = declaration[key7];\n    output += `${key7.replace(/([A-Z])/gu, \"-$1\").toLowerCase()}: ${cssValue(value)}; `;\n  }\n  return selector + \" {\" + output + \"}\";\n}\n((css2) => {\n  function variable(...variables) {\n    const lastItem = variables[variables.length - 1];\n    let value = lastItem.startsWith(\"--\") ? `var(${lastItem})` : lastItem;\n    for (let index = variables.length - 2; index >= 0; index--) {\n      const element = variables[index];\n      value = `var(${element}, ${value})`;\n    }\n    return value;\n  }\n  css2.variable = variable;\n})(css || (css = {}));\nvar sharedInputCSS = [\n  css(`.${inputClassName}`, {\n    padding: css.variable(Var.Padding),\n    background: \"transparent\",\n    fontFamily: css.variable(Var.FontFamily),\n    fontWeight: css.variable(Var.FontWeight),\n    fontSize: css.variable(Var.FontSize),\n    fontStyle: css.variable(Var.FontStyle),\n    color: css.variable(Var.FontColor),\n    fontFeatureSettings: css.variable(Var.FontOpenType),\n    border: \"none\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n    overflow: \"hidden\",\n    width: \"100%\",\n    height: css.variable(Var.WrapperHeight, \"100%\"),\n    letterSpacing: css.variable(Var.FontLetterSpacing),\n    textAlign: css.variable(Var.FontTextAlignment),\n    lineHeight: css.variable(Var.FontLineHeight)\n  }),\n  css(`.${inputClassName}:focus-visible`, { outline: \"none\" })\n];\nvar inputWrapperCSS = /* @__PURE__ */ (() => [css(`.${inputWrapperClassName}`, { overflow: \"hidden\" })])();\nvar inputBorderAllSides = `var(${Var.BorderTopWidth}) var(${Var.BorderRightWidth}) var(${Var.BorderBottomWidth}) var(${Var.BorderLeftWidth})`;\nvar inputBorderCSS = [\n  `.${inputWrapperClassName}:after {\n        content: \"\";\n        pointer-events: none;\n        box-sizing: border-box;\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 100%;\n        border-top-left-radius: var(${Var.BorderRadiusTopLeft});\n        border-top-right-radius: var(${Var.BorderRadiusTopRight});\n        border-bottom-right-radius: var(${Var.BorderRadiusBottomRight});\n        border-bottom-left-radius: var(${Var.BorderRadiusBottomLeft});\n        border-color: var(${Var.BorderColor});\n        border-top-width: var(${Var.BorderTopWidth});\n        border-right-width: var(${Var.BorderRightWidth});\n        border-bottom-width: var(${Var.BorderBottomWidth});\n        border-left-width: var(${Var.BorderLeftWidth});\n        border-style: var(${Var.BorderStyle});\n        transition: var(${Var.FocusedTransition});\n        transition-property: border-color, border-width, border-style, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius;\n    }`\n];\nvar customValidityKey = \"customError\";\nvar validKey = \"valid\";\nfunction isRelevantValidityStateKey(key7) {\n  return key7 !== customValidityKey && key7 !== validKey;\n}\nfunction isInvalid(validity) {\n  for (const key7 in validity) {\n    if (!isRelevantValidityStateKey(key7))\n      continue;\n    if ((validity == null ? void 0 : validity[key7]) === true)\n      return true;\n  }\n  return false;\n}\nfunction useCustomValidity(onValid, onInvalid, onChange, onBlur, onFocus) {\n  const isValidRef = React79.useRef(null);\n  const handleInvalid = React79.useCallback(\n    (e) => {\n      if (!onInvalid)\n        return;\n      if (isValidRef.current === false)\n        return;\n      isValidRef.current = false;\n      e.currentTarget.setCustomValidity(\" \");\n      e.currentTarget.reportValidity();\n      onInvalid(e);\n    },\n    [onInvalid]\n  );\n  const handleChange = React79.useCallback(\n    (e) => {\n      onChange == null ? void 0 : onChange(e);\n      if (!onInvalid && !onValid)\n        return;\n      const validity = e.target.validity;\n      if (isValidRef.current === false && !isInvalid(validity)) {\n        e.currentTarget.setCustomValidity(\"\");\n        e.target.reportValidity();\n        isValidRef.current = true;\n        onValid == null ? void 0 : onValid();\n      }\n    },\n    [onInvalid, onValid, onChange]\n  );\n  const handleBlur = React79.useCallback(\n    (e) => {\n      if (!onInvalid) {\n        onBlur == null ? void 0 : onBlur(e);\n        return;\n      }\n      if (isValidRef.current === false)\n        return;\n      const validity = e.currentTarget.validity;\n      if (isInvalid(validity)) {\n        handleInvalid(e);\n        return;\n      }\n      onBlur == null ? void 0 : onBlur(e);\n    },\n    [handleInvalid, onBlur, onInvalid]\n  );\n  return React79.useMemo(() => {\n    return {\n      onInvalid: handleInvalid,\n      onChange: handleChange,\n      onBlur: handleBlur,\n      onFocus\n    };\n  }, [handleInvalid, handleChange, handleBlur, onFocus]);\n}\nvar iconSpacing = 10;\nvar iconSize = 16;\nvar inputIconCSSDeclaration = {\n  content: \"\",\n  display: \"block\",\n  position: \"absolute\",\n  right: 0,\n  top: 0,\n  bottom: 0,\n  width: `${iconSize}px`,\n  boxSizing: \"content-box\",\n  padding: css.variable(Var.Padding),\n  border: \"none\",\n  pointerEvents: \"none\",\n  backgroundRepeat: \"no-repeat\",\n  backgroundSize: `${iconSize}px`,\n  maskRepeat: \"no-repeat\",\n  maskSize: `${iconSize}px`,\n  backgroundColor: css.variable(Var.IconColor)\n};\n\n// ../../library/src/render/presentation/Forms/FormPlainTextInput.tsx\nimport { jsx as jsx68 } from \"react/jsx-runtime\";\nimport { createElement as createElement2 } from \"react\";\nvar passwordManagerIgnoreDataProps = {\n  // 1Password\n  \"data-1p-ignore\": true,\n  // LastPass\n  \"data-lpignore\": true,\n  // Dashlane\n  // https://support.dashlane.com/hc/en-us/articles/4420122792594-Optimize-your-web-forms-for-Dashlane-Autofill\n  \"data-form-type\": \"other\",\n  // autocomplete=\"off\" is a generic property that disables autofilling. It\n  // is not always respected by some browsers or password managers.\n  autocomplete: \"off\"\n};\nvar PlainTextInput = /* @__PURE__ */ forwardRef7(function FormPlainTextInput(props, ref) {\n  const {\n    autoFocus,\n    className: className2,\n    inputName,\n    max,\n    min,\n    placeholder,\n    required,\n    step: step2,\n    style,\n    type,\n    maxLength,\n    // We use a defaultValue instead of a value so that the input remains\n    // uncontrolled by React. This is important because we want the user\n    // to be able to provide an initial value in the property panel, and for\n    // the value to be editable by the user in the preview.\n    defaultValue,\n    autofillEnabled,\n    onChange,\n    onBlur,\n    onInvalid,\n    onFocus,\n    onValid,\n    ...rest\n  } = props;\n  const [hasValue, setHasValue] = useState8(!!defaultValue);\n  const [prevDefaultValue, setPrevDefaultValue] = useState8();\n  if (defaultValue !== prevDefaultValue) {\n    setHasValue(!!defaultValue);\n    setPrevDefaultValue(defaultValue);\n  }\n  const handleChange = useCallback18(\n    async (e) => {\n      await interactionResponse();\n      const newValue = e.target.value;\n      onChange == null ? void 0 : onChange(e);\n      startTransition10(() => setHasValue(!!newValue));\n    },\n    [onChange]\n  );\n  const eventHandlers = useCustomValidity(onValid, onInvalid, handleChange, onBlur, onFocus);\n  if (type === \"hidden\") {\n    return /* @__PURE__ */ jsx68(motion.input, { type: \"hidden\", name: inputName, defaultValue });\n  }\n  const dataProps = autofillEnabled === false ? passwordManagerIgnoreDataProps : void 0;\n  return /* @__PURE__ */ jsx68(\n    motion.div,\n    {\n      ref,\n      style,\n      className: cx(textInputWrapperClassName, inputWrapperClassName, className2),\n      ...rest,\n      children: type === \"textarea\" ? /* @__PURE__ */ createElement2(\n        motion.textarea,\n        {\n          ...dataProps,\n          ...eventHandlers,\n          key: defaultValue,\n          required,\n          autoFocus,\n          name: inputName,\n          placeholder,\n          className: inputClassName,\n          defaultValue,\n          maxLength\n        }\n      ) : /* @__PURE__ */ createElement2(\n        motion.input,\n        {\n          ...dataProps,\n          ...eventHandlers,\n          key: defaultValue,\n          type,\n          required,\n          autoFocus,\n          name: inputName,\n          placeholder,\n          className: cx(inputClassName, !hasValue && emptyValueClassName),\n          defaultValue,\n          min,\n          max,\n          step: step2,\n          maxLength\n        }\n      )\n    }\n  );\n});\nvar iconSize2 = 16;\nvar textInputWrapperClassName = \"framer-form-text-input\";\nvar defaultTextareaResizerIcon = 'data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\"><path d=\"m1.5 8 7-7M9 5.5l-3 3\" stroke=\"%23999\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path></svg>';\nvar defaultDateIconMaskImage = 'data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path fill=\"rgb(153, 153, 153)\" d=\"M3 5a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2H3Z\" opacity=\".3\"/><path fill=\"transparent\" stroke=\"rgb(153, 153, 153)\" stroke-width=\"1.5\" d=\"M3.25 5.25a2 2 0 0 1 2-2h5.5a2 2 0 0 1 2 2v5.5a2 2 0 0 1-2 2h-5.5a2 2 0 0 1-2-2ZM3 6.75h9.5\"/></svg>';\nvar defaultTimeIconMaskImage = 'data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path fill=\"transparent\" stroke=\"rgb(153, 153, 153)\" stroke-width=\"1.5\" d=\"M2.5 8a5.5 5.5 0 1 1 11 0 5.5 5.5 0 1 1-11 0Z\"/><path fill=\"transparent\" stroke=\"rgb(153, 153, 153)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M7.75 8.25v-3m0 3h2\"/></svg>';\nvar styles = /* @__PURE__ */ (() => [\n  ...sharedInputCSS,\n  ...inputBorderCSS,\n  ...inputWrapperCSS,\n  css(`.${inputWrapperClassName}`, {\n    boxShadow: css.variable(\"--framer-input-box-shadow\" /* BoxShadow */),\n    borderTopLeftRadius: css.variable(\"--framer-input-border-radius-top-left\" /* BorderRadiusTopLeft */),\n    borderTopRightRadius: css.variable(\"--framer-input-border-radius-top-right\" /* BorderRadiusTopRight */),\n    borderBottomRightRadius: css.variable(\"--framer-input-border-radius-bottom-right\" /* BorderRadiusBottomRight */),\n    borderBottomLeftRadius: css.variable(\"--framer-input-border-radius-bottom-left\" /* BorderRadiusBottomLeft */),\n    background: css.variable(\"--framer-input-background\" /* Background */),\n    transition: css.variable(\"--framer-input-focused-transition\" /* FocusedTransition */),\n    transitionProperty: \"background, box-shadow\"\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}::placeholder`, {\n    color: css.variable(\"--framer-input-placeholder-color\" /* PlaceholderColor */)\n  }),\n  css(\n    `.${textInputWrapperClassName} .${inputClassName}[type=\"date\"], .${textInputWrapperClassName} .${inputClassName}[type=\"time\"]`,\n    {\n      \"-webkit-appearance\": \"none\",\n      appearance: \"none\"\n    }\n  ),\n  // iOS only fix for centered date & time inputs: https://github.com/tailwindlabs/tailwindcss-forms/pull/144\n  css(`.${textInputWrapperClassName} .${inputClassName}::-webkit-date-and-time-value`, {\n    textAlign: \"start\"\n  }),\n  css(`.${textInputWrapperClassName} textarea`, {\n    display: \"flex\",\n    resize: css.variable(\"--framer-textarea-resize\" /* Resize */),\n    overflowY: \"auto\",\n    minHeight: \"inherit\",\n    maxHeight: \"inherit\",\n    whiteSpace: \"break-spaces\"\n  }),\n  // This targets the resize handle in WebKit browsers. Unfortunately, it is not\n  // possible in CSS to target the resize handle in Firefox, so FF will always\n  // show the native resize handle.\n  css(`.${textInputWrapperClassName} textarea::-webkit-resizer`, {\n    background: `no-repeat url('${defaultTextareaResizerIcon}')`\n  }),\n  css(`.${textInputWrapperClassName} textarea::-webkit-scrollbar`, {\n    cursor: \"pointer\",\n    background: \"transparent\"\n  }),\n  css(`.${textInputWrapperClassName} textarea::-webkit-scrollbar-thumb:window-inactive`, {\n    opacity: 0\n  }),\n  css(`.${textInputWrapperClassName} textarea::-webkit-scrollbar-corner`, {\n    background: \"none\",\n    backgroundColor: \"transparent\",\n    outline: \"none\"\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}::-webkit-datetime-edit`, {\n    // Prevent browsers from improvising the date/time placeholder height.\n    height: css.variable(\"--framer-input-font-line-height\" /* FontLineHeight */)\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}.${emptyValueClassName}::-webkit-datetime-edit`, {\n    color: css.variable(\"--framer-input-placeholder-color\" /* PlaceholderColor */),\n    // This tells safari to use the color for the shadow dom elements.\n    \"-webkit-text-fill-color\": css.variable(\"--framer-input-placeholder-color\" /* PlaceholderColor */),\n    overflow: \"visible\"\n  }),\n  css(\n    `.${textInputWrapperClassName} .${inputClassName}[type=\"date\"]::before, .${textInputWrapperClassName} .${inputClassName}[type=\"time\"]::before`,\n    {\n      ...inputIconCSSDeclaration,\n      paddingLeft: `${iconSpacing}px`,\n      maskPosition: `${iconSpacing}px center`,\n      backgroundPosition: `${iconSpacing}px center`\n    }\n  ),\n  css(`.${textInputWrapperClassName} .${inputClassName}[type=\"date\"]::before`, {\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, `url('${defaultDateIconMaskImage}')`),\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */)\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}[type=\"time\"]::before`, {\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, `url('${defaultTimeIconMaskImage}')`),\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */)\n  }),\n  // Hide the native date picker icon, but still align it with the custom icon, allowing user to click it to show the\n  // date/time picker.\n  css(`.${textInputWrapperClassName} .${inputClassName}::-webkit-calendar-picker-indicator`, {\n    opacity: 0,\n    position: \"absolute\",\n    right: 0,\n    top: 0,\n    bottom: 0,\n    padding: css.variable(\"--framer-input-padding\" /* Padding */),\n    paddingTop: 0,\n    paddingBottom: 0,\n    width: `${iconSize2}px`,\n    // Makes sure the icon hit target covers the entire height of the input.\n    height: \"100%\"\n  }),\n  css(`.${textInputWrapperClassName}:focus-within, .${textInputWrapperClassName}.${forcedFocusClassName}`, {\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */),\n    background: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-background\" /* Background */)\n  }),\n  css(\n    `.${textInputWrapperClassName}:focus-within::after, .${textInputWrapperClassName}.${forcedFocusClassName}::after`,\n    {\n      borderColor: css.variable(\"--framer-input-focused-border-color\" /* FocusedBorderColor */, \"--framer-input-border-color\" /* BorderColor */),\n      borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */),\n      borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, inputBorderAllSides)\n    }\n  )\n])();\nvar FormPlainTextInput2 = /* @__PURE__ */ withCSS(PlainTextInput, styles, \"framer-lib-form-plain-text-input\");\n\n// ../../library/src/render/presentation/Forms/FormBooleanInput.tsx\nimport React80 from \"react\";\nimport { jsx as jsx69 } from \"react/jsx-runtime\";\nvar className = \"framer-form-boolean-input\";\nvar BooleanInput = /* @__PURE__ */ React80.forwardRef(function FormPlainTextInput3(props, ref) {\n  const { inputName, type = \"checkbox\", defaultChecked, onValid, ...rest } = props;\n  const isCanvas = useIsOnFramerCanvas();\n  const attributes = isCanvas ? { checked: defaultChecked } : { defaultChecked };\n  const eventHandlers = useCustomValidity(onValid, props.onInvalid, props.onChange, props.onBlur, props.onFocus);\n  return /* @__PURE__ */ jsx69(\n    motion.input,\n    {\n      ...rest,\n      ...attributes,\n      ...eventHandlers,\n      readOnly: isCanvas,\n      ref,\n      type,\n      name: inputName,\n      className: cx(className, props.className)\n    }\n  );\n});\nvar defaultCheckedIcon = 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 4 8 L 6.5 10.5 L 11.5 5.5\" fill=\"transparent\" stroke-width=\"2\" stroke=\"rgb(255, 255, 255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>';\nvar borderRadius = `var(${\"--framer-input-border-radius-top-left\" /* BorderRadiusTopLeft */}) var(${\"--framer-input-border-radius-top-right\" /* BorderRadiusTopRight */}) var(${\"--framer-input-border-radius-bottom-right\" /* BorderRadiusBottomRight */}) var(${\"--framer-input-border-radius-bottom-left\" /* BorderRadiusBottomLeft */})`;\nvar styles2 = /* @__PURE__ */ (() => [\n  css(`.${className}`, {\n    \"-webkit-appearance\": \"none\",\n    // background-color: #fff; fixes a bug on iOS where the checkbox shows\n    // through the appearance: none;\n    alignItems: \"center\",\n    appearance: \"none\",\n    backgroundColor: \"#fff\",\n    background: \"--framer-input-background\" /* Background */,\n    borderRadius,\n    boxShadow: \"--framer-input-box-shadow\" /* BoxShadow */,\n    display: \"flex\",\n    justifyContent: \"center\",\n    margin: 0,\n    overflow: \"hidden\",\n    position: \"relative\",\n    transition: \"--framer-input-boolean-checked-transition\" /* BooleanCheckedTransition */,\n    transitionProperty: \"box-shadow, background\"\n  }),\n  // The after element styles the border of the checkbox to conform to\n  // framer's inset border model.\n  css(`.${className}::after`, {\n    background: \"transparent\",\n    borderColor: css.variable(\"--framer-input-border-color\" /* BorderColor */, \"transparent\"),\n    borderRadius,\n    borderStyle: \"--framer-input-border-style\" /* BorderStyle */,\n    borderWidth: inputBorderAllSides,\n    boxSizing: \"border-box\",\n    content: \"\",\n    display: \"block\",\n    inset: 0,\n    position: \"absolute\",\n    transition: \"--framer-input-boolean-checked-transition\" /* BooleanCheckedTransition */,\n    transitionProperty: \"border-color, border-width, border-style\"\n  }),\n  // The before element is used to display the check mark icon. It is\n  // faded in when the input is checked.\n  css(`.${className}::before`, {\n    ...inputIconCSSDeclaration,\n    backgroundPosition: \"center\",\n    backgroundSize: \"contain\",\n    maskPosition: \"center\",\n    maskSize: \"contain\",\n    height: \"100%\",\n    opacity: 0,\n    transition: \"--framer-input-boolean-checked-transition\" /* BooleanCheckedTransition */,\n    transitionProperty: \"opacity\",\n    width: \"100%\"\n  }),\n  // The BooleanInput component shows an svg check mark icon whenever an\n  // image url isn't provided. That's not an intuitive system for radios\n  // however, where we never want to show the default check mark.\n  css(`.${className}[type=\"checkbox\"]::before`, {\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */),\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, `url('${defaultCheckedIcon}')`)\n  }),\n  css(`.${className}[type=\"radio\"]::before`, {\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */),\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */)\n  }),\n  css(`.${className}:checked, .${className}.${forcedCheckedClassName}`, {\n    // When not set, the styles when checked shouldn't clear the default\n    // styles.\n    backgroundColor: css.variable(\"--framer-input-boolean-checked-background\" /* BooleanCheckedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-boolean-checked-box-shadow\" /* BooleanCheckedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${className}:checked::before, .${className}.${forcedCheckedClassName}::before`, {\n    opacity: 1\n  }),\n  css(`.${className}:checked::after, .${className}.${forcedCheckedClassName}::after`, {\n    // When not set, the styles when checked shouldn't clear the default\n    // styles.\n    borderColor: css.variable(\"--framer-input-boolean-checked-border-color\" /* BooleanCheckedBorderColor */, \"--framer-input-border-color\" /* BorderColor */, \"transparent\"),\n    borderStyle: css.variable(\"--framer-input-boolean-checked-border-style\" /* BooleanCheckedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */, \"solid\"),\n    borderWidth: css.variable(\"--framer-input-boolean-checked-border-width\" /* BooleanCheckedBorderWidth */, inputBorderAllSides)\n  }),\n  css(`.${className}:focus, .${className}.${forcedFocusClassName}`, {\n    backgroundColor: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${className}:focus-visible`, { outline: \"none\" }),\n  css(`.${className}:focus::after, .${className}.${forcedFocusClassName}::after`, {\n    // When not set, the styles when focused shouldn't clear the checked\n    // styles.\n    borderColor: css.variable(\"--framer-input-focused-border-color\" /* FocusedBorderColor */, \"--framer-input-border-color\" /* BorderColor */, \"transparent\"),\n    borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */, \"solid\"),\n    borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, inputBorderAllSides)\n  }),\n  css(`.${className}:focus:checked`, {\n    backgroundColor: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-boolean-checked-background\" /* BooleanCheckedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-boolean-checked-box-shadow\" /* BooleanCheckedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${className}:focus:checked::after`, {\n    borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-boolean-checked-border-style\" /* BooleanCheckedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */, \"solid\"),\n    borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, \"--framer-input-boolean-checked-border-width\" /* BooleanCheckedBorderWidth */, inputBorderAllSides)\n  })\n])();\nvar FormBooleanInput = /* @__PURE__ */ withCSS(BooleanInput, styles2, \"framer-lib-form-boolean-input\");\n\n// ../../library/src/render/presentation/Forms/FormSelect.tsx\nimport React81 from \"react\";\nimport { jsx as jsx70 } from \"react/jsx-runtime\";\nvar Select = /* @__PURE__ */ React81.forwardRef(function Select2(props, measureRef) {\n  const {\n    autoFocus,\n    className: className2,\n    inputName,\n    required,\n    hidden,\n    defaultValue,\n    selectOptions,\n    style,\n    onValid,\n    onChange,\n    onBlur,\n    onInvalid,\n    onFocus,\n    ...rest\n  } = props;\n  const eventHandlers = useCustomValidity(onValid, onInvalid, onChange, onBlur, onFocus);\n  const key7 = Array.isArray(defaultValue) ? defaultValue[0] : defaultValue;\n  if (hidden) {\n    return /* @__PURE__ */ jsx70(motion.input, { type: \"hidden\", name: inputName, defaultValue });\n  }\n  return /* @__PURE__ */ jsx70(\n    motion.div,\n    {\n      ref: measureRef,\n      style,\n      className: cx(inputWrapperClassName, selectWrapperClassName, className2),\n      ...rest,\n      children: /* @__PURE__ */ jsx70(\n        motion.select,\n        {\n          name: inputName,\n          autoFocus,\n          required,\n          className: inputClassName,\n          defaultValue,\n          ...eventHandlers,\n          children: selectOptions == null ? void 0 : selectOptions.map((option, index) => {\n            switch (option.type) {\n              case \"divider\":\n                return /* @__PURE__ */ jsx70(\"hr\", {}, index);\n              case \"option\":\n                return (\n                  // biome-ignore lint/suspicious/noArrayIndexKey: Values can be duplicated, so we could only use UUIDs here (but that isn't really better)\n                  /* @__PURE__ */ jsx70(\"option\", { value: option.value ?? option.title, disabled: option.disabled, children: option.title ?? option.value }, index)\n                );\n            }\n          })\n        },\n        key7\n      )\n    }\n  );\n});\nvar selectWrapperClassName = \"framer-form-select-wrapper\";\nvar selectArrowSize = 16;\nvar defaultSelectCaretMaskImage = /* @__PURE__ */ (() => `data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${selectArrowSize}\" height=\"${selectArrowSize}\"><path d=\"M 3.5 6 L 8 10.5 L 12.5 6\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"rgb(153, 153, 153)\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>`)();\nvar styles3 = /* @__PURE__ */ (() => [\n  ...sharedInputCSS,\n  ...inputBorderCSS,\n  ...inputWrapperCSS,\n  css(`.${selectWrapperClassName}`, {\n    // First we use the complete padding string, which may be any valid\n    // padding string (10px, 10px 10px, 10px 10px 10px, or 10px 10px\n    // 10px 10px), and use it to set only the right padding. This pushes\n    // the actual select away from the arrow by 1x.\n    padding: css.variable(\"--framer-input-padding\" /* Padding */),\n    paddingTop: 0,\n    paddingBottom: 0,\n    paddingLeft: 0,\n    background: css.variable(\"--framer-input-background\" /* Background */),\n    borderTopLeftRadius: css.variable(\"--framer-input-border-radius-top-left\" /* BorderRadiusTopLeft */),\n    borderTopRightRadius: css.variable(\"--framer-input-border-radius-top-right\" /* BorderRadiusTopRight */),\n    borderBottomRightRadius: css.variable(\"--framer-input-border-radius-bottom-right\" /* BorderRadiusBottomRight */),\n    borderBottomLeftRadius: css.variable(\"--framer-input-border-radius-bottom-left\" /* BorderRadiusBottomLeft */),\n    boxShadow: css.variable(\"--framer-input-box-shadow\" /* BoxShadow */),\n    transition: css.variable(\"--framer-input-focused-transition\" /* FocusedTransition */),\n    transitionProperty: \"background, box-shadow\"\n  }),\n  css(`.${selectWrapperClassName} select`, {\n    appearance: \"none\",\n    \"-webkit-appearance\": \"none\",\n    // Then we use the complete padding string again as the margin for\n    // the select. This moves the select 2x the padding right away from\n    // the arrow.\n    padding: css.variable(\"--framer-input-padding\" /* Padding */),\n    // Overwrite the values inherited from .${inputClassName}. On a\n    // select, these values are on the wrapper.\n    background: \"transparent\"\n  }),\n  css(`.${selectWrapperClassName}::before`, {\n    ...inputIconCSSDeclaration,\n    paddingLeft: `${iconSpacing}px`,\n    backgroundPosition: `${iconSpacing}px center`,\n    maskPosition: `${iconSpacing}px center`,\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */),\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, `url('${defaultSelectCaretMaskImage}')`)\n  }),\n  css(`.${selectWrapperClassName} select:required:invalid`, {\n    color: css.variable(\"--framer-input-invalid-text-color\" /* InvalidTextColor */)\n  }),\n  css(`.${selectWrapperClassName}:focus-within, .${selectWrapperClassName}.${forcedFocusClassName}`, {\n    background: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${selectWrapperClassName}:focus-within::after, .${selectWrapperClassName}.${forcedFocusClassName}::after`, {\n    borderColor: css.variable(\"--framer-input-focused-border-color\" /* FocusedBorderColor */, \"--framer-input-border-color\" /* BorderColor */),\n    borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */),\n    borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, inputBorderAllSides)\n  }),\n  // Enforcing a color on the native select options. On windows, browsers select options\n  // inherit some style properties like color but not others so they might end up in a weird\n  // state in which we can't read the options until we hover.\n  // These are ignored on mac\n  css(`.${selectWrapperClassName} select option`, {\n    color: \"#000\"\n  }),\n  css(`.${selectWrapperClassName} select option:disabled`, {\n    color: \"rgba(0, 0, 0, 0.4)\"\n  })\n])();\nvar FormSelect = /* @__PURE__ */ withCSS(Select, styles3, \"framer-lib-form-select\");\n\n// ../../library/src/render/presentation/Image.tsx\nimport React82 from \"react\";\nimport { jsx as jsx71, jsxs as jsxs16 } from \"react/jsx-runtime\";\nvar Image2 = /* @__PURE__ */ React82.forwardRef(function Image3(props, ref) {\n  const { background, children, alt, draggable, ...rest } = props;\n  const style = { ...rest.style };\n  if (background) {\n    delete style.background;\n  }\n  const MotionComponent = htmlElementAsMotionComponent(props.as);\n  return /* @__PURE__ */ jsxs16(MotionComponent, { ...rest, style, ref, children: [\n    background && /* @__PURE__ */ jsx71(BackgroundImageComponent, { image: background, alt, draggable }),\n    children\n  ] });\n});\n\n// ../../library/src/render/utils/isShallowEqualArray.ts\nfunction isShallowEqualArray(a, b) {\n  return a.length === b.length && a.every((v, i) => v === b[i]);\n}\n\n// ../../library/src/render/presentation/PresentationTree.ts\nfunction convertPresentationTree(node, converter, componentDefinitionProvider, getCachedNode, skipCodeComponentPropsCache = false) {\n  const cachedNode = getCachedNode && getCachedNode(node);\n  if (cachedNode)\n    return cachedNode;\n  let children;\n  if (isCodeComponentContainerPresentation(node)) {\n    children = convertCodeComponentContainer(\n      componentDefinitionProvider,\n      node,\n      converter,\n      getCachedNode,\n      skipCodeComponentPropsCache\n    );\n  } else if (node.children) {\n    children = node.children.map(\n      (n) => convertPresentationTree(\n        n,\n        converter,\n        componentDefinitionProvider,\n        getCachedNode,\n        skipCodeComponentPropsCache\n      )\n    );\n  }\n  return converter(node, children);\n}\nfunction isCodeComponentContainerPresentation(value) {\n  return !!value.codeComponentIdentifier;\n}\nfunction convertCodeComponentContainer(componentDefinitionProvider, node, converter, getCachedNode, skipCodeComponentPropsCache = false) {\n  var _a;\n  const codeComponentChildren = node.getComponentChildren ? node.getComponentChildren(componentDefinitionProvider) : [];\n  const codeComponentSlots = node.getComponentSlotChildren ? node.getComponentSlotChildren(componentDefinitionProvider) : {};\n  let codeComponentPresentation;\n  const props = node.getCodeComponentProps ? node.getCodeComponentProps(componentDefinitionProvider, { skipCache: skipCodeComponentPropsCache }) : void 0;\n  if (node.cache.codeComponentPresentation) {\n    codeComponentPresentation = node.cache.codeComponentPresentation;\n    if (!isShallowEqualArray(codeComponentPresentation.children, codeComponentChildren)) {\n      codeComponentPresentation.cache.reactElement = null;\n      codeComponentPresentation.children = codeComponentChildren;\n    }\n    if (!isEqual(codeComponentPresentation.props, props)) {\n      codeComponentPresentation.cache.reactElement = null;\n      codeComponentPresentation.cache.props = null;\n      codeComponentPresentation.props = props;\n    }\n  } else {\n    const { id: containerId, codeComponentIdentifier: identifier, codeComponentPackageVersion } = node;\n    node.cache.codeComponentPresentation = codeComponentPresentation = new CodeComponentPresentation(\n      containerId + identifier,\n      identifier,\n      codeComponentPackageVersion,\n      props,\n      codeComponentChildren\n    );\n  }\n  codeComponentPresentation.props.placeholders = node.cache.placeholders;\n  const slotKeys = Object.keys(codeComponentSlots);\n  if (slotKeys.length) {\n    codeComponentPresentation.props = { ...codeComponentPresentation.props };\n    codeComponentPresentation.props.__slotKeys = slotKeys;\n    for (const slotKey of slotKeys) {\n      const slotChildren = (_a = codeComponentSlots[slotKey]) == null ? void 0 : _a.map(\n        (child) => convertPresentationTree(\n          child,\n          converter,\n          componentDefinitionProvider,\n          getCachedNode,\n          skipCodeComponentPropsCache\n        )\n      );\n      codeComponentPresentation.props[slotKey] = slotChildren;\n    }\n  }\n  return [\n    converter(\n      codeComponentPresentation,\n      codeComponentPresentation.children.map(\n        (child) => convertPresentationTree(\n          child,\n          converter,\n          componentDefinitionProvider,\n          getCachedNode,\n          skipCodeComponentPropsCache\n        )\n      )\n    )\n  ];\n}\nvar CodeComponentPresentation = class {\n  constructor(id, componentIdentifier, packageVersion, props, children, codeOverrideIdentifier) {\n    this.id = id;\n    this.componentIdentifier = componentIdentifier;\n    this.packageVersion = packageVersion;\n    this.props = props;\n    this.children = children;\n    this.codeOverrideIdentifier = codeOverrideIdentifier;\n    __publicField(this, \"cache\", {});\n  }\n  getProps() {\n    return {\n      ...this.props,\n      id: this.id,\n      key: this.id\n    };\n  }\n  rect(_parentSizeInfo) {\n    return { x: 0, y: 0, width: 0, height: 0 };\n  }\n};\n\n// ../../library/src/render/presentation/RichText.tsx\nimport {\n  Children as Children4,\n  Fragment as Fragment11,\n  cloneElement as cloneElement3,\n  forwardRef as forwardRef9,\n  isValidElement as isValidElement5,\n  useContext as useContext25,\n  useInsertionEffect as useInsertionEffect6,\n  useMemo as useMemo19,\n  useRef as useRef24\n} from \"react\";\n\n// ../../library/src/utils/slugify.ts\nvar nonSlugCharactersRegExp = /[^\\p{Letter}\\p{Number}()]+/gu;\nvar trimSlugRegExp = /^-+|-+$/gu;\nfunction slugify(value) {\n  return value.toLowerCase().replace(nonSlugCharactersRegExp, \"-\").replace(trimSlugRegExp, \"\");\n}\n\n// ../../library/src/render/presentation/DeprecatedRichText.tsx\nimport * as React83 from \"react\";\nimport { useRef as useRef22 } from \"react\";\n\n// ../../library/src/modules/replaceFramerPageLinks.ts\nvar htmlRegExp = /[&<>'\"]/gu;\nvar escapeHTML = (str) => str.replace(\n  htmlRegExp,\n  (tag) => ({\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    \"'\": \"&#39;\",\n    '\"': \"&quot;\"\n  })[tag] || tag\n);\nvar regex = /(<([a-z]+)(?:\\s+(?!href[\\s=])[^=\\s]+=(?:'[^']*'|\"[^\"]*\"))*)(?:(\\s+href\\s*=)(?:'([^']*)'|\"([^\"]*)\"))?((?:\\s+[^=\\s]+=(?:'[^']*'|\"[^\"]*\"))*>)/gi;\nfunction replaceFramerPageLinks(rawHTML, getRoute, currentRoute, implicitPathVariables) {\n  return rawHTML.replace(\n    regex,\n    (original, pre1, tag, pre2, value1, value2, post) => {\n      var _a, _b;\n      if (tag.toLowerCase() !== \"a\")\n        return original;\n      const href = value1 || value2;\n      const pageLink = parseFramerPageLink(href.replace(/&amp;/gu, \"&\"));\n      if (!pageLink || !pageLink.target)\n        return original;\n      const targetRoute = getRoute(pageLink.target);\n      if (!isRoute(targetRoute) || !isRoute(currentRoute))\n        return original;\n      const targetPath = targetRoute.path;\n      const currentPath = currentRoute.path;\n      if (!targetPath || !currentPath)\n        return original;\n      let attributes = ` ${\"data-framer-page-link-target\" /* Page */}=\"${pageLink.target}\"`;\n      const elementId = getRouteElementId(targetRoute, pageLink.element ?? void 0);\n      if (elementId) {\n        attributes += ` ${\"data-framer-page-link-element\" /* Element */}=\"${pageLink.element}\"`;\n      }\n      const link = linkFromFramerPageLink(href);\n      if (!link || isString(link))\n        return original;\n      if (linkMatchesRoute(currentRoute, link, implicitPathVariables)) {\n        attributes += ` ${\"data-framer-page-link-current\" /* Current */}`;\n      }\n      let relativePath = targetPath;\n      const pathVariables = Object.assign({}, implicitPathVariables, (_a = pageLink.collectionItem) == null ? void 0 : _a.pathVariables);\n      if (Object.keys(pathVariables).length > 0) {\n        relativePath = relativePath.replace(pathVariablesRegExp2, (_, key7) => \"\" + pathVariables[key7]);\n      }\n      if ((_b = pageLink.collectionItem) == null ? void 0 : _b.pathVariables) {\n        const params = new URLSearchParams(pageLink.collectionItem.pathVariables);\n        attributes += ` ${\"data-framer-page-link-path-variables\" /* PathVariables */}=\"${params}\"`;\n      }\n      relativePath = computeRelativePath(currentPath, relativePath);\n      return pre1 + pre2 + `\"${escapeHTML(relativePath + (elementId ? `#${elementId}` : \"\"))}\"` + attributes + post;\n    }\n  );\n}\n\n// ../../library/src/render/presentation/DeprecatedRichText.tsx\nimport { jsx as jsx72 } from \"react/jsx-runtime\";\nvar htmlEscapes = {\n  \"&\": \"&amp;\",\n  \"<\": \"&lt;\",\n  \">\": \"&gt;\",\n  '\"': \"&quot;\",\n  \"'\": \"&#39;\"\n};\nvar reUnescapedHtml = /[&<>\"']/gu;\nvar reHasUnescapedHtml = /* @__PURE__ */ (() => new RegExp(reUnescapedHtml.source))();\nfunction escapeHTML2(str) {\n  return str && reHasUnescapedHtml.test(str) ? str.replace(reUnescapedHtml, (chr) => htmlEscapes[chr] ?? \"\") : str || \"\";\n}\nvar deprecatedRichTextPlaceholder = \"{{ text-placeholder }}\";\nvar richTextWrapperClassName = \"rich-text-wrapper\";\nvar DeprecatedRichText = /* @__PURE__ */ React83.forwardRef(\n  function Text(props, forwardedRef) {\n    const {\n      id,\n      name,\n      html,\n      htmlFromDesign,\n      text,\n      textFromDesign,\n      fonts = [],\n      width,\n      height,\n      left,\n      right,\n      top,\n      bottom,\n      center,\n      className: className2,\n      stylesPresetsClassName,\n      visible = true,\n      opacity,\n      rotation = 0,\n      verticalAlignment = \"top\",\n      isEditable = false,\n      willChangeTransform,\n      environment: environment2 = RenderTarget.current,\n      withExternalLayout = false,\n      positionSticky,\n      positionStickyTop,\n      positionStickyRight,\n      positionStickyBottom,\n      positionStickyLeft,\n      __htmlStructure,\n      __fromCanvasComponent = false,\n      _forwardedOverrideId,\n      _forwardedOverrides,\n      _usesDOMRect,\n      children: _children,\n      ...rest\n    } = props;\n    const parentSize = useParentSize();\n    const layoutId = useLayoutId(props);\n    const fallbackLayoutRef = useRef22(null);\n    const layoutRef = forwardedRef ?? fallbackLayoutRef;\n    const { navigate, getRoute } = useRouter();\n    const currentRoute = useCurrentRoute();\n    useRoutePreloader(props.preload ?? []);\n    useMeasureLayout(props, layoutRef);\n    const inCodeComponent = React83.useContext(ComponentContainerContext);\n    const isOnCanvas = useIsOnFramerCanvas();\n    let textOrOverride = text;\n    const forwardedOverrideId = _forwardedOverrideId ?? id;\n    if (forwardedOverrideId && _forwardedOverrides) {\n      const override = _forwardedOverrides[forwardedOverrideId];\n      if (typeof override === \"string\") {\n        textOrOverride = override;\n      }\n    }\n    let innerHTML = \"\";\n    if (textOrOverride) {\n      const escapedText = escapeHTML2(textOrOverride);\n      innerHTML = __htmlStructure ? __htmlStructure.replace(deprecatedRichTextPlaceholder, escapedText) : `<p>${escapedText}</p>`;\n    } else if (html) {\n      innerHTML = html;\n    } else if (textFromDesign) {\n      const escapedText = escapeHTML2(textFromDesign);\n      innerHTML = __htmlStructure ? __htmlStructure.replace(deprecatedRichTextPlaceholder, escapedText) : `<p>${escapedText}</p>`;\n    } else if (htmlFromDesign) {\n      innerHTML = htmlFromDesign;\n    }\n    const implicitPathVariables = useImplicitPathVariables();\n    const innerHTMLWithReplacedFramerPageLinks = React83.useMemo(() => {\n      if (isOnCanvas || !getRoute || !currentRoute)\n        return innerHTML;\n      return replaceFramerPageLinks(innerHTML, getRoute, currentRoute, implicitPathVariables);\n    }, [innerHTML, getRoute, currentRoute, implicitPathVariables]);\n    React83.useEffect(() => {\n      const container = layoutRef.current;\n      if (container === null)\n        return;\n      function interceptPageLinks(event) {\n        const anchorElement = findAnchorElement(event.target, layoutRef.current);\n        if (event.metaKey || !navigate || !anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */) {\n          return;\n        }\n        const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables);\n        if (didNavigate) {\n          event.preventDefault();\n        }\n      }\n      container.addEventListener(\"click\", interceptPageLinks);\n      return () => {\n        container.removeEventListener(\"click\", interceptPageLinks);\n      };\n    }, [navigate, implicitPathVariables]);\n    useLoadFonts(fonts, __fromCanvasComponent, layoutRef);\n    React83.useInsertionEffect(() => {\n      injectComponentCSSRules();\n    }, []);\n    if (!visible)\n      return null;\n    const isHidden = isEditable && environment2() === RenderTarget.canvas;\n    const style = {\n      outline: \"none\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      justifyContent: convertVerticalAlignment(verticalAlignment),\n      opacity: isHidden ? 0 : opacity,\n      flexShrink: 0\n    };\n    const restrictedRenderTarget = RenderTarget.hasRestrictions();\n    const frame2 = calculateRect(props, parentSize || 0 /* Unknown */, false);\n    const isAutoSized2 = _usesDOMRect && (width === \"auto\" || height === \"auto\");\n    const hasTransformTemplate = !!props.transformTemplate || !frame2 || !restrictedRenderTarget || __fromCanvasComponent || isAutoSized2;\n    const template = hasTransformTemplate ? props.transformTemplate ?? transformTemplate(center) : void 0;\n    if (!withExternalLayout) {\n      if (frame2 && restrictedRenderTarget && !isAutoSized2) {\n        const rotate = Animatable.getNumber(rotation).toFixed(4);\n        style.transform = `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate}deg)`;\n        style.width = frame2.width;\n        style.minWidth = frame2.width;\n        style.height = frame2.height;\n      } else {\n        style.left = left;\n        style.right = right;\n        style.top = top;\n        style.bottom = bottom;\n        style.width = width;\n        style.height = height;\n        style.rotate = rotation;\n      }\n      if (positionSticky) {\n        if (!isOnCanvas || inCodeComponent) {\n          style.position = \"sticky\";\n          style.willChange = \"transform\";\n          style.zIndex = 1;\n          style.top = positionStickyTop;\n          style.right = positionStickyRight;\n          style.bottom = positionStickyBottom;\n          style.left = positionStickyLeft;\n        }\n      } else if (isOnCanvas && (props.positionFixed || props.positionAbsolute)) {\n        style.position = \"absolute\";\n      }\n    }\n    collectFiltersFromProps(props, style);\n    collectTextShadowsForProps(props, style);\n    if (willChangeTransform) {\n      forceLayerBackingWithCSSProperties(style);\n    }\n    Object.assign(style, props.style);\n    return /* @__PURE__ */ jsx72(\n      motion.div,\n      {\n        id,\n        ref: layoutRef,\n        ...rest,\n        style,\n        layoutId,\n        \"data-framer-name\": name,\n        \"data-framer-component-type\": \"DeprecatedRichText\",\n        \"data-center\": center,\n        className: cx(className2, stylesPresetsClassName, richTextWrapperClassName),\n        transformTemplate: template,\n        dangerouslySetInnerHTML: { __html: innerHTMLWithReplacedFramerPageLinks }\n      }\n    );\n  }\n);\nfunction convertVerticalAlignment(verticalAlignment) {\n  switch (verticalAlignment) {\n    case \"top\":\n      return \"flex-start\";\n    case \"center\":\n      return \"center\";\n    case \"bottom\":\n      return \"flex-end\";\n  }\n}\nfunction useLoadFonts(fonts, fromCanvasComponent, containerRef) {\n  const prevFontsRef = useRef22([]);\n  if (!isShallowEqualArray(prevFontsRef.current, fonts)) {\n    prevFontsRef.current = fonts;\n    void fontStore.loadFonts(fonts).then(({ newlyLoadedFontCount }) => {\n      if (!fromCanvasComponent || !containerRef.current || RenderTarget.current() !== RenderTarget.canvas)\n        return;\n      if (newlyLoadedFontCount > 0) {\n        measureClosestComponentContainer(containerRef.current);\n      }\n    });\n  }\n}\n\n// ../../library/src/render/presentation/useTextEffect.tsx\nimport * as React84 from \"react\";\n\n// ../../library/src/render/utils/patchAndWaitForChild.ts\nfunction newOverrideableRef() {\n  return { current: null };\n}\nasync function patchAndWaitForChild(ref, controller) {\n  let current = ref.current;\n  if (current)\n    return current;\n  let refCallbackResolve;\n  const refCallbackPromise = new Promise((resolve, reject) => {\n    refCallbackResolve = resolve;\n    controller.signal.addEventListener(\"abort\", () => reject());\n  });\n  Object.defineProperty(ref, \"current\", {\n    get() {\n      return current;\n    },\n    set(element) {\n      current = element;\n      if (element === null) {\n        controller.abort();\n        return;\n      }\n      refCallbackResolve(element);\n    },\n    configurable: true\n  });\n  return refCallbackPromise;\n}\n\n// ../../library/src/render/presentation/useTextEffect.tsx\nimport { jsx as jsx73, jsxs as jsxs17 } from \"react/jsx-runtime\";\nvar defaultValues2 = {\n  opacity: 1,\n  y: 0,\n  x: 0,\n  scale: 1,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  skewX: 0,\n  skewY: 0,\n  filter: \"none\"\n};\nfunction isEffectKey(key7) {\n  return key7 in defaultValues2;\n}\nfunction createKeyframes(effect) {\n  const out = {};\n  for (const key7 in effect) {\n    if (!isEffectKey(key7))\n      continue;\n    const effectValue = effect[key7];\n    const defaultValue = defaultValues2[key7];\n    if (isUndefined(effectValue) || isUndefined(defaultValue))\n      continue;\n    out[key7] = [effectValue, defaultValue];\n  }\n  return out;\n}\nvar emojiSplitRe = (\n  // eslint-disable-next-line redos-detector/no-unsafe-regex\n  /\\p{Regional_Indicator}{2}|\\p{Emoji}\\p{Emoji_Modifier}?\\p{Variation_Selector}?(?:\\u{200d}\\p{Emoji}\\p{Emoji_Modifier}?\\p{Variation_Selector}?)*|./gu\n);\nfunction tokenizeText(text, tokenization = \"character\", elements, style) {\n  switch (tokenization) {\n    case \"character\":\n    case \"line\": {\n      const words = text.split(\" \");\n      const lastWordIndex = words.length - 1;\n      return words.map((word, wordIndex) => {\n        var _a;\n        const isLastWord = wordIndex === lastWordIndex;\n        const short = word.length <= 12;\n        return /* @__PURE__ */ jsxs17(React84.Fragment, { children: [\n          /* @__PURE__ */ jsx73(\"span\", { style: { whiteSpace: short ? \"nowrap\" : \"unset\" }, children: (_a = word.match(emojiSplitRe)) == null ? void 0 : _a.map((char, i) => {\n            const ref = newOverrideableRef();\n            elements.add(ref);\n            return (\n              // biome-ignore lint/suspicious/noArrayIndexKey: We are combining index with char.\n              /* @__PURE__ */ jsx73(\"span\", { ref, style, children: char }, char + i)\n            );\n          }) }),\n          isLastWord ? null : \" \"\n        ] }, word + wordIndex + isLastWord);\n      });\n    }\n    case \"word\": {\n      const words = text.split(\" \");\n      const lastWordIndex = words.length - 1;\n      return words.map((char, i) => {\n        const isLastWord = i === lastWordIndex;\n        const ref = newOverrideableRef();\n        elements.add(ref);\n        return /* @__PURE__ */ jsxs17(React84.Fragment, { children: [\n          /* @__PURE__ */ jsx73(\"span\", { ref, style, children: char }),\n          isLastWord ? null : \" \"\n        ] }, char + i + isLastWord);\n      });\n    }\n    case \"element\":\n    default:\n      return text;\n  }\n}\nfunction tokenizationForEffect(effect) {\n  const type = effect.type;\n  switch (type) {\n    case \"appear\":\n      return effect.tokenization ?? \"character\";\n    default:\n      assertNever(type);\n  }\n}\nfunction transformString(effect) {\n  const transforms = [];\n  if (isNumber(effect.x))\n    transforms.push(`translateX(${effect.x}px)`);\n  if (isNumber(effect.y))\n    transforms.push(`translateY(${effect.y}px)`);\n  if (isNumber(effect.scale))\n    transforms.push(`scale(${effect.scale})`);\n  if (isNumber(effect.rotate))\n    transforms.push(`rotate(${effect.rotate}deg)`);\n  if (isNumber(effect.rotateX))\n    transforms.push(`rotateX(${effect.rotateX}deg)`);\n  if (isNumber(effect.rotateY))\n    transforms.push(`rotateY(${effect.rotateY}deg)`);\n  if (isNumber(effect.skewX))\n    transforms.push(`skewX(${effect.skewX}deg)`);\n  if (isNumber(effect.skewY))\n    transforms.push(`skewY(${effect.skewY}deg)`);\n  return transforms.join(\" \");\n}\nfunction getInitialEffectStyle(canPlay, canAnimate, effect) {\n  if (!effect || !effect.effect)\n    return void 0;\n  const type = effect.type;\n  switch (type) {\n    case \"appear\":\n      switch (effect.tokenization) {\n        case \"element\":\n          if (!canPlay || !canAnimate)\n            return void 0;\n          return {\n            opacity: effect.effect.opacity,\n            filter: effect.effect.filter,\n            transform: transformString(effect.effect)\n          };\n        case \"line\":\n        case \"word\":\n        case \"character\":\n        default:\n          if (!canPlay || !canAnimate)\n            return { display: \"inline-block\" };\n          return {\n            display: \"inline-block\",\n            opacity: effect.effect.opacity,\n            filter: effect.effect.filter,\n            transform: transformString(effect.effect)\n          };\n      }\n    default:\n      assertNever(type);\n  }\n}\nfunction useTextEffect(config, ref, preview) {\n  const elements = useConstant(() => /* @__PURE__ */ new Set());\n  const isRenderingStaticContent = isStaticRenderer();\n  const canPlay = preview || !isRenderingStaticContent;\n  const state = React84.useRef({\n    hasMounted: false,\n    hasAnimatedOnce: false,\n    isAnimating: false,\n    effect: config\n  });\n  state.current.effect = config;\n  const trigger = (config == null ? void 0 : config.trigger) ?? \"onMount\";\n  const target = config == null ? void 0 : config.target;\n  const threshold = config == null ? void 0 : config.threshold;\n  React84.useEffect(() => {\n    if (!canPlay || preview)\n      return;\n    state.current.hasMounted = true;\n    function play() {\n      const { effect } = state.current;\n      if (!canPlay || !effect)\n        return;\n      if ((effect == null ? void 0 : effect.repeat) !== true && state.current.hasAnimatedOnce)\n        return;\n      if ((effect == null ? void 0 : effect.type) === \"appear\" && state.current.isAnimating)\n        return;\n      Object.assign(state.current, {\n        hasAnimatedOnce: true,\n        isAnimating: true\n      });\n      const type = effect.type;\n      switch (type) {\n        case \"appear\": {\n          const { transition, startDelay, repeat, tokenization: tokenization2 } = effect;\n          const cleanupRef = { current: void 0 };\n          void runAppearEffect(\n            tokenization2,\n            effect.effect,\n            elements,\n            transition,\n            startDelay,\n            repeat,\n            () => {\n              Object.assign(state.current, { isAnimating: false });\n            },\n            cleanupRef\n          );\n          return () => {\n            var _a;\n            return (_a = cleanupRef.current) == null ? void 0 : _a.call(cleanupRef);\n          };\n        }\n        default:\n          assertNever(type);\n      }\n    }\n    switch (trigger) {\n      case \"onMount\":\n        play();\n        return;\n      case \"onInView\": {\n        const element = ref == null ? void 0 : ref.current;\n        if (!element)\n          return;\n        return inView(element, play, { amount: threshold ?? 0 });\n      }\n      case \"onScrollTarget\": {\n        const element = target == null ? void 0 : target.ref.current;\n        if (!element)\n          return;\n        return inView(element, play, {\n          amount: threshold ?? 0,\n          root: document,\n          margin: (target == null ? void 0 : target.offset) ? `${target.offset}px 0px 0px 0px` : void 0\n        });\n      }\n      default:\n        assertNever(trigger);\n    }\n  }, [canPlay, elements, preview, ref, target, threshold, trigger]);\n  const effectEnabled = !!config;\n  const tokenization = config ? tokenizationForEffect(config) : void 0;\n  return React84.useMemo(\n    () => ({\n      // The tokenizer is memoized such that it won't trigger RichText to\n      // be rerendered if the effect changes in a way that doesn't effect\n      // the tokenization.\n      getTokenizer: () => {\n        elements.clear();\n        if (!effectEnabled)\n          return void 0;\n        const { hasMounted, hasAnimatedOnce, effect } = state.current;\n        const effectStyle = getInitialEffectStyle(\n          canPlay,\n          preview || mayAnimate(hasMounted, hasAnimatedOnce, effect),\n          state.current.effect\n        );\n        return {\n          text: (text) => tokenizeText(text, tokenization, elements, effectStyle),\n          props: (style) => {\n            if ((effect == null ? void 0 : effect.tokenization) !== \"element\")\n              return void 0;\n            const r = newOverrideableRef();\n            elements.add(r);\n            return {\n              ref: r,\n              style: { ...style, ...effectStyle }\n            };\n          }\n        };\n      },\n      play: () => {\n        const { effect } = state.current;\n        if (!effect)\n          return;\n        const type = effect.type;\n        switch (type) {\n          case \"appear\": {\n            const { transition, startDelay } = effect;\n            void runAppearEffect(tokenization, effect.effect, elements, transition, startDelay);\n            break;\n          }\n          default:\n            assertNever(type);\n        }\n      }\n    }),\n    [canPlay, effectEnabled, elements, preview, tokenization]\n  );\n}\nfunction mayAnimate(hasMounted, hasAnimatedOnce, effect) {\n  return !// If either the component has mounted and the trigger is\n  // onMount, or if the component has run an animation to\n  // completion, the effect is not repeatable, and the trigger\n  // is one that is impacted by repeated effects, we don't\n  // need to set initial style again.\n  (hasMounted && (effect == null ? void 0 : effect.trigger) === \"onMount\" || hasAnimatedOnce && !(effect == null ? void 0 : effect.repeat) && ((effect == null ? void 0 : effect.trigger) === \"onInView\" || (effect == null ? void 0 : effect.trigger) === \"onScrollTarget\"));\n}\nasync function runAppearEffect(tokenization = \"character\", effect, elements, transition, startDelay = 0, repeat = false, callback, cleanupRef) {\n  const enter = createKeyframes(effect);\n  const controller = new AbortController();\n  if (cleanupRef)\n    cleanupRef.current = () => controller.abort();\n  switch (tokenization) {\n    case \"character\":\n    case \"element\":\n    case \"word\": {\n      const list = await createElementList(elements, controller);\n      if (list === null)\n        return;\n      void animate(list, enter, {\n        ...transition,\n        restDelta: 1e-3,\n        delay: stagger((transition == null ? void 0 : transition.delay) ?? 0, { startDelay })\n      }).then(() => callback == null ? void 0 : callback());\n      if (!repeat || !cleanupRef)\n        return;\n      cleanupRef.current = () => void animate(list, effect, {\n        ...transition,\n        restDelta: 1e-3,\n        delay: stagger((transition == null ? void 0 : transition.delay) ?? 0, { startDelay })\n      });\n      return;\n    }\n    case \"line\": {\n      try {\n        for (const element of elements) {\n          await patchAndWaitForChild(element, controller);\n        }\n      } catch {\n        return;\n      }\n      let list;\n      frame.read(() => {\n        list = createLineGroups(elements);\n        if (list.length === 0)\n          return;\n        frame.update(() => {\n          const animations2 = list.map((group, i) => {\n            return animate(group, enter, {\n              ...transition,\n              restDelta: 1e-3,\n              // Since text tokenized into lines are groups of individual\n              // characters where each group is animated at once, we can't use\n              // motion's built in `stagger()` function, and have to manage the\n              // outer delay ourselves.\n              delay: startDelay + i * ((transition == null ? void 0 : transition.delay) ?? 0)\n            });\n          });\n          void Promise.all(animations2).then(() => callback == null ? void 0 : callback());\n        });\n      });\n      if (!repeat || !cleanupRef)\n        return;\n      cleanupRef.current = () => {\n        if (list.length === 0)\n          return;\n        list.forEach((group, i) => {\n          void animate(group, effect, {\n            ...transition,\n            restDelta: 1e-3,\n            delay: startDelay + i * ((transition == null ? void 0 : transition.delay) ?? 0)\n          });\n        });\n      };\n      return;\n    }\n    default:\n      assertNever(tokenization);\n  }\n}\nasync function createElementList(elements, controller) {\n  if (elements.size === 0)\n    return null;\n  const list = [];\n  for (const element of elements) {\n    try {\n      const node = await patchAndWaitForChild(element, controller);\n      if (node)\n        list.push(node);\n    } catch {\n      return null;\n    }\n  }\n  return list;\n}\nfunction createLineGroups(elements) {\n  const groups2 = [];\n  let currentGroup = [];\n  let lastOffset = null;\n  for (const element of elements) {\n    if (!element.current)\n      continue;\n    const top = element.current.offsetTop;\n    const height = element.current.offsetHeight;\n    if (!height || lastOffset === null || top === lastOffset) {\n      currentGroup.push(element.current);\n    } else {\n      groups2.push(currentGroup);\n      currentGroup = [element.current];\n    }\n    if (height)\n      lastOffset = top;\n  }\n  groups2.push(currentGroup);\n  return groups2;\n}\n\n// ../../library/src/render/presentation/RichText.tsx\nimport { jsx as jsx74 } from \"react/jsx-runtime\";\nvar FitText = /* @__PURE__ */ forwardRef9(\n  ({ viewBoxScale, viewBox, children, ...props }, ref) => {\n    return (\n      // biome-ignore lint/a11y/noSvgWithoutTitle: FIXME: FitText might be inaccessible to screen readers because it\u2019s wrapped in an svg\n      /* @__PURE__ */ jsx74(motion.svg, { ref, ...props, viewBox, children: /* @__PURE__ */ jsx74(\n        motion.foreignObject,\n        {\n          width: \"100%\",\n          height: \"100%\",\n          className: \"framer-fit-text\",\n          transform: `scale(${viewBoxScale})`,\n          style: { overflow: \"visible\", transformOrigin: \"center center\" },\n          children\n        }\n      ) })\n    );\n  }\n);\nvar RichTextContainer = /* @__PURE__ */ forwardRef9(\n  (props, ref) => {\n    const {\n      __fromCanvasComponent = false,\n      _forwardedOverrideId,\n      _forwardedOverrides,\n      _usesDOMRect,\n      anchorLinkOffsetY,\n      as: _as,\n      bottom,\n      center,\n      children,\n      environment: environment2 = RenderTarget.current,\n      fonts = [],\n      height,\n      isEditable = false,\n      left,\n      name,\n      opacity,\n      positionSticky,\n      positionStickyBottom,\n      positionStickyLeft,\n      positionStickyRight,\n      positionStickyTop,\n      right,\n      rotation = 0,\n      style,\n      _initialStyle,\n      stylesPresetsClassNames,\n      text: plainText,\n      top,\n      verticalAlignment = \"top\",\n      visible = true,\n      width,\n      willChangeTransform,\n      withExternalLayout = false,\n      viewBox,\n      viewBoxScale = 1,\n      effect,\n      ...rest\n    } = props;\n    const parentSize = useParentSize();\n    const isOnCanvas = useIsOnFramerCanvas();\n    const inCodeComponent = useContext25(ComponentContainerContext);\n    const layoutId = useLayoutId(props);\n    const fallbackRef = useRef24(null);\n    const containerRef = ref ?? fallbackRef;\n    useMeasureLayout(props, containerRef);\n    useLoadFonts(fonts, __fromCanvasComponent, containerRef);\n    useInsertionEffect6(() => {\n      injectComponentCSSRules();\n    }, []);\n    const textEffect = useTextEffect(effect, containerRef);\n    const processedChildren = useMemo19(() => {\n      if (!children)\n        return;\n      return processRichTextChildren(\n        children,\n        stylesPresetsClassNames,\n        plainText,\n        anchorLinkOffsetY,\n        void 0,\n        textEffect.getTokenizer()\n      );\n    }, [children, stylesPresetsClassNames, plainText, anchorLinkOffsetY, textEffect]);\n    if (!visible)\n      return null;\n    const isHidden = isEditable && environment2() === RenderTarget.canvas;\n    const containerStyle = {\n      outline: \"none\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      justifyContent: convertVerticalAlignment(verticalAlignment),\n      opacity: isHidden ? 0 : opacity,\n      flexShrink: 0\n    };\n    const positionStyle = {};\n    const restrictedRenderTarget = RenderTarget.hasRestrictions();\n    const frame2 = calculateRect(props, parentSize || 0 /* Unknown */, false);\n    const isAutoSized2 = _usesDOMRect && (width === \"auto\" || height === \"auto\");\n    const hasTransformTemplate = !!props.transformTemplate || !frame2 || !restrictedRenderTarget || __fromCanvasComponent || isAutoSized2;\n    const template = hasTransformTemplate ? props.transformTemplate ?? transformTemplate(center) : void 0;\n    if (!withExternalLayout) {\n      if (frame2 && restrictedRenderTarget && !isAutoSized2) {\n        positionStyle.x = frame2.x + (isNumber(style == null ? void 0 : style.x) ? style.x : 0);\n        positionStyle.y = frame2.y + (isNumber(style == null ? void 0 : style.y) ? style.y : 0);\n        containerStyle.rotate = Animatable.getNumber(rotation);\n        containerStyle.width = frame2.width;\n        containerStyle.minWidth = frame2.width;\n        containerStyle.height = frame2.height;\n      } else {\n        containerStyle.left = left;\n        containerStyle.right = right;\n        containerStyle.top = top;\n        containerStyle.bottom = bottom;\n        containerStyle.width = width;\n        containerStyle.height = height;\n        containerStyle.rotate = rotation;\n      }\n      if (positionSticky) {\n        if (!isOnCanvas || inCodeComponent) {\n          containerStyle.position = \"sticky\";\n          containerStyle.willChange = \"transform\";\n          containerStyle.zIndex = 1;\n          containerStyle.top = positionStickyTop;\n          containerStyle.right = positionStickyRight;\n          containerStyle.bottom = positionStickyBottom;\n          containerStyle.left = positionStickyLeft;\n        }\n      } else if (isOnCanvas && (props.positionFixed || props.positionAbsolute)) {\n        containerStyle.position = \"absolute\";\n      }\n    }\n    collectFiltersFromProps(props, containerStyle);\n    collectTextShadowsForProps(props, containerStyle);\n    if (willChangeTransform) {\n      forceLayerBackingWithCSSProperties(containerStyle);\n    }\n    Object.assign(containerStyle, _initialStyle, style, positionStyle);\n    if (layoutId) {\n      rest.layout = \"preserve-aspect\";\n    }\n    const Component18 = htmlElementAsMotionComponent(props.as);\n    if (isString(props.viewBox)) {\n      if (props.as !== void 0) {\n        return /* @__PURE__ */ jsx74(\n          Component18,\n          {\n            ...rest,\n            ref: containerRef,\n            style: containerStyle,\n            layoutId,\n            transformTemplate: template,\n            \"data-framer-name\": rest[\"data-framer-name\"] ?? name,\n            \"data-framer-component-type\": \"RichTextContainer\",\n            children: /* @__PURE__ */ jsx74(\n              FitText,\n              {\n                viewBox,\n                viewBoxScale,\n                style: { width: \"100%\", height: \"100%\" },\n                children: processedChildren\n              }\n            )\n          }\n        );\n      } else {\n        return /* @__PURE__ */ jsx74(\n          FitText,\n          {\n            ...rest,\n            ref: containerRef,\n            style: containerStyle,\n            layoutId,\n            viewBox,\n            viewBoxScale,\n            transformTemplate: template,\n            \"data-framer-name\": rest[\"data-framer-name\"] ?? name,\n            \"data-framer-component-type\": \"RichTextContainer\",\n            children: processedChildren\n          }\n        );\n      }\n    }\n    return /* @__PURE__ */ jsx74(\n      Component18,\n      {\n        ...rest,\n        ref: containerRef,\n        style: containerStyle,\n        layoutId,\n        transformTemplate: template,\n        \"data-framer-name\": rest[\"data-framer-name\"] ?? name,\n        \"data-framer-component-type\": \"RichTextContainer\",\n        children: processedChildren\n      }\n    );\n  }\n);\nfunction isFragment(element) {\n  return element.type === Fragment11;\n}\nfunction isLineBreak(element) {\n  return element.type === \"br\";\n}\nfunction processRichTextChildren(element, stylesPresetsClassNames, plainText, anchorLinkOffsetY, slugCounters = {}, tokenizer, depth = isFragment(element) ? -1 : 0) {\n  let children = Children4.toArray(element.props.children);\n  if (isString(plainText)) {\n    children = children.slice(0, 1);\n  }\n  let onlyLineBreaks = true;\n  children = children.map((child) => {\n    if (!isValidElement5(child) || !isLineBreak(child))\n      onlyLineBreaks = false;\n    if (isValidElement5(child)) {\n      return processRichTextChildren(\n        child,\n        stylesPresetsClassNames,\n        plainText,\n        anchorLinkOffsetY,\n        slugCounters,\n        tokenizer,\n        depth + 1\n      );\n    }\n    const text = isString(plainText) ? plainText : child;\n    return isString(text) && tokenizer ? tokenizer.text(text) : text;\n  });\n  const { [\"data-preset-tag\"]: dataPresetTag, ...props } = element.props;\n  if (isString(element.type) || isMotionComponent(element.type)) {\n    const elementType = unwrapMotionComponent(element.type) || element.type;\n    const tag = dataPresetTag || elementType;\n    const stylesPresetClassName = isString(tag) ? stylesPresetsClassNames == null ? void 0 : stylesPresetsClassNames[tag] : void 0;\n    props.className = cx(\"framer-text\", props.className, stylesPresetClassName);\n    if (tokenizer && depth === 0 && !onlyLineBreaks)\n      Object.assign(props, tokenizer.props(props.style));\n    const isHeading = elementType === \"h1\" || elementType === \"h2\" || elementType === \"h3\" || elementType === \"h4\" || elementType === \"h5\" || elementType === \"h6\";\n    const anchorLinkStylePresetClassName = stylesPresetsClassNames == null ? void 0 : stylesPresetsClassNames[\"anchor\"];\n    if (isHeading && anchorLinkStylePresetClassName) {\n      const slug = generateHeadingSlug(children, slugCounters);\n      props.id = slug;\n      const className2 = cx(\"framer-text\", anchorLinkStylePresetClassName);\n      const anchorLink = /* @__PURE__ */ jsx74(\"a\", { href: `#${slug}`, className: className2, children });\n      props.style = { ...props.style ?? {}, scrollMarginTop: anchorLinkOffsetY };\n      children = [anchorLink];\n    }\n  }\n  return cloneElement3(element, props, ...children);\n}\nfunction generateHeadingSlug(children, slugCounters) {\n  const headingText = children.map(extractTextFromReactNode).join(\"\");\n  let slug = slugify(headingText);\n  const slugCounter = slugCounters[slug] ?? 0;\n  if (slugCounter > 0) {\n    slug += `-${slugCounter}`;\n  }\n  slugCounters[slug] = slugCounter + 1;\n  return slug;\n}\nfunction extractTextFromReactNode(node) {\n  if (isString(node) || isNumber(node)) {\n    return node.toString();\n  }\n  if (isValidElement5(node)) {\n    return extractTextFromReactNode(node.props.children);\n  }\n  if (Array.isArray(node)) {\n    return node.map(extractTextFromReactNode).join(\"\");\n  }\n  return \"\";\n}\nvar RichText2 = /* @__PURE__ */ forwardRef9(\n  ({ children, html, htmlFromDesign, ...props }, ref) => {\n    const content = html || children || htmlFromDesign;\n    if (isString(content)) {\n      if (!props.stylesPresetsClassName && isObject(props.stylesPresetsClassNames)) {\n        props.stylesPresetsClassName = Object.values(props.stylesPresetsClassNames).join(\" \");\n      }\n      const contentProp = {\n        // We need to use the original prop name.\n        [isString(html) ? \"html\" : \"htmlFromDesign\"]: content\n      };\n      return /* @__PURE__ */ jsx74(DeprecatedRichText, { ...props, ...contentProp, ref });\n    }\n    if (!props.stylesPresetsClassNames && isString(props.stylesPresetsClassName)) {\n      const [h1, h2, h3, p, a] = props.stylesPresetsClassName.split(\" \");\n      if (h1 === void 0 || h2 === void 0 || h3 === void 0 || p === void 0 || a === void 0) {\n        console.warn(`Encountered invalid stylesPresetsClassNames: ${props.stylesPresetsClassNames}`);\n      } else {\n        props.stylesPresetsClassNames = { h1, h2, h3, p, a };\n      }\n    }\n    return /* @__PURE__ */ jsx74(RichTextContainer, { ...props, ref, children: isValidElement5(content) ? content : void 0 });\n  }\n);\n\n// ../../library/src/render/presentation/SVG.tsx\nimport React85, { forwardRef as forwardRef10 } from \"react\";\n\n// ../../library/src/render/utils/elementPropertiesForGradient.ts\nfunction linearGradientLine(angle) {\n  var _a, _b;\n  const rad = angle * Math.PI / 180;\n  const offset = {\n    x: -Math.sin(rad) * 100,\n    y: Math.cos(rad) * 100\n  };\n  const anglePoint = Point(offset.x, offset.y);\n  const angleLine = Line(Point(0.5, 0.5), anglePoint);\n  const points = Rect.points({ x: 0, y: 0, width: 1, height: 1 });\n  const sortedPoints = points.map((point) => ({ point, distance: Point.distance(anglePoint, point) })).sort((a2, b2) => a2.distance - b2.distance);\n  const a = (_a = sortedPoints[0]) == null ? void 0 : _a.point;\n  const b = (_b = sortedPoints[1]) == null ? void 0 : _b.point;\n  assert(a && b, \"linearGradientLine: Must have 2 closest points.\");\n  const [c, d] = points.filter((point) => !Point.isEqual(point, a) && !Point.isEqual(point, b));\n  assert(c && d, \"linearGradientLine: Must have 2 opposing points.\");\n  const start = Line.intersection(angleLine, Line(a, b));\n  const end = Line.intersection(angleLine, Line(c, d));\n  assert(start && end, \"linearGradientLine: Must have a start and end point.\");\n  return Line(start, end);\n}\nfunction elementPropertiesForLinearGradient(gradient, id) {\n  var _a, _b;\n  const line = linearGradientLine(gradient.angle);\n  const stops = gradientColorStops(gradient);\n  const startPosition = ((_a = stops[0]) == null ? void 0 : _a.position) ?? 0;\n  const endPosition = ((_b = stops[stops.length - 1]) == null ? void 0 : _b.position) ?? 1;\n  const startPoint = Line.pointAtPercentDistance(line, startPosition);\n  const endPoint = Line.pointAtPercentDistance(line, endPosition);\n  const interpolator = interpolate([startPosition, endPosition], [0, 1]);\n  return {\n    id: `id${id}g${LinearGradient.hash(gradient)}`,\n    x1: startPoint.x,\n    y1: startPoint.y,\n    x2: endPoint.x,\n    y2: endPoint.y,\n    stops: stops.map((stop) => ({\n      color: stop.value,\n      alpha: ConvertColor.getAlpha(stop.value) * gradient.alpha,\n      position: interpolator(stop.position)\n    }))\n  };\n}\nfunction elementPropertiesForRadialGradient(gradient, id) {\n  return {\n    id: `id${id}g${RadialGradient.hash(gradient)}`,\n    widthFactor: gradient.widthFactor,\n    heightFactor: gradient.heightFactor,\n    centerAnchorX: gradient.centerAnchorX,\n    centerAnchorY: gradient.centerAnchorY,\n    stops: gradientColorStops(gradient).map((stop) => ({\n      color: stop.value,\n      alpha: ConvertColor.getAlpha(stop.value) * gradient.alpha,\n      position: stop.position\n    }))\n  };\n}\n\n// ../../library/src/render/types/RelativeNumber.ts\nfunction isRelativeNumber(value) {\n  if (!isString(value))\n    return false;\n  const lastChar = value.charAt(value.length - 1);\n  if (lastChar !== \"%\")\n    return false;\n  const withoutLastChar = value.slice(0, -1);\n  const float = parseFloat(withoutLastChar);\n  return isNumber(float);\n}\nfunction getRelativeNumberValue(value) {\n  const withoutLastChar = value.slice(0, -1);\n  const float = parseFloat(withoutLastChar);\n  return isNumber(float) ? float : 50;\n}\n\n// ../../library/src/render/utils/imagePatternPropsForFill.tsx\nfunction getPositionXFraction(positionX) {\n  if (isRelativeNumber(positionX))\n    return getRelativeNumberValue(positionX) / 100;\n  if (positionX === \"left\")\n    return 0;\n  if (positionX === \"right\")\n    return 1;\n  return 0.5;\n}\nfunction getPositionYFraction(positionY) {\n  if (isRelativeNumber(positionY))\n    return getRelativeNumberValue(positionY) / 100;\n  if (positionY === \"top\")\n    return 0;\n  if (positionY === \"bottom\")\n    return 1;\n  return 0.5;\n}\nfunction imagePatternPropsForFill(fill, frame2, id, includeTransform) {\n  fill = Animatable.get(fill, \"#09F\");\n  if (!BackgroundImage.isImageObject(fill))\n    return void 0;\n  if (!fill.pixelWidth || !fill.pixelHeight)\n    return void 0;\n  const imageWidth = fill.pixelWidth;\n  const imageHeight = fill.pixelHeight;\n  let transform2;\n  const { fit } = fill;\n  let width = 1, height = 1;\n  let offsetX = 0;\n  let offsetY = 0;\n  if (fit === \"fill\" || fit === \"fit\" || fit === \"tile\" || !fit) {\n    let scaleX = 1;\n    let scaleY = 1;\n    const imageRatio = imageWidth / imageHeight;\n    const realWidth = frame2.height * imageRatio;\n    const realHeight = frame2.width / imageRatio;\n    const validScaleX = realWidth / frame2.width;\n    const validScaleY = realHeight / frame2.height;\n    if (fit === \"tile\") {\n      fill.backgroundSize ??= 1;\n      width = Math.round(fill.backgroundSize * (imageWidth / 2));\n      height = Math.round(fill.backgroundSize * (imageHeight / 2));\n      const layerPositionX = frame2.x ?? 0;\n      const layerPositionY = frame2.y ?? 0;\n      let extraOffsetX = 0;\n      let extraOffsetY = 0;\n      if (includeTransform) {\n        extraOffsetX = layerPositionX;\n        extraOffsetY = layerPositionY;\n      }\n      offsetX = (frame2.width - width) * getPositionXFraction(fill.positionX) + extraOffsetX;\n      offsetY = (frame2.height - height) * getPositionYFraction(fill.positionY) + extraOffsetY;\n      transform2 = `translate(${offsetX + layerPositionX}, ${offsetY + layerPositionY})`;\n    } else {\n      if (fit === \"fill\" || !fit ? validScaleY > validScaleX : validScaleY < validScaleX) {\n        scaleY = validScaleY;\n        offsetY = (1 - validScaleY) * getPositionYFraction(fill.positionY);\n      } else {\n        scaleX = validScaleX;\n        offsetX = (1 - validScaleX) * getPositionXFraction(fill.positionX);\n      }\n      transform2 = `translate(${offsetX}, ${offsetY}) scale(${scaleX}, ${scaleY})`;\n    }\n  }\n  const imageId = `id${id}g${\"-fillImage\"}`;\n  return { id: imageId, path: fill.src ?? \"\", transform: transform2, width, height, offsetX, offsetY };\n}\n\n// ../../library/src/render/utils/imageUrlForAsset.ts\nvar mediaType2 = \"framer/asset-reference,\";\nfunction isAssetReference(value) {\n  return value.startsWith(`data:${mediaType2}`);\n}\nfunction imageUrlForAsset(asset, pixelSize) {\n  if (/^\\w+:/u.test(asset) && !isAssetReference(asset))\n    return asset;\n  if (typeof pixelSize !== \"number\")\n    pixelSize = void 0;\n  else if (pixelSize <= 512)\n    pixelSize = 512;\n  else if (pixelSize <= 1024)\n    pixelSize = 1024;\n  else if (pixelSize <= 2048)\n    pixelSize = 2048;\n  else\n    pixelSize = 4096;\n  const isExport = RenderTarget.current() === RenderTarget.export;\n  return runtime.assetResolver(asset, { pixelSize, isExport }) ?? \"\";\n}\n\n// ../../library/src/render/presentation/ImagePatternElement.tsx\nimport { jsx as jsx75 } from \"react/jsx-runtime\";\nvar ImagePatternElement = ({\n  id,\n  path,\n  transform: transform2,\n  repeat,\n  width,\n  height,\n  offsetX,\n  offsetY\n}) => {\n  const href = imageUrlForAsset(path);\n  return /* @__PURE__ */ jsx75(\n    \"pattern\",\n    {\n      id,\n      width: repeat ? width : \"100%\",\n      height: repeat ? height : \"100%\",\n      patternContentUnits: repeat ? void 0 : \"objectBoundingBox\",\n      patternUnits: repeat ? \"userSpaceOnUse\" : void 0,\n      x: repeat ? offsetX : void 0,\n      y: repeat ? offsetY : void 0,\n      children: /* @__PURE__ */ jsx75(\n        \"image\",\n        {\n          width: repeat ? width : 1,\n          height: repeat ? height : 1,\n          href,\n          preserveAspectRatio: \"none\",\n          transform: repeat ? void 0 : transform2,\n          x: repeat ? 0 : void 0,\n          y: repeat ? 0 : void 0\n        },\n        href\n      )\n    }\n  );\n};\n\n// ../../library/src/render/utils/dom.ts\nvar frameFromElement = (element) => {\n  const frame2 = Rect.fromRect(element.getBoundingClientRect());\n  frame2.x = frame2.x + safeWindow.scrollX;\n  frame2.y = frame2.y + safeWindow.scrollY;\n  return frame2;\n};\nvar frameFromElements = (elements) => {\n  return Rect.merge(...elements.map(frameFromElement));\n};\nvar convertToPageFrame = (frame2, element) => {\n  const point = convertToPagePoint(frame2, element);\n  return {\n    x: point.x,\n    y: point.y,\n    width: frame2.width,\n    height: frame2.height\n  };\n};\nvar convertFromPageFrame = (frame2, element) => {\n  const point = convertFromPagePoint(frame2, element);\n  return {\n    x: point.x,\n    y: point.y,\n    width: frame2.width,\n    height: frame2.height\n  };\n};\nvar getPageFrame = (element) => {\n  const rect = element.getBoundingClientRect();\n  return {\n    x: rect.left + safeWindow.scrollX,\n    y: rect.top + safeWindow.scrollY,\n    width: rect.width,\n    height: rect.height\n  };\n};\nvar fromEventForPage = (event) => {\n  return {\n    x: event.pageX,\n    y: event.pageY\n  };\n};\nvar fromEventForClient = (event) => {\n  return {\n    x: event.clientX,\n    y: event.clientY\n  };\n};\nvar convertToPagePoint = (point, element) => {\n  const frame2 = getPageFrame(element);\n  return {\n    x: point.x + frame2.x,\n    y: point.y + frame2.y\n  };\n};\nvar convertFromPagePoint = (point, element) => {\n  const frame2 = getPageFrame(element);\n  return {\n    x: point.x - frame2.x,\n    y: point.y - frame2.y\n  };\n};\nvar dispatchKeyDownEvent = (keyCode, options = {}) => {\n  const keyboardEvent = new KeyboardEvent(\"keydown\", {\n    bubbles: true,\n    keyCode,\n    ...options\n  });\n  const activeElement = document.activeElement;\n  if (activeElement) {\n    activeElement.dispatchEvent(keyboardEvent);\n  }\n};\nvar DOM = {\n  frameFromElement,\n  frameFromElements,\n  convertToPageFrame,\n  convertFromPageFrame,\n  getPageFrame,\n  fromEventForPage,\n  fromEventForClient,\n  convertToPagePoint,\n  convertFromPagePoint\n};\nvar parser;\nvar supportsNativeParseHTML = /* @__PURE__ */ (() => (\n  // Firefox has rare-random issues with the native parser: https://framer-team.slack.com/archives/C01B14R6E22/p1724159313153969\n  !isFirefox() && typeof Document !== \"undefined\" && typeof Document.parseHTMLUnsafe === \"function\"\n))();\nfunction domParser(html, type) {\n  if (supportsNativeParseHTML && !type)\n    return Document.parseHTMLUnsafe(html);\n  parser ??= new DOMParser();\n  return parser.parseFromString(html, type ?? \"text/html\");\n}\n\n// ../../library/src/render/presentation/SharedSVGManager.ts\nvar useDOM = /* @__PURE__ */ isBrowser2();\nvar SharedSVGEntry = class {\n  constructor(id, svg, innerHTML, viewBox, count = 0) {\n    this.id = id;\n    this.svg = svg;\n    this.innerHTML = innerHTML;\n    this.viewBox = viewBox;\n    this.count = count;\n  }\n};\nvar visuallyHiddenStyle = \"position: absolute; overflow: hidden; bottom: 0; left: 0; width: 0; height: 0; z-index: 0; contain: strict\";\nvar SharedSVGManager = class {\n  constructor() {\n    __publicField(this, \"entries\", /* @__PURE__ */ new Map());\n  }\n  debugGetEntries() {\n    return this.entries;\n  }\n  /** Request to render a svg, this will ensure there is a global instance and will return a\n   * template referencing the image. Must be balanced with `unsubscribe()` calls using the same\n   * svg. If called multiple times while the shared SVG exists, the generateUniqueIds and\n   * contentId parameters are ignored. */\n  subscribe(svg, generateUniqueIds, contentId) {\n    if (!svg || svg === \"\")\n      return \"\";\n    let entry = this.entries.get(svg);\n    if (!entry) {\n      if (!contentId) {\n        contentId = `svg${String(hash(svg))}_${String(svg.length)}`;\n      }\n      let uniqueSVG = svg;\n      let svgSize;\n      const svgDom = parseSVG(svg);\n      if (svgDom) {\n        if (generateUniqueIds) {\n          prefixIdsInSVG(svgDom, contentId);\n        }\n        svgDom.id = contentId;\n        svgSize = getSVGSize(svgDom);\n        svgDom.removeAttribute(\"xmlns\");\n        svgDom.removeAttribute(\"xlink\");\n        svgDom.removeAttribute(\"xmlns:xlink\");\n        uniqueSVG = svgDom.outerHTML;\n      }\n      entry = this.createDOMElementFor(uniqueSVG, contentId, svgSize);\n      this.entries.set(svg, entry);\n    }\n    entry.count += 1;\n    return entry.innerHTML;\n  }\n  /** Returns the viewBox for the svg, or undefined if there is no viewBox. */\n  getViewBox(svg) {\n    if (!svg || svg === \"\")\n      return;\n    const entry = this.entries.get(svg);\n    return entry == null ? void 0 : entry.viewBox;\n  }\n  /** When no longer rendering an svg it must be unsubscribed from so resources can be cleaned up.\n   * Pass in the same svg as used with `subscribe()`. */\n  unsubscribe(svg) {\n    if (!svg || svg === \"\")\n      return;\n    const entry = this.entries.get(svg);\n    if (!entry)\n      return;\n    entry.count -= 1;\n    if (entry.count > 0)\n      return;\n    setTimeout(() => this.maybeRemoveEntry(svg), 5e3);\n  }\n  maybeRemoveEntry(svg) {\n    const entry = this.entries.get(svg);\n    if (!entry)\n      return;\n    if (entry.count > 0)\n      return;\n    this.entries.delete(svg);\n    this.removeDOMElement(entry);\n  }\n  removeDOMElement(entry) {\n    if (useDOM) {\n      const container = document == null ? void 0 : document.getElementById(entry.id);\n      container == null ? void 0 : container.remove();\n    }\n  }\n  createDOMElementFor(svg, id, size) {\n    if (useDOM) {\n      let svgTemplates = document.getElementById(\"svg-templates\");\n      if (!svgTemplates) {\n        svgTemplates = document.createElement(\"div\");\n        svgTemplates.id = \"svg-templates\";\n        svgTemplates.ariaHidden = \"true\";\n        svgTemplates.style.cssText = visuallyHiddenStyle;\n        document.body.appendChild(svgTemplates);\n      }\n      if (!document.getElementById(id)) {\n        const container = document.createElement(\"div\");\n        container.innerHTML = svg;\n        const svgElement = container.firstElementChild;\n        if (svgElement) {\n          svgElement.id = id;\n          svgTemplates.appendChild(svgElement);\n        }\n      }\n    }\n    const box = size ? `0 0 ${size.width} ${size.height}` : void 0;\n    const viewBox = box ? ` viewBox=\"${box}\"` : \"\";\n    const innerHTML = `<svg style=\"width:100%;height:100%\"${viewBox}><use href=\"#${id}\"/></svg>`;\n    return new SharedSVGEntry(id, svg, innerHTML, box);\n  }\n  clear() {\n    this.entries.clear();\n  }\n  /** Returns a string containing a div#svg-templates and all the current svg templates. Can be\n   * used after running `ReactDOMServer.renderToString()` */\n  generateTemplates() {\n    const output = [];\n    output.push(`<div id=\"svg-templates\" style=\"${visuallyHiddenStyle}\" aria-hidden=\"true\">`);\n    this.entries.forEach((value) => output.push(value.svg));\n    output.push(\"</div>\");\n    return output.join(\"\\n\");\n  }\n};\nvar sharedSVGManager = /* @__PURE__ */ new SharedSVGManager();\nfunction parseSVG(svg) {\n  try {\n    const doc = domParser(svg);\n    const node = doc.getElementsByTagName(\"svg\")[0];\n    if (!node)\n      throw Error(\"no svg element found\");\n    return node;\n  } catch {\n    return;\n  }\n}\nfunction prefixIdsInSVG(svg, prefix2) {\n  const sanitizedPrefix = sanitizeString(prefix2);\n  recursivelyPrefixId(svg, sanitizedPrefix);\n}\nfunction sanitizeString(str) {\n  return str.replace(/[^\\w\\-:.]|^[^a-z]+/gi, \"\");\n}\nfunction recursivelyPrefixId(el, prefix2) {\n  prefixId(el, prefix2);\n  const childNodes = Array.from(el.children);\n  childNodes.forEach((node) => {\n    recursivelyPrefixId(node, prefix2);\n  });\n}\nfunction prefixId(el, prefix2) {\n  const attributes = el.getAttributeNames();\n  attributes.forEach((attr) => {\n    const value = el.getAttribute(attr);\n    if (!value)\n      return;\n    if (attr === \"id\") {\n      el.setAttribute(attr, `${prefix2}_${value}`);\n    }\n    if (attr === \"href\" || attr === \"xlink:href\") {\n      const [base, fragmentIdentifier] = value.split(\"#\");\n      if (base)\n        return;\n      el.setAttribute(attr, `#${prefix2}_${fragmentIdentifier}`);\n      return;\n    }\n    const URL_REF = \"url(#\";\n    if (value.includes(URL_REF)) {\n      const prefixedValue = value.replace(URL_REF, `${URL_REF}${prefix2}_`);\n      el.setAttribute(attr, prefixedValue);\n    }\n  });\n}\nvar unitsToPixels = /* @__PURE__ */ (() => ({\n  cm: 96 / 2.54,\n  mm: 96 / 2.54 / 10,\n  Q: 96 / 2.54 / 40,\n  in: 96,\n  pc: 96 / 6,\n  pt: 96 / 72,\n  px: 1,\n  // A few assumptions about relative units.\n  em: 16,\n  ex: 8,\n  ch: 8,\n  rem: 16\n}))();\nfunction parseLength(value) {\n  var _a;\n  if (!value)\n    return;\n  const m2 = /(-?[\\d.]+)([a-z%]*)/u.exec(value);\n  if ((m2 == null ? void 0 : m2[1]) === void 0 || (m2 == null ? void 0 : m2[2]) === void 0)\n    return;\n  if ((_a = m2[2]) == null ? void 0 : _a.startsWith(\"%\"))\n    return;\n  return Math.round(parseFloat(m2[1]) * (unitsToPixels[m2[2]] || 1));\n}\nfunction getSVGSize(svg) {\n  const width = parseLength(svg.getAttribute(\"width\"));\n  const height = parseLength(svg.getAttribute(\"height\"));\n  if (typeof width !== \"number\" || typeof height !== \"number\")\n    return;\n  if (width <= 0 || height <= 0)\n    return;\n  return { width, height };\n}\n\n// ../../library/src/render/presentation/SVG.tsx\nimport { Fragment as Fragment12, jsx as jsx76, jsxs as jsxs18 } from \"react/jsx-runtime\";\nvar SVG = /* @__PURE__ */ forwardRef10(function SVG2(props, forwardedRef) {\n  const parentSize = useParentSize();\n  const layoutId = useLayoutId(props);\n  const layoutRef = React85.useRef(null);\n  const ref = forwardedRef ?? layoutRef;\n  const providedWindow = useProvidedWindow();\n  useMeasureLayout(props, layoutRef);\n  return /* @__PURE__ */ jsx76(\n    SVGComponent,\n    {\n      ...props,\n      innerRef: ref,\n      parentSize,\n      layoutId,\n      providedWindow\n    }\n  );\n});\nvar MAX_BACKGROUND_SVG_TEXT_LENGTH = 5e4;\nfunction containsImageReference(svg) {\n  return svg.indexOf(\"image\") >= 0;\n}\nfunction containsCustomPropertyReference(svg) {\n  return svg.indexOf(\"var(--\") >= 0;\n}\nfunction hasBorderRadius(style) {\n  return !!(style.borderRadius || style.borderBottomLeftRadius || style.borderBottomRightRadius || style.borderTopLeftRadius || style.borderTopRightRadius);\n}\nfunction sizeSVG(container, props) {\n  var _a, _b;\n  const div = container.current;\n  if (!div)\n    return;\n  const localWindow = props.providedWindow ?? safeWindow;\n  const svg = div.firstElementChild;\n  if (!svg || !(svg instanceof localWindow.SVGSVGElement))\n    return;\n  if (!svg.getAttribute(\"viewBox\")) {\n    const viewBox = sharedSVGManager.getViewBox(props.svg);\n    if (viewBox) {\n      svg.setAttribute(\"viewBox\", viewBox);\n    }\n  }\n  const { withExternalLayout, parentSize } = props;\n  const canUseCalculatedOnCanvasSize = !withExternalLayout && constraintsEnabled(props) && parentSize !== 1 /* Disabled */ && parentSize !== 2 /* DisabledForCurrentLevel */;\n  if (canUseCalculatedOnCanvasSize)\n    return;\n  const { intrinsicWidth, intrinsicHeight, _constraints } = props;\n  if (((_a = svg.viewBox.baseVal) == null ? void 0 : _a.width) === 0 && ((_b = svg.viewBox.baseVal) == null ? void 0 : _b.height) === 0 && isFiniteNumber(intrinsicWidth) && isFiniteNumber(intrinsicHeight)) {\n    svg.setAttribute(\"viewBox\", `0 0 ${intrinsicWidth} ${intrinsicHeight}`);\n  }\n  if (_constraints && _constraints.aspectRatio) {\n    svg.setAttribute(\"preserveAspectRatio\", \"\");\n  } else {\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n  }\n  svg.setAttribute(\"width\", \"100%\");\n  svg.setAttribute(\"height\", \"100%\");\n}\nfunction SVGStyleSheet() {\n  React85.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  return null;\n}\nvar SVGComponent = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"container\", React85.createRef());\n      __publicField(this, \"svgElement\", null);\n      __publicField(this, \"setSVGElement\", (element) => {\n        this.svgElement = element;\n        this.setLayerElement(element);\n      });\n      __publicField(this, \"previouslyRenderedSVG\", \"\");\n      __publicField(this, \"unmountedSVG\", \"\");\n    }\n    static frame(props) {\n      return calculateRect(props, props.parentSize || 0 /* Unknown */);\n    }\n    get frame() {\n      return calculateRect(this.props, this.props.parentSize || 0 /* Unknown */);\n    }\n    componentDidMount() {\n      if (this.unmountedSVG) {\n        const { svgContentId } = this.props;\n        const contentid = svgContentId ? `svg${svgContentId}` : null;\n        sharedSVGManager.subscribe(this.unmountedSVG, !svgContentId, contentid);\n        this.previouslyRenderedSVG = this.unmountedSVG;\n      }\n      if (this.props.svgContentId)\n        return;\n      sizeSVG(this.container, this.props);\n    }\n    componentWillUnmount() {\n      sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n      this.unmountedSVG = this.previouslyRenderedSVG;\n      this.previouslyRenderedSVG = \"\";\n    }\n    componentDidUpdate(prevProps) {\n      super.componentDidUpdate(prevProps);\n      if (this.props.svgContentId)\n        return;\n      const { fill } = this.props;\n      if (BackgroundImage.isImageObject(fill) && BackgroundImage.isImageObject(prevProps.fill) && fill.src !== prevProps.fill.src) {\n        resetSetStyle(this.svgElement, \"fill\", null, false);\n      }\n      sizeSVG(this.container, this.props);\n    }\n    collectLayout(style, innerStyle) {\n      if (this.props.withExternalLayout) {\n        innerStyle.width = \"100%\";\n        innerStyle.height = \"100%\";\n        innerStyle.aspectRatio = \"inherit\";\n        return;\n      }\n      const frame2 = this.frame;\n      const { rotation, intrinsicWidth, intrinsicHeight, width, height } = this.props;\n      const rotate = Animatable.getNumber(rotation);\n      style.opacity = isFiniteNumber(this.props.opacity) ? this.props.opacity : 1;\n      if (RenderTarget.hasRestrictions() && frame2) {\n        Object.assign(style, {\n          transform: `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate.toFixed(4)}deg)`,\n          width: `${frame2.width}px`,\n          height: `${frame2.height}px`\n        });\n        if (constraintsEnabled(this.props)) {\n          style.position = \"absolute\";\n        }\n        const xFactor = frame2.width / (intrinsicWidth || 1);\n        const yFactor = frame2.height / (intrinsicHeight || 1);\n        innerStyle.transformOrigin = \"top left\";\n        const { zoom, target } = RenderEnvironment;\n        if (target === RenderTarget.export) {\n          const zoomFactor = zoom > 1 ? zoom : 1;\n          innerStyle.transform = `scale(${xFactor * zoomFactor}, ${yFactor * zoomFactor})`;\n          innerStyle.zoom = 1 / zoomFactor;\n        } else {\n          innerStyle.transform = `scale(${xFactor}, ${yFactor})`;\n        }\n        if (intrinsicWidth && intrinsicHeight) {\n          innerStyle.width = intrinsicWidth;\n          innerStyle.height = intrinsicHeight;\n        }\n        return;\n      }\n      const { left, right, top, bottom } = this.props;\n      Object.assign(style, {\n        left,\n        right,\n        top,\n        bottom,\n        width,\n        height,\n        rotate\n      });\n      Object.assign(innerStyle, {\n        left: 0,\n        top: 0,\n        bottom: 0,\n        right: 0,\n        position: \"absolute\"\n      });\n    }\n    render() {\n      countNodeRender();\n      const {\n        id,\n        visible,\n        style,\n        fill,\n        svg,\n        intrinsicHeight,\n        intrinsicWidth,\n        title,\n        description,\n        layoutId,\n        className: className2,\n        variants,\n        withExternalLayout,\n        innerRef,\n        svgContentId,\n        height: _height,\n        opacity: _opacity,\n        width: _width,\n        ...rest\n      } = this.props;\n      if (!withExternalLayout && (!visible || !id))\n        return null;\n      const identifier = id ?? layoutId ?? \"svg\";\n      const frame2 = this.frame;\n      const size = frame2 || { width: intrinsicWidth || 100, height: intrinsicHeight || 100 };\n      const outerStyle = { ...style, imageRendering: \"pixelated\", flexShrink: 0 };\n      const innerStyle = {};\n      this.collectLayout(outerStyle, innerStyle);\n      collectOpacityFromProps(this.props, outerStyle);\n      collectFiltersFromProps(this.props, outerStyle);\n      Layer.applyWillChange(this.props, outerStyle, false);\n      let fillElement = null;\n      if (typeof fill === \"string\" || Color.isColorObject(fill)) {\n        const fillColor = Color.isColorObject(fill) ? fill.initialValue || Color.toRgbString(fill) : fill;\n        outerStyle.fill = fillColor;\n        outerStyle.color = fillColor;\n      } else if (LinearGradient.isLinearGradient(fill)) {\n        const gradient = fill;\n        const gradientId = `${encodeURI(id || \"\")}g${LinearGradient.hash(gradient)}`;\n        outerStyle.fill = `url(#${gradientId})`;\n        const { stops, x1, x2, y1, y2 } = elementPropertiesForLinearGradient(gradient, identifier);\n        fillElement = /* @__PURE__ */ jsx76(\n          \"svg\",\n          {\n            ref: this.setSVGElement,\n            width: \"100%\",\n            height: \"100%\",\n            style: { position: \"absolute\" },\n            role: \"presentation\",\n            children: /* @__PURE__ */ jsx76(\"linearGradient\", { id: gradientId, x1, x2, y1, y2, children: stops.map((stop, idx) => {\n              return /* @__PURE__ */ jsx76(\n                \"stop\",\n                {\n                  offset: stop.position,\n                  stopColor: stop.color,\n                  stopOpacity: stop.alpha\n                },\n                idx\n              );\n            }) })\n          }\n        );\n      } else if (RadialGradient.isRadialGradient(fill)) {\n        const gradient = fill;\n        const gradientId = `${encodeURI(id || \"\")}g${RadialGradient.hash(gradient)}`;\n        outerStyle.fill = `url(#${gradientId})`;\n        const elementProperties = elementPropertiesForRadialGradient(gradient, identifier);\n        fillElement = /* @__PURE__ */ jsx76(\n          \"svg\",\n          {\n            ref: this.setSVGElement,\n            width: \"100%\",\n            height: \"100%\",\n            style: { position: \"absolute\" },\n            role: \"presentation\",\n            children: /* @__PURE__ */ jsx76(\n              \"radialGradient\",\n              {\n                id: gradientId,\n                cy: gradient.centerAnchorY,\n                cx: gradient.centerAnchorX,\n                r: gradient.widthFactor,\n                children: elementProperties.stops.map((stop, idx) => {\n                  return /* @__PURE__ */ jsx76(\n                    \"stop\",\n                    {\n                      offset: stop.position,\n                      stopColor: stop.color,\n                      stopOpacity: stop.alpha\n                    },\n                    idx\n                  );\n                })\n              }\n            )\n          }\n        );\n      } else if (BackgroundImage.isImageObject(fill)) {\n        const imagePattern = imagePatternPropsForFill(fill, size, identifier);\n        if (imagePattern) {\n          outerStyle.fill = `url(#${imagePattern.id})`;\n          fillElement = /* @__PURE__ */ jsx76(\n            \"svg\",\n            {\n              ref: this.setSVGElement,\n              width: \"100%\",\n              height: \"100%\",\n              style: { position: \"absolute\" },\n              role: \"presentation\",\n              children: /* @__PURE__ */ jsx76(\"defs\", { children: /* @__PURE__ */ jsx76(ImagePatternElement, { ...imagePattern }) })\n            }\n          );\n        }\n      }\n      const dataProps = {\n        \"data-framer-component-type\": \"SVG\"\n      };\n      const hasTransformTemplate = !frame2;\n      if (hasTransformTemplate) {\n        Object.assign(dataProps, layoutHintDataPropsForCenter(this.props.center));\n      }\n      const svgAsBackgroundImage = !fillElement && !outerStyle.fill && !outerStyle.background && !outerStyle.backgroundImage && svg.length < MAX_BACKGROUND_SVG_TEXT_LENGTH && !containsImageReference(svg) && !containsCustomPropertyReference(svg);\n      let content = null;\n      if (svgAsBackgroundImage) {\n        outerStyle.backgroundSize = \"100% 100%\";\n        outerStyle.backgroundImage = `url('data:image/svg+xml;utf8,${encodeURIComponent(svg)}')`;\n        sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n        this.previouslyRenderedSVG = \"\";\n      } else {\n        const contentid = svgContentId ? `svg${svgContentId}` : null;\n        const __html = sharedSVGManager.subscribe(svg, !svgContentId, contentid);\n        sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n        this.previouslyRenderedSVG = svg;\n        if (hasBorderRadius(outerStyle)) {\n          outerStyle.overflow = \"hidden\";\n        }\n        content = /* @__PURE__ */ jsxs18(Fragment12, { children: [\n          fillElement,\n          /* @__PURE__ */ jsx76(\n            \"div\",\n            {\n              className: \"svgContainer\",\n              style: innerStyle,\n              ref: this.container,\n              dangerouslySetInnerHTML: { __html }\n            },\n            BackgroundImage.isImageObject(fill) ? fill.src : \"\"\n          )\n        ] });\n      }\n      const MotionComponent = htmlElementAsMotionComponent(this.props.as);\n      const { href, target, rel, onClick, onTap } = this.props;\n      const hasTitleOrDescription = title || description;\n      return /* @__PURE__ */ jsxs18(\n        MotionComponent,\n        {\n          ...dataProps,\n          ...rest,\n          layoutId,\n          transformTemplate: hasTransformTemplate ? transformTemplate(this.props.center) : void 0,\n          id,\n          ref: innerRef,\n          style: outerStyle,\n          className: className2,\n          variants,\n          tabIndex: this.props.tabIndex,\n          role: hasTitleOrDescription ? \"img\" : void 0,\n          \"aria-label\": title,\n          \"aria-description\": description,\n          \"aria-hidden\": hasTitleOrDescription ? void 0 : \"true\",\n          onTap,\n          onClick,\n          ...{ href, target, rel },\n          children: [\n            content,\n            /* @__PURE__ */ jsx76(SVGStyleSheet, {})\n          ]\n        }\n      );\n    }\n  }, __publicField(_a, \"supportsConstraints\", true), __publicField(_a, \"defaultSVGProps\", {\n    left: void 0,\n    right: void 0,\n    top: void 0,\n    bottom: void 0,\n    style: void 0,\n    _constraints: {\n      enabled: true,\n      aspectRatio: null\n    },\n    parentSize: 0 /* Unknown */,\n    rotation: 0,\n    visible: true,\n    svg: \"\",\n    shadows: []\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultSVGProps\n  }), _a;\n})();\n\n// ../../library/src/render/presentation/Text.tsx\nimport React87, { useEffect as useEffect25, useRef as useRef25 } from \"react\";\n\n// ../../library/src/render/fonts/useFontLoadStatus.tsx\nimport React86 from \"react\";\nfunction useFontLoadStatus(fontSelectors = [], timeout = 5e3) {\n  const missingFontSelectors = fontSelectors.filter((s) => !fontStore.isSelectorLoaded(s));\n  const [fontLoadStatus, setFontLoadStatus] = React86.useState(\n    missingFontSelectors.length ? \"loading\" : \"done\"\n  );\n  React86.useEffect(() => {\n    if (!missingFontSelectors.length)\n      return;\n    setFontLoadStatus(\"loading\");\n    const timer = setTimeout(() => {\n      setFontLoadStatus(\"timeout\");\n    }, timeout);\n    fontStore.loadFonts(missingFontSelectors).then(() => {\n      clearTimeout(timer);\n      setFontLoadStatus(\"done\");\n    });\n  }, [fontSelectors.join(\", \"), missingFontSelectors.join(\", \")]);\n  return fontLoadStatus;\n}\n\n// ../../library/src/render/presentation/Text.tsx\nimport { Fragment as Fragment13, jsx as jsx77, jsxs as jsxs19 } from \"react/jsx-runtime\";\nfunction TextStyleSheet() {\n  React87.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  return null;\n}\nvar Text2 = /* @__PURE__ */ React87.forwardRef(function Text3(props, forwardedRef) {\n  const parentSize = useParentSize();\n  const layoutId = useLayoutId(props);\n  const fallbackLayoutRef = useRef25(null);\n  const layoutRef = forwardedRef ?? fallbackLayoutRef;\n  const { navigate, getRoute } = useRouter();\n  const currentRoute = useCurrentRoute();\n  useRoutePreloader(props.preload ?? []);\n  const onCanvas = useIsOnFramerCanvas();\n  const matchesCurrentRoute = useLinkMatchesRoute(props.__link);\n  const fontLoadStatus = useFontLoadStatus(props.fonts);\n  useMeasureLayout(props, layoutRef);\n  const { fonts, __fromCanvasComponent } = props;\n  const prevFontsRef = useRef25([]);\n  const fontsDidChange = !isShallowEqualArray(prevFontsRef.current ?? [], fonts ?? []);\n  prevFontsRef.current = fonts;\n  useEffect25(() => {\n    if (!fontsDidChange || !fonts)\n      return;\n    void fontStore.loadFonts(fonts).then(({ newlyLoadedFontCount }) => {\n      if (!__fromCanvasComponent || !layoutRef.current || RenderTarget.current() !== RenderTarget.canvas)\n        return;\n      if (newlyLoadedFontCount === 0)\n        return;\n      measureClosestComponentContainer(layoutRef.current);\n    });\n  }, [fonts]);\n  const implicitPathVariables = useImplicitPathVariables();\n  const interceptPageLinks = React87.useCallback(\n    (event) => {\n      const anchorElement = findAnchorElement(event.target, layoutRef.current);\n      if (event.metaKey || !navigate || !anchorElement)\n        return;\n      const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables);\n      if (didNavigate) {\n        event.preventDefault();\n      }\n    },\n    [navigate, implicitPathVariables]\n  );\n  useEffect25(() => {\n    const ref = layoutRef.current;\n    if (!ref)\n      return;\n    ref.addEventListener(\"click\", interceptPageLinks);\n    return () => ref.removeEventListener(\"click\", interceptPageLinks);\n  }, [interceptPageLinks]);\n  const rawHTML = React87.useMemo(() => {\n    if (!props.rawHTML || onCanvas || !getRoute || !currentRoute)\n      return props.rawHTML;\n    return replaceFramerPageLinks(props.rawHTML, getRoute, currentRoute, implicitPathVariables);\n  }, [props.rawHTML, getRoute, currentRoute, implicitPathVariables]);\n  return /* @__PURE__ */ jsx77(\n    TextComponent,\n    {\n      ...props,\n      innerRef: layoutRef,\n      layoutId,\n      parentSize,\n      fontLoadStatus,\n      rawHTML,\n      matchesCurrentRoute\n    }\n  );\n});\nvar TextComponent = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"editorText\");\n      __publicField(this, \"setElement\", (element) => {\n        if (this.props.innerRef) {\n          this.props.innerRef.current = element;\n        }\n        this.setLayerElement(element);\n      });\n      /** Used by the ComponentContainerContext */\n      __publicField(this, \"renderMain\", (inCodeComponent) => {\n        countNodeRender();\n        const {\n          font,\n          visible,\n          alignment,\n          willChangeTransform,\n          opacity,\n          id,\n          layoutId,\n          className: className2,\n          transition,\n          variants,\n          name,\n          __fromCanvasComponent,\n          _initialStyle,\n          widthType: _widthType,\n          heightType: _heightType,\n          _usesDOMRect,\n          autoSize,\n          style: styleProp,\n          fontLoadStatus,\n          matchesCurrentRoute,\n          preload: _preload,\n          tabIndex,\n          ...rest\n        } = this.props;\n        if (!visible) {\n          return null;\n        }\n        const isHidden = this.props.isEditable && this.props.environment() === RenderTarget.canvas;\n        const justifyContent = convertVerticalAlignment2(this.props.verticalAlignment);\n        const style = {\n          outline: \"none\",\n          display: \"flex\",\n          flexDirection: \"column\",\n          justifyContent,\n          opacity: isHidden ? 0 : opacity,\n          flexShrink: 0\n        };\n        if (_initialStyle) {\n          for (const key7 in _initialStyle) {\n            if (key7.startsWith(\"--framer\")) {\n              asRecord(style)[key7] = asRecord(_initialStyle)[key7];\n            }\n          }\n        }\n        const dataProps = {\n          \"data-framer-component-type\": \"Text\",\n          \"data-framer-name\": rest[\"data-framer-name\"] ?? name\n        };\n        if (autoSize) {\n          asRecord(dataProps)[\"data-framer-component-text-autosized\"] = \"true\";\n        }\n        this.collectLayout(style, inCodeComponent);\n        collectFiltersFromProps(this.props, style);\n        collectTextShadowsForProps(this.props, style);\n        if (style.opacity === 1 || style.opacity === void 0) {\n          delete style.opacity;\n        }\n        if (willChangeTransform) {\n          forceLayerBackingWithCSSProperties(style);\n        }\n        let rawHTML = this.props.rawHTML;\n        const text = this.getOverrideText() || this.props.text;\n        if (isString(text)) {\n          if (rawHTML) {\n            rawHTML = replaceDraftHTMLWithText(rawHTML, text);\n          } else {\n            rawHTML = `<p style=\"font: ${font}\">${text}</p>`;\n          }\n        }\n        if (this.props.style) {\n          Object.assign(style, this.props.style);\n        }\n        const centeringTransformTemplate = this.transformTemplate;\n        if (centeringTransformTemplate)\n          Object.assign(dataProps, layoutHintDataPropsForCenter(this.props.center));\n        if (rawHTML) {\n          style.lineHeight = \"1px\";\n          style.fontSize = \"0px\";\n          if (RenderTarget.current() === RenderTarget.canvas && fontLoadStatus === \"loading\") {\n            style.visibility = \"hidden\";\n          }\n          if (RenderTarget.current() === RenderTarget.canvas && fontLoadStatus === \"timeout\") {\n            style.backgroundColor = \"rgba(255, 0, 0, 0.3)\";\n          }\n          Object.assign(style, styleProp);\n          if (alignment)\n            asRecord(style)[\"--framer-text-alignment\"] = alignment;\n          const tabIndexProps = getTabIndexProps(tabIndex);\n          return /* @__PURE__ */ jsx77(\n            motion.div,\n            {\n              layoutId,\n              id,\n              ...tabIndexProps,\n              ...dataProps,\n              ...rest,\n              style,\n              transformTemplate: centeringTransformTemplate,\n              dangerouslySetInnerHTML: { __html: rawHTML },\n              \"data-center\": this.props.center,\n              className: cx(className2, matchesCurrentRoute && \"isCurrent\"),\n              transition,\n              variants,\n              ref: this.setElement\n            }\n          );\n        }\n      });\n    }\n    get frame() {\n      return calculateRect(this.props, this.props.parentSize || 0 /* Unknown */, false);\n    }\n    getOverrideText() {\n      const { _forwardedOverrideId, _forwardedOverrides, id } = this.props;\n      const forwardedOverrideId = _forwardedOverrideId ?? id;\n      if (forwardedOverrideId && _forwardedOverrides) {\n        const text = _forwardedOverrides[forwardedOverrideId];\n        if (isString(text)) {\n          return text;\n        }\n      }\n    }\n    render() {\n      return /* @__PURE__ */ jsxs19(Fragment13, { children: [\n        /* @__PURE__ */ jsx77(ComponentContainerContext.Consumer, { children: this.renderMain }),\n        /* @__PURE__ */ jsx77(TextStyleSheet, {})\n      ] });\n    }\n    collectLayout(style, inCodeComponent) {\n      if (this.props.withExternalLayout)\n        return;\n      const frame2 = this.frame;\n      const {\n        rotation,\n        autoSize,\n        positionSticky,\n        positionStickyTop,\n        positionStickyRight,\n        positionStickyBottom,\n        positionStickyLeft,\n        width: externalWidth,\n        height: externalHeight,\n        _usesDOMRect,\n        positionFixed,\n        positionAbsolute\n      } = this.props;\n      const rotate = Animatable.getNumber(rotation);\n      const isDOMLayoutAutoSized = _usesDOMRect && (externalWidth === \"auto\" || externalHeight === \"auto\");\n      if (frame2 && !isDOMLayoutAutoSized && RenderTarget.hasRestrictions()) {\n        Object.assign(style, {\n          transform: `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate.toFixed(4)}deg)`,\n          // Using \u201Cauto\u201D fixes wrapping problems where our size calculation does not work out well when zooming the\n          // text (due to rendering differences).\n          // TODO: When the `autoSize` prop is removed, it's safe to leave\n          // this at `${frame.width}px`, because all auto cases will be\n          // handled by DOM layout in the `else` side of the conditional\n          width: autoSize ? \"auto\" : `${frame2.width}px`,\n          minWidth: `${frame2.width}px`,\n          height: `${frame2.height}px`\n        });\n      } else {\n        const { left, right, top, bottom } = this.props;\n        let width;\n        let height;\n        if (autoSize) {\n          width = \"auto\";\n          height = \"auto\";\n        } else {\n          if (!isFiniteNumber(left) || !isFiniteNumber(right)) {\n            width = externalWidth;\n          }\n          if (!isFiniteNumber(top) || !isFiniteNumber(bottom)) {\n            height = externalHeight;\n          }\n        }\n        Object.assign(style, {\n          left,\n          right,\n          top,\n          bottom,\n          width,\n          height,\n          rotate\n        });\n      }\n      const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n      if (positionSticky) {\n        if (!onCanvas || inCodeComponent) {\n          style.position = \"sticky\";\n          style.willChange = \"transform\";\n          style.zIndex = 1;\n          style.top = positionStickyTop;\n          style.right = positionStickyRight;\n          style.bottom = positionStickyBottom;\n          style.left = positionStickyLeft;\n        }\n      } else if (onCanvas && (positionFixed || positionAbsolute)) {\n        style.position = \"absolute\";\n      }\n    }\n    // biome-ignore lint/suspicious/useGetterReturn: legacy text component\n    get transformTemplate() {\n      const { _usesDOMRect, widthType, heightType, __fromCanvasComponent } = this.props;\n      if (this.props.transformTemplate)\n        return this.props.transformTemplate;\n      const frame2 = this.frame;\n      const isDOMLayoutAutoSized = _usesDOMRect && (widthType === 2 /* Auto */ || heightType === 2 /* Auto */);\n      const hasTransformTemplate = !frame2 || !RenderTarget.hasRestrictions() || __fromCanvasComponent || isDOMLayoutAutoSized;\n      if (hasTransformTemplate)\n        return transformTemplate(this.props.center);\n    }\n  }, __publicField(_a, \"supportsConstraints\", true), __publicField(_a, \"defaultTextProps\", {\n    opacity: void 0,\n    left: void 0,\n    right: void 0,\n    top: void 0,\n    bottom: void 0,\n    _constraints: {\n      enabled: true,\n      aspectRatio: null\n    },\n    rotation: 0,\n    visible: true,\n    alignment: void 0,\n    verticalAlignment: \"top\",\n    shadows: [],\n    font: \"16px \" + deviceFont()\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultTextProps,\n    isEditable: false,\n    environment: RenderTarget.current,\n    withExternalLayout: false,\n    fontLoadStatus: \"loading\"\n  }), _a;\n})();\nvar linkTag = \"(?:<a[^>]*>)?\";\nvar linkClosingTag = \"(?:</a>)?\";\nvar outerTag = \"<[^>]+>\";\nvar outerClosingTag = \"</[^>]+>\";\nvar blockTag = \"<(?:div|span)[^>]*>\";\nvar blockClosingTag = \"</(?:div|span)>\";\nvar inlineTag = \"<[^>]+>\";\nvar inlineClosingTag = \"</[^>]+>\";\nvar textContentRegex = /* @__PURE__ */ (() => new RegExp(\n  `^(${linkTag}${outerTag}${blockTag}${inlineTag}).*?(${inlineClosingTag}).*?(${blockClosingTag}${outerClosingTag}${linkClosingTag})$`,\n  //                                              ^^^ this is the content we want to replace\n  //                                                                      ^^^ this is the content we want to discard\n  \"su\"\n  // let the \".\" also match newlines\n))();\nfunction replaceDraftHTMLWithText(rawHTML, text) {\n  return rawHTML.replace(\n    textContentRegex,\n    (_, openingTags, inlineClosingTag2, closingTags) => openingTags + text + inlineClosingTag2 + \"<br>\" + closingTags\n  );\n}\nfunction convertVerticalAlignment2(verticalAlignment) {\n  switch (verticalAlignment) {\n    case \"top\":\n      return \"flex-start\";\n    case \"center\":\n      return \"center\";\n    case \"bottom\":\n      return \"flex-end\";\n  }\n}\nfunction getTabIndexProps(tabIndex) {\n  if (tabIndex === void 0)\n    return {};\n  return { tabIndex };\n}\n\n// ../../library/src/utils/internalId.ts\nvar keys2 = /* @__PURE__ */ new Map();\nvar InternalID = class {\n  constructor(id) {\n    this.id = id;\n    __publicField(this, \"_link\", null);\n    __publicField(this, \"_urllink\", null);\n  }\n  add(str) {\n    return InternalID.forKey(this.id + str);\n  }\n  toString() {\n    return this.id;\n  }\n  get link() {\n    const res = this._link;\n    if (res)\n      return res;\n    return this._link = \"#\" + this.id;\n  }\n  get urlLink() {\n    const res = this._urllink;\n    if (res)\n      return res;\n    return this._urllink = \"url(#\" + this.id + \")\";\n  }\n  static forKey(key7) {\n    let res = keys2.get(key7);\n    if (res)\n      return res;\n    res = new InternalID(\"a\" + (1e3 + keys2.size) + \"z\");\n    keys2.set(key7, res);\n    return res;\n  }\n};\n\n// ../../library/src/render/types/PathSegment.ts\nvar PathSegmentOuter = /* @__PURE__ */ (() => {\n  const _PathSegment = class {\n    constructor(value) {\n      // #region withClassDiscriminator\n      // NOTE: this implementation carefully copies the implementation of `withClassDiscriminator`\n      // from Vekter. If making changes here, make sure to sync them to `withClassDiscriminator` as well.\n      __publicField(this, \"__class\", \"PathSegment\");\n      // #endregion\n      __publicField(this, \"x\", 0);\n      // The anchor point of the segment.\n      __publicField(this, \"y\", 0);\n      __publicField(this, \"handleMirroring\", \"straight\");\n      __publicField(this, \"handleOutX\", 0);\n      // Describes the out tangent of the segment.\n      __publicField(this, \"handleOutY\", 0);\n      __publicField(this, \"handleInX\", 0);\n      // Describes the in tangent of the segment.\n      __publicField(this, \"handleInY\", 0);\n      __publicField(this, \"radius\", 0);\n      if (value) {\n        Object.assign(this, value);\n      }\n    }\n    merge(value) {\n      return Object.assign(Object.create(Object.getPrototypeOf(this)), this, value);\n    }\n  };\n  let PathSegment2 = _PathSegment;\n  __publicField(PathSegment2, \"displayName\", \"WithClassDiscriminatorMixin(PathSegment)\");\n  __publicField(PathSegment2, \"point\", (pathSegment) => {\n    return { x: pathSegment.x, y: pathSegment.y };\n  });\n  __publicField(PathSegment2, \"handleOut\", (pathSegment) => {\n    return { x: pathSegment.handleOutX, y: pathSegment.handleOutY };\n  });\n  __publicField(PathSegment2, \"handleIn\", (pathSegment) => {\n    return { x: pathSegment.handleInX, y: pathSegment.handleInY };\n  });\n  __publicField(PathSegment2, \"calculatedHandleOut\", (pathSegment) => {\n    switch (pathSegment.handleMirroring) {\n      case \"symmetric\":\n      case \"disconnected\":\n      case \"asymmetric\":\n        return Point.add(_PathSegment.point(pathSegment), _PathSegment.handleOut(pathSegment));\n      default:\n        return { x: pathSegment.x, y: pathSegment.y };\n    }\n  });\n  __publicField(PathSegment2, \"calculatedHandleIn\", (pathSegment) => {\n    switch (pathSegment.handleMirroring) {\n      case \"symmetric\":\n        return Point.subtract(_PathSegment.point(pathSegment), _PathSegment.handleOut(pathSegment));\n      case \"disconnected\":\n      case \"asymmetric\":\n        return Point.add(_PathSegment.point(pathSegment), _PathSegment.handleIn(pathSegment));\n      default:\n        return _PathSegment.point(pathSegment);\n    }\n  });\n  __publicField(PathSegment2, \"curveDefault\", (points, index) => {\n    if (points.length > 2) {\n      let pointBefore;\n      let pointAfter;\n      if (index === 0) {\n        pointBefore = points[points.length - 1];\n      } else {\n        pointBefore = points[index - 1];\n      }\n      if (index === points.length - 1) {\n        pointAfter = points[0];\n      } else {\n        pointAfter = points[index + 1];\n      }\n      assert(pointBefore, \"pointBefore should be defined\");\n      assert(pointAfter, \"pointAfter should be defined\");\n      const delta = Point.subtract(_PathSegment.point(pointAfter), _PathSegment.point(pointBefore));\n      return { x: delta.x / 4, y: delta.y / 4 };\n    }\n    return { x: 10, y: 10 };\n  });\n  ;\n  PathSegment2.prototype.__class = \"PathSegment\";\n  return PathSegment2;\n})();\nvar PathSegment = PathSegmentOuter;\n\n// ../../library/src/render/traits/Path.ts\nvar key5 = \"pathSegments\";\nfunction withPath(target) {\n  return key5 in target;\n}\nvar pathDefaults = {\n  pathSegments: [],\n  pathClosed: false\n};\nfunction toSVGPath(withPaths, translate = { x: 0, y: 0 }, canvasMode = RenderTarget.canvas) {\n  let pathElements = [];\n  let paths = [];\n  if (Array.isArray(withPaths)) {\n    paths = withPaths;\n  } else {\n    paths = [withPaths];\n  }\n  paths.forEach((path) => {\n    const { pathClosed, pathSegments } = path;\n    const segmentCount = pathSegments.length;\n    if (segmentCount === 0)\n      return \"\";\n    for (let i = 0; i < segmentCount; i++) {\n      const segment = pathSegments[i];\n      assert(segment, \"Path segment must be defined\");\n      let nextSegment;\n      let prevSegment;\n      const isFirstSegment = i === 0;\n      const isLastSegment = i === segmentCount - 1;\n      if (!isLastSegment) {\n        nextSegment = pathSegments[i + 1];\n      } else if (pathClosed) {\n        nextSegment = pathSegments[0];\n      }\n      if (!isFirstSegment) {\n        prevSegment = pathSegments[i - 1];\n      } else if (pathClosed) {\n        prevSegment = pathSegments[segmentCount - 1];\n      }\n      if (i === 0) {\n        pathElements.push(\"M\");\n      } else if (prevSegment && isStraightCurve(prevSegment, segment)) {\n        pathElements.push(\"L\");\n      }\n      pathElements.push(segment.x + translate.x, segment.y + translate.y);\n      if (nextSegment && !isStraightCurve(segment, nextSegment)) {\n        const handleOut = PathSegment.calculatedHandleOut(segment);\n        const handleIn = PathSegment.calculatedHandleIn(nextSegment);\n        pathElements.push(\n          \"C\",\n          handleOut.x + translate.x,\n          handleOut.y + translate.y,\n          handleIn.x + translate.x,\n          handleIn.y + translate.y\n        );\n      }\n      if (isLastSegment && nextSegment) {\n        if (isStraightCurve(segment, nextSegment)) {\n          pathElements.push(\"Z\");\n        } else {\n          pathElements.push(nextSegment.x + translate.x, nextSegment.y + translate.y, \"Z\");\n        }\n      }\n    }\n  });\n  if (canvasMode === RenderTarget.export || canvasMode === RenderTarget.preview) {\n    pathElements = pathElements.map((value) => isFiniteNumber(value) ? roundedNumberString(value, 3) : value);\n  }\n  return pathElements.join(\" \");\n}\nfunction isStraightCurve(fromSegment, toSegment) {\n  const fromStraight = fromSegment.handleMirroring === \"straight\" || fromSegment.handleOutX === 0 && fromSegment.handleOutY === 0;\n  const toStraight = toSegment.handleMirroring === \"straight\" || toSegment.handleInX === 0 && toSegment.handleInY === 0;\n  return fromStraight && toStraight;\n}\n\n// ../../library/src/render/types/svgElementAttributeDefaults.ts\nvar svgElementAttributeDefaults = {\n  stroke: \"none\",\n  strokeWidth: 1,\n  strokeLinecap: \"butt\",\n  strokeLinejoin: \"miter\",\n  strokeMiterlimit: 4,\n  strokeDasharray: \"0\",\n  strokeDashoffset: 0,\n  strokeOpacity: 1,\n  fill: \"black\",\n  fillRule: \"nonzero\",\n  fillOpacity: 1\n};\n\n// ../../library/src/render/utils/createTransformValues.ts\nfunction createTransformValues(baseTransform, mode) {\n  let { x, y } = baseTransform;\n  const { width, height, rotation } = baseTransform;\n  if (mode === \"resetXYKeepFraction\") {\n    x = x - Math.floor(x);\n    y = y - Math.floor(y);\n  } else if (mode === \"resetXY\") {\n    x = 0;\n    y = 0;\n  }\n  return { x, y, width, height, rotation };\n}\nfunction getTransformMode(isRootVectorNode, includeTransform) {\n  if (includeTransform !== void 0) {\n    if (includeTransform) {\n      return \"asIs\";\n    }\n  } else {\n    if (!isRootVectorNode) {\n      return \"asIs\";\n    }\n  }\n  if (isRootVectorNode) {\n    return \"resetXYKeepFraction\";\n  } else {\n    return \"resetXY\";\n  }\n}\nfunction transformValues(rect, rotation, isRootVectorNode, includeTransform) {\n  const transformMode = getTransformMode(isRootVectorNode, includeTransform);\n  const baseTransform = { ...rect, rotation };\n  const transform2 = createTransformValues(baseTransform, transformMode);\n  return transform2;\n}\n\n// ../../library/src/render/utils/transformString.ts\nfunction transformString2(transform2) {\n  if (transform2 === void 0) {\n    return void 0;\n  }\n  const { x, y, rotation, width, height } = transform2;\n  let result;\n  if (x !== 0 || y !== 0) {\n    result = `translate(${roundedNumberString(x, 3)} ${roundedNumberString(y, 3)})`;\n  }\n  if (rotation !== 0) {\n    const roundedRotation = roundedNumberString(rotation, 4);\n    const roundedWidth = roundedNumberString(width / 2, 3);\n    const roundedHeight = roundedNumberString(height / 2, 3);\n    const rotationString = `rotate(${roundedRotation} ${roundedWidth} ${roundedHeight})`;\n    result = result ? `${result} ${rotationString}` : rotationString;\n  }\n  return result;\n}\n\n// ../../library/src/render/presentation/GradientElement.tsx\nimport { Component as Component16 } from \"react\";\nimport { jsx as jsx78 } from \"react/jsx-runtime\";\nvar LinearGradientElement = class extends Component16 {\n  render() {\n    const { id, stops, x1, x2, y1, y2 } = this.props;\n    return /* @__PURE__ */ jsx78(\"linearGradient\", { id, x1, x2, y1, y2, children: stops.map((stop, idx) => {\n      return /* @__PURE__ */ jsx78(\"stop\", { offset: stop.position, stopColor: stop.color, stopOpacity: stop.alpha }, idx);\n    }) });\n  }\n};\nvar RadialGradientElement = class extends Component16 {\n  render() {\n    const { centerAnchorX, centerAnchorY, id, widthFactor, heightFactor, stops } = this.props;\n    return /* @__PURE__ */ jsx78(\n      \"radialGradient\",\n      {\n        id,\n        cy: centerAnchorY,\n        cx: centerAnchorX,\n        r: widthFactor,\n        gradientTransform: getRadialGradientTransform(heightFactor, widthFactor, centerAnchorX, centerAnchorY),\n        children: stops.map((stop, idx) => {\n          return /* @__PURE__ */ jsx78(\"stop\", { offset: stop.position, stopColor: stop.color, stopOpacity: stop.alpha }, idx);\n        })\n      }\n    );\n  }\n};\nfunction getRadialGradientTransform(heightFactor, widthFactor, centerAnchorX, centerAnchorY) {\n  const scaleWidth = widthFactor ? heightFactor / widthFactor : 1e3;\n  return `translate(${centerAnchorX}, ${centerAnchorY}) scale(1 ${scaleWidth}) translate(-${centerAnchorX}, -${centerAnchorY})`;\n}\n\n// ../../library/src/render/presentation/SVGRoot.tsx\nimport { Component as Component17 } from \"react\";\nimport { jsx as jsx79 } from \"react/jsx-runtime\";\nvar SVGRoot = class extends Component17 {\n  render() {\n    const { children, frame: frame2, innerRef } = this.props;\n    const { width, height } = frame2;\n    const fx = Math.floor(frame2.x);\n    const fy = Math.floor(frame2.y);\n    const svgStyle = {\n      position: \"absolute\",\n      width: Math.ceil(width),\n      height: Math.ceil(height),\n      overflow: \"visible\",\n      display: \"block\",\n      transform: `translate(${fx}px, ${fy}px)`\n    };\n    Layer.applyWillChange(this.props, svgStyle, false);\n    return /* @__PURE__ */ jsx79(\"svg\", { width: \"100%\", height: \"100%\", style: svgStyle, ref: innerRef, children });\n  }\n};\n\n// ../../library/src/render/presentation/Vector.tsx\nimport { jsx as jsx80, jsxs as jsxs20 } from \"react/jsx-runtime\";\nvar Vector = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    render() {\n      countNodeRender();\n      const {\n        opacity,\n        calculatedPath,\n        d,\n        insideStroke,\n        shapeId,\n        strokeEnabled,\n        strokeClipId,\n        strokeWidth,\n        idAttribute,\n        rect,\n        shadows,\n        strokeAlpha,\n        name,\n        includeTransform,\n        isRootVectorNode,\n        rotation,\n        id,\n        lineCap,\n        lineJoin,\n        strokeColor,\n        strokeMiterLimit,\n        strokeDashArray,\n        strokeDashOffset,\n        fill,\n        variants,\n        transition,\n        fillOpacity\n      } = this.props;\n      if (!id || !shapeId || !strokeClipId)\n        return null;\n      const rotate = this.props.rotate ?? rotation ?? 0;\n      const { target } = RenderEnvironment;\n      const transform2 = transformValues(rect, rotate, isRootVectorNode, includeTransform);\n      let vectorFill;\n      let fillAlpha = 0;\n      let imagePattern;\n      let linearGradient;\n      let radialGradient;\n      if (isString(fill) || Color.isColorObject(fill)) {\n        const fillColor = Color.isColorObject(fill) ? fill.initialValue || Color.toRgbString(fill) : fill;\n        if (fillColor !== \"transparent\") {\n          vectorFill = fillColor;\n          fillAlpha = ConvertColor.getAlpha(vectorFill);\n        }\n      } else if (LinearGradient.isLinearGradient(fill)) {\n        linearGradient = elementPropertiesForLinearGradient(fill, id);\n        vectorFill = `url(#${linearGradient.id})`;\n        fillAlpha = 1;\n      } else if (RadialGradient.isRadialGradient(fill)) {\n        radialGradient = elementPropertiesForRadialGradient(fill, id);\n        vectorFill = `url(#${radialGradient.id})`;\n        fillAlpha = 1;\n      } else if (BackgroundImage.isImageObject(fill)) {\n        imagePattern = imagePatternPropsForFill(fill, transform2, id, includeTransform);\n        if (imagePattern) {\n          vectorFill = `url(#${imagePattern.id})`;\n          fillAlpha = 1;\n        }\n      }\n      if (vectorFill === svgElementAttributeDefaults.fill) {\n        vectorFill = void 0;\n      }\n      if (vectorFill === void 0) {\n        vectorFill = \"transparent\";\n      }\n      const fillEnabled = vectorFill !== void 0 && vectorFill !== \"transparent\" && fillAlpha !== 0;\n      if (!fillEnabled && !strokeEnabled) {\n        fillAlpha = 1;\n      }\n      let mainElement;\n      let strokeClipPath = null;\n      let shapeReference = null;\n      let strokeElement = null;\n      let pathTranslate;\n      let elementTransform;\n      const translatePaths = target === RenderTarget.export;\n      if (transform2.rotation === 0 && translatePaths) {\n        pathTranslate = transform2;\n      } else {\n        pathTranslate = { x: 0, y: 0 };\n        elementTransform = transformString2(transform2);\n      }\n      const pathAttributes = {\n        d: d ?? toSVGPath(calculatedPath, pathTranslate, target),\n        transform: elementTransform\n      };\n      const svgStrokeAttributes = {};\n      if (strokeEnabled && strokeWidth !== 0) {\n        svgStrokeAttributes.strokeWidth = strokeWidth;\n        svgStrokeAttributes.stroke = strokeColor;\n        svgStrokeAttributes.strokeLinecap = lineCap;\n        svgStrokeAttributes.strokeLinejoin = lineJoin;\n        if (lineJoin === \"miter\") {\n          svgStrokeAttributes.strokeMiterlimit = strokeMiterLimit;\n        }\n        svgStrokeAttributes.strokeDasharray = strokeDashArray;\n        if (strokeDashOffset !== 0) {\n          svgStrokeAttributes.strokeDashoffset = strokeDashOffset;\n        }\n      }\n      for (const key7 in svgElementAttributeDefaults) {\n        if (asRecord(svgStrokeAttributes)[key7] === asRecord(svgElementAttributeDefaults)[key7]) {\n          asRecord(svgStrokeAttributes)[key7] = void 0;\n        }\n      }\n      const internalShapeId = InternalID.forKey(shapeId);\n      const internalStrokeClipId = InternalID.forKey(strokeClipId);\n      const shadow = shadowForShape(\n        shadows,\n        rect,\n        internalShapeId,\n        fillAlpha,\n        strokeAlpha,\n        strokeWidth,\n        internalStrokeClipId,\n        svgStrokeAttributes\n      );\n      const currentName = target === RenderTarget.preview ? name || void 0 : void 0;\n      if (shadow.insetElement !== null || shadow.outsetElement !== null || insideStroke) {\n        pathAttributes.id = internalShapeId.id;\n        shapeReference = /* @__PURE__ */ jsx80(motion.path, { ...{ ...pathAttributes }, variants, transition });\n        if (shadow.needsStrokeClip || insideStroke) {\n          strokeClipPath = /* @__PURE__ */ jsx80(\"clipPath\", { id: internalStrokeClipId.id, children: /* @__PURE__ */ jsx80(\"use\", { xlinkHref: internalShapeId.link }) });\n        }\n        if (shadow.insetElement !== null && strokeEnabled && strokeWidth && strokeWidth > 0) {\n          mainElement = /* @__PURE__ */ jsx80(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              fill: vectorFill,\n              fillOpacity,\n              strokeOpacity: \"0\",\n              name: currentName\n            }\n          );\n          strokeElement = /* @__PURE__ */ jsx80(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              clipPath: internalStrokeClipId.urlLink,\n              fill: \"transparent\",\n              ...svgStrokeAttributes,\n              strokeWidth\n            }\n          );\n        } else {\n          mainElement = /* @__PURE__ */ jsx80(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              fill: vectorFill,\n              fillOpacity,\n              clipPath: internalStrokeClipId.urlLink,\n              ...svgStrokeAttributes,\n              strokeWidth,\n              name: currentName\n            }\n          );\n        }\n      } else {\n        pathAttributes.id = idAttribute;\n        mainElement = /* @__PURE__ */ jsx80(\n          motion.path,\n          {\n            ...{\n              ...pathAttributes,\n              fill: vectorFill,\n              ...svgStrokeAttributes\n            },\n            name: currentName,\n            fillOpacity,\n            variants,\n            transition\n          }\n        );\n      }\n      const imagePatternElement = imagePattern ? /* @__PURE__ */ jsx80(\n        ImagePatternElement,\n        {\n          ...imagePattern,\n          repeat: BackgroundImage.isImageObject(fill) && fill.fit === \"tile\"\n        }\n      ) : void 0;\n      let gradient;\n      if (linearGradient) {\n        gradient = /* @__PURE__ */ jsx80(LinearGradientElement, { ...linearGradient });\n      } else if (radialGradient) {\n        gradient = /* @__PURE__ */ jsx80(RadialGradientElement, { ...radialGradient });\n      }\n      let defs = null;\n      if (shapeReference || strokeClipPath || shadow.definition && shadow.definition.length || gradient || imagePatternElement) {\n        defs = /* @__PURE__ */ jsxs20(\"defs\", { children: [\n          shapeReference,\n          strokeClipPath,\n          shadow.definition,\n          gradient,\n          imagePatternElement\n        ] });\n      }\n      const opacityValue = opacity ?? (variants ? 1 : void 0);\n      if (defs === null && shadow.outsetElement === null && shadow.insetElement === null && strokeElement === null) {\n        mainElement = /* @__PURE__ */ jsx80(\n          motion.path,\n          {\n            ...{\n              ...pathAttributes,\n              fill: vectorFill,\n              ...svgStrokeAttributes\n            },\n            fillOpacity,\n            opacity: opacityValue,\n            variants,\n            transition,\n            name: currentName\n          }\n        );\n        return this.renderElement(mainElement);\n      }\n      return this.renderElement(\n        /* @__PURE__ */ jsxs20(motion.g, { opacity: opacityValue, variants, transition, children: [\n          defs,\n          shadow.maskElement,\n          shadow.outsetElement,\n          mainElement,\n          shadow.insetElement,\n          strokeElement\n        ] })\n      );\n    }\n    renderElement(element) {\n      const { isRootVectorNode, width, height, rect, willChangeTransform, includeTransform } = this.props;\n      const frame2 = this.props.frame ?? rect ?? { x: 0, y: 0, width: 100, height: 100 };\n      if (!isRootVectorNode)\n        return element;\n      if (includeTransform)\n        return element;\n      return /* @__PURE__ */ jsx80(\n        SVGRoot,\n        {\n          frame: frame2,\n          width,\n          height,\n          willChangeTransform,\n          innerRef: this.setLayerElement,\n          children: element\n        }\n      );\n    }\n  }, __publicField(_a, \"defaultVectorProps\", {\n    isRootVectorNode: false,\n    name: null,\n    includeTransform: void 0,\n    defaultFillColor: void 0,\n    defaultStrokeColor: void 0,\n    defaultStrokeWidth: void 0,\n    defaultStrokeAlignment: \"center\",\n    width: 100,\n    height: 100,\n    rotation: 0,\n    rotate: void 0,\n    frame: void 0,\n    opacity: void 0,\n    calculatedPath: [],\n    d: void 0,\n    shapeId: void 0,\n    insideStroke: false,\n    strokeEnabled: true,\n    strokeClipId: void 0,\n    strokeWidth: void 0,\n    idAttribute: void 0,\n    transition: void 0,\n    shadows: [],\n    strokeAlpha: 1,\n    rect: { x: 0, y: 0, width: 0, height: 0 },\n    lineCap: \"butt\",\n    strokeColor: \"#0AF\",\n    lineJoin: \"miter\",\n    strokeMiterLimit: 4,\n    strokeDashArray: \"0\",\n    strokeDashOffset: 0,\n    fill: \"rgba(0,170,255,0.5)\"\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultVectorProps\n  }), _a;\n})();\n\n// ../../library/src/render/presentation/VectorGroup.tsx\nimport { jsx as jsx81 } from \"react/jsx-runtime\";\nvar VectorGroup = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    render() {\n      countNodeRender();\n      const {\n        id,\n        name: nameProp,\n        opacity,\n        visible,\n        targetName,\n        defaultName,\n        children,\n        includeTransform,\n        x,\n        y,\n        width,\n        height,\n        rotation,\n        isRootVectorNode\n      } = this.props;\n      if (!visible)\n        return null;\n      const { target } = RenderEnvironment;\n      const rect = { x, y, width, height };\n      const transform2 = transformValues(rect, rotation, isRootVectorNode, includeTransform);\n      const addNames = target === RenderTarget.preview;\n      let name = void 0;\n      if (addNames) {\n        if (targetName) {\n          name = targetName;\n        } else if (nameProp) {\n          name = nameProp;\n        } else {\n          name = defaultName;\n        }\n      }\n      return this.renderElement(\n        /* @__PURE__ */ jsx81(\"g\", { transform: transformString2(transform2), ...{ id, name, opacity }, children })\n      );\n    }\n    renderElement(element) {\n      const { isRootVectorNode, width, height, frame: frame2, willChangeTransform, includeTransform } = this.props;\n      if (!isRootVectorNode)\n        return element;\n      if (includeTransform)\n        return element;\n      return /* @__PURE__ */ jsx81(\n        SVGRoot,\n        {\n          frame: frame2,\n          width,\n          height,\n          willChangeTransform,\n          innerRef: this.setLayerElement,\n          children: element\n        }\n      );\n    }\n  }, __publicField(_a, \"defaultVectorGroupProps\", {\n    name: void 0,\n    opacity: void 0,\n    visible: true,\n    x: 0,\n    y: 0,\n    rotation: 0,\n    width: 100,\n    height: 100,\n    targetName: void 0,\n    defaultName: \"\",\n    isRootVectorNode: false,\n    includeTransform: void 0,\n    frame: { x: 0, y: 0, width: 100, height: 100 }\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultVectorGroupProps\n  }), _a;\n})();\n\n// ../../library/src/render/traits/Shape.ts\nvar key6 = \"calculatedPaths\";\nfunction withShape(target) {\n  if (!isObject(target))\n    return false;\n  return key6 in target;\n}\n\n// ../../library/src/render/types/Size.ts\nvar Size = /* @__PURE__ */ (() => {\n  function Size2(width, height) {\n    return { width, height };\n  }\n  Size2.equals = (sizeA, sizeB) => {\n    if (sizeA === sizeB)\n      return true;\n    if (!sizeA || !sizeB)\n      return false;\n    return sizeA.width === sizeB.width && sizeA.height === sizeB.height;\n  };\n  Size2.update = (fromSize, toSize, keepAspectRatio = false) => {\n    let { width, height } = fromSize;\n    const sizeRatio = width / height;\n    width = toSize.width !== void 0 ? toSize.width : width;\n    height = toSize.height !== void 0 ? toSize.height : height;\n    if (keepAspectRatio) {\n      if (toSize.width === void 0 && toSize.height !== void 0) {\n        width = toSize.height * sizeRatio;\n      }\n      if (toSize.width !== void 0 && toSize.height === void 0 && sizeRatio !== 0) {\n        height = toSize.width / sizeRatio;\n      }\n    }\n    return { width, height };\n  };\n  Size2.subtract = (sizeA, sizeB) => {\n    return {\n      width: Math.max(0, sizeA.width - sizeB.width),\n      height: Math.max(0, sizeA.height - sizeB.height)\n    };\n  };\n  Size2.zero = Size2(0, 0);\n  Size2.isZero = function(size) {\n    return size === Size2.zero || size.width === 0 && size.height === 0;\n  };\n  Size2.defaultIfZero = function(width, height, size) {\n    if (Size2.isZero(size)) {\n      return Size2(width, height);\n    }\n    return size;\n  };\n  return Size2;\n})();\n\n// ../../library/src/render/utils/annotateTypeOnStringify.ts\nfunction annotateTypeOnStringify(ctor, typeName) {\n  const existingToJSON = ctor.prototype.toJSON;\n  ctor.prototype.toJSON = function() {\n    const base = existingToJSON ? existingToJSON.apply(this) : this;\n    return Object.assign({}, base, { __type__: typeName });\n  };\n  return ctor;\n}\nfunction isOfAnnotatedType(object, typeName) {\n  return object && object.__type__ && object.__type__ === typeName;\n}\n\n// ../../library/src/render/utils/getLoadingLazyAtYPosition.ts\nvar LOADING_LAZY_THRESHOLD = 1e3;\nfunction getLoadingLazyAtYPosition(offset) {\n  return offset > LOADING_LAZY_THRESHOLD ? \"lazy\" : void 0;\n}\n\n// ../../library/src/render/utils/gradientForShape.tsx\nfunction gradientForShape(nodeId, node) {\n  if (LinearGradient.isLinearGradient(node.fill)) {\n    return elementPropertiesForLinearGradient(node.fill, nodeId);\n  }\n  if (RadialGradient.isRadialGradient(node.fill)) {\n    return elementPropertiesForRadialGradient(node.fill, nodeId);\n  }\n  return void 0;\n}\n\n// ../../library/src/render/utils/throttle.ts\nfunction throttle(fn, time) {\n  let previous = 0;\n  let timeout;\n  const later = (...args) => {\n    previous = Date.now();\n    timeout = void 0;\n    fn(...args);\n  };\n  return (...args) => {\n    const now = Date.now();\n    const remaining = time - (now - previous);\n    if (remaining <= 0 || remaining > time) {\n      if (timeout) {\n        safeWindow.clearTimeout(timeout);\n        timeout = void 0;\n      }\n      previous = now;\n      fn(...args);\n    } else if (!timeout) {\n      timeout = safeWindow.setTimeout(later, remaining, ...args);\n    }\n  };\n}\n\n// ../../library/src/utils/addActionControls.ts\nfunction addActionControls(action, title, controls) {\n  runtime.addActionControls(action, title, controls);\n}\n\n// ../../library/src/utils/addFonts.ts\nfunction addFonts(component, passedFonts, flags) {\n  const fonts = convertMixedFontArrayToFontBundles(passedFonts);\n  if (!(flags == null ? void 0 : flags.supportsExplicitInterCodegen) && // Only emit an `explicitInter: false` bundle if we don\u2019t already have one.\n  !fonts.some((font) => font.explicitInter === false)) {\n    fonts.push({ explicitInter: false, fonts: [] });\n  }\n  Object.assign(component, { fonts });\n}\nfunction getFonts(component) {\n  const fonts = component.fonts;\n  return fonts ?? [];\n}\nfunction getFontsFromSharedStyle(fonts) {\n  if (fonts.length === 0)\n    return [{ explicitInter: false, fonts: [] }];\n  return convertMixedFontArrayToFontBundles(fonts);\n}\nfunction getFontsFromComponentPreset(fonts) {\n  if (fonts.length === 0)\n    return [{ explicitInter: false, fonts: [] }];\n  return convertMixedFontArrayToFontBundles(fonts);\n}\nfunction convertMixedFontArrayToFontBundles(fonts) {\n  const oldFontBundle = { explicitInter: false, fonts: [] };\n  const fontBundles = [];\n  for (const fontOrBundle of fonts) {\n    if (isComponentFontBundle(fontOrBundle)) {\n      fontBundles.push(fontOrBundle);\n    } else {\n      oldFontBundle.fonts.push(upgradeComponentFontV1(fontOrBundle));\n    }\n  }\n  if (oldFontBundle.fonts.length > 0)\n    fontBundles.push(oldFontBundle);\n  return fontBundles;\n}\nvar componentFontBundleKey = \"explicitInter\";\nfunction isComponentFontBundle(font) {\n  return componentFontBundleKey in font;\n}\nfunction upgradeComponentFontV1(font) {\n  let source;\n  if (font.url.startsWith(\"https://fonts.gstatic.com/s/\")) {\n    source = \"google\" /* Google */;\n  } else if (font.url.startsWith(\"https://framerusercontent.com/third-party-assets/fontshare/\")) {\n    source = \"fontshare\" /* Fontshare */;\n  } else {\n    source = \"custom\" /* Custom */;\n  }\n  return {\n    ...font,\n    source\n  };\n}\n\n// ../../library/src/utils/withPerformanceMarks.ts\nfunction withPerformanceMarks(prefix2, callback) {\n  const markStart = `${prefix2}-start`;\n  performance.mark(markStart);\n  callback();\n  const markEnd = `${prefix2}-end`;\n  performance.mark(markEnd);\n  performance.measure(prefix2, markStart, markEnd);\n}\n\n// ../../library/src/utils/network.ts\nfunction loadJSON(url) {\n  return fetch(url, { mode: \"cors\" }).then((res) => res.json());\n}\n\n// ../../library/src/utils/inspectObjectType.ts\nfunction inspectObjectType(item) {\n  let className2;\n  if ((item.constructor !== null ? item.constructor.name : void 0) !== null && (item.constructor !== null ? item.constructor.name : void 0) !== \"Object\") {\n    return item.constructor.name;\n  }\n  const extract = function(str) {\n    if (!str) {\n      return null;\n    }\n    const regex2 = /\\[object (\\w+)\\]/u;\n    const match = regex2.exec(str);\n    if (match) {\n      return match[1];\n    }\n    return null;\n  };\n  if (item.toString) {\n    className2 = extract(item.toString());\n    if (className2) {\n      return className2;\n    }\n  }\n  if (item.constructor !== null ? item.constructor.toString : void 0) {\n    className2 = extract(item.constructor !== null ? item.constructor.toString() : void 0);\n    if (className2) {\n      return className2.replace(\"Constructor\", \"\");\n    }\n  }\n  return \"Object\";\n}\n\n// ../../library/src/utils/inspect.ts\nfunction inspect(item, max, l) {\n  if (max === void 0) {\n    max = 5;\n  }\n  if (l === void 0) {\n    l = 0;\n  }\n  if (item === null) {\n    return \"null\";\n  }\n  if (item === void 0) {\n    return \"undefined\";\n  }\n  if (isObject(item) && isFunction(item.toInspect)) {\n    return item.toInspect();\n  }\n  if (isString(item)) {\n    return `\"${item}\"`;\n  }\n  if (isNumber(item)) {\n    return `${item}`;\n  }\n  if (isFunction(item)) {\n    let code = item.toString().slice(\"function \".length).replace(/\\n/gu, \"\").replace(/\\s+/gu, \" \");\n    const limit = 50;\n    if (code.length > limit && l > 0) {\n      code = `${code.slice(0, +limit + 1 || void 0).trim()}\\u2026 }`;\n    }\n    return `<Function ${code}>`;\n  }\n  if (isArray(item)) {\n    if (l > max) {\n      return \"[...]\";\n    }\n    return `[${item.map((i) => inspect(i, max, (l || 0) + 1)).join(\", \")}]`;\n  }\n  if (isObject(item)) {\n    let objectInfo;\n    const objectType = inspectObjectType(item);\n    if (/HTML\\w+?Element/u.test(objectType)) {\n      return `<${objectType}>`;\n    }\n    if (l > max) {\n      objectInfo = \"{...}\";\n    } else {\n      const itemKeys = Object.keys(item);\n      objectInfo = `{${itemKeys.map((k) => `${k}:${inspect(item[k], max, (l || 0) + 1)}`).join(\", \")}}`;\n    }\n    if (objectType === \"Object\") {\n      return objectInfo;\n    }\n    return `<${objectType} ${objectInfo}>`;\n  }\n  return `${item}`;\n}\n\n// ../../library/src/utils/print.ts\nfunction print(...args) {\n  const line = args.map((arg) => {\n    return inspect(arg);\n  }).join(\", \");\n  console.log(line);\n}\n\n// ../../library/src/utils/useInitialRouteComponent.ts\nimport { useEffect as useEffect26, useState as useState9 } from \"react\";\nfunction initialRouteComponent(component) {\n  if (!component)\n    return null;\n  if (withPreload(component))\n    return null;\n  return component;\n}\nfunction useInitialRouteComponent(routes, homeNodeId) {\n  var _a;\n  const InitialRouteComponent = (_a = routes[homeNodeId]) == null ? void 0 : _a.page;\n  const [RouteComponent, setRouteComponent] = useState9(\n    initialRouteComponent(InitialRouteComponent)\n  );\n  useEffect26(() => {\n    if (withPreload(InitialRouteComponent)) {\n      void InitialRouteComponent.preload().then(setRouteComponent);\n    }\n  }, []);\n  return RouteComponent;\n}\n\n// ../../library/package.json\nvar package_default = {\n  name: \"framer\",\n  version: \"2.4.1\",\n  private: true,\n  type: \"module\",\n  author: \"Framer\",\n  license: \"MIT\",\n  scripts: {\n    coverage: \"yarn :jest --coverage\",\n    lint: \"yarn :eslint ./src --ext .ts,.tsx --format codeframe --quiet --cache\",\n    \"lint:ci\": \"yarn :eslint ./src --ext .ts,.tsx --format codeframe --quiet --cache --cache-strategy content\",\n    \"lint:fix\": \"yarn lint --fix --cache\",\n    test: \"yarn :jest\",\n    watch: \"yarn :jest --watch\",\n    postinstall: \"node postinstall.cjs\"\n  },\n  dependencies: {\n    \"@juggle/resize-observer\": \"^3.3.1\",\n    eventemitter3: \"^3.1.0\",\n    fontfaceobserver: \"^2.1.0\",\n    \"hoist-non-react-statics\": \"^3.3.2\",\n    hsluv: \"^1.0.1\"\n  },\n  devDependencies: {\n    \"@microsoft/api-extractor\": \"^7.42.3\",\n    \"@testing-library/dom\": \"^8.19.1\",\n    \"@testing-library/jest-dom\": \"^5.16.5\",\n    \"@testing-library/react\": \"^13.4.0\",\n    \"@testing-library/user-event\": \"^14.4.3\",\n    \"@types/dom-navigation\": \"^1.0.3\",\n    \"@types/google.fonts\": \"^1.0.5\",\n    \"@types/node\": \"^20.16.5\",\n    \"@types/react\": \"^18.2.67\",\n    \"@types/react-dom\": \"^18.2.22\",\n    \"@types/yargs\": \"^17.0.19\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.2.0\",\n    \"@typescript-eslint/parser\": \"^8.21.0\",\n    chalk: \"^4.1.2\",\n    eslint: \"^8.57.0\",\n    \"eslint-plugin-framer-studio\": \"workspace:*\",\n    immutable: \"^3.8.2\",\n    \"jest-diff\": \"^29.3.1\",\n    \"jest-environment-jsdom\": \"^29.3.1\",\n    \"jest-environment-jsdom-global\": \"^4.0.0\",\n    \"jest-junit\": \"^15.0.0\",\n    react: \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    semver: \"^7.5.2\",\n    typescript: \"^5.7.3\",\n    yargs: \"^17.6.2\"\n  },\n  peerDependencies: {\n    \"framer-motion\": \"11.11.7\",\n    react: \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  tsdoc: {\n    tsdocFlavor: \"AEDoc\"\n  },\n  browserslist: [\n    \"extends @framer/browserslist-config/sites\"\n  ]\n};\n\n// ../../library/src/version.ts\nvar version = /* @__PURE__ */ (() => package_default.version)();\n\n// ../../library/src/animation/Motion/addChildHack.ts\nMotionValue.prototype.addChild = function({ transformer = (v) => v }) {\n  const child = motionValue(transformer(this.get()));\n  this.onChange((v) => child.set(transformer(v)));\n  return child;\n};\n\n// ../../library/src/indexInternal.ts\nif (false) {\n  MainLoop2.start();\n}\nexport {\n  AcceleratedAnimation,\n  AnchorLinkTarget,\n  Animatable,\n  AnimatePresence,\n  AnimateSharedLayout,\n  AnyInterpolation,\n  AutomaticLayoutIds,\n  BackgroundImage,\n  BezierAnimator,\n  BoxShadow,\n  ChildrenCanSuspend,\n  Color,\n  ColorFormat,\n  ColorMixModelType,\n  ComponentContainerContext,\n  ComponentPresetsConsumer,\n  ComponentPresetsProvider,\n  ComponentViewportProvider,\n  ConstraintMask,\n  ConstraintValues,\n  Container,\n  ControlType,\n  ConvertColor,\n  CustomCursorHost,\n  CustomProperties,\n  CycleVariantState,\n  DOM,\n  Data,\n  DataContext,\n  DataObserver,\n  DataObserverContext,\n  DeprecatedComponentContainer,\n  DeprecatedFrameWithEvents,\n  DeprecatedLayoutGroupContext,\n  Device,\n  DeviceCodeComponent,\n  DimensionType,\n  DragControls,\n  Draggable,\n  EmptyState,\n  ErrorPlaceholder,\n  Fetcher,\n  FlatTree,\n  Floating,\n  FontSourceNames,\n  FormBooleanInput,\n  FormContainer,\n  FormPlainTextInput2 as FormPlainTextInput,\n  FormSelect,\n  Frame,\n  FrameWithMotion,\n  FramerAnimation,\n  FramerEvent,\n  FramerEventListener,\n  FramerEventSession,\n  GamepadContext,\n  GeneratedComponentContext,\n  GracefullyDegradingErrorBoundary,\n  Image2 as Image,\n  InternalID,\n  Layer,\n  LayoutGroup,\n  DeprecatedLayoutGroupContext as LayoutGroupContext,\n  LayoutIdContext,\n  LazyMotion,\n  LazyValue,\n  LibraryFeaturesProvider,\n  Line,\n  LinearGradient,\n  Link,\n  MainLoop,\n  MotionConfig,\n  MotionConfigContext,\n  MotionContext,\n  MotionGlobalConfig,\n  MotionSetup,\n  MotionValue,\n  NavigateTo,\n  NavigationWrapper as Navigation,\n  NavigationCallbackProvider,\n  NavigationConsumer,\n  NavigationTransitionType,\n  NotFoundError,\n  ObservableObject,\n  Page3 as Page,\n  PageEffectsProvider,\n  PageRoot,\n  ParentSizeState,\n  PathSegment,\n  PathVariablesContext,\n  Point,\n  Polygon,\n  PresenceContext,\n  PropertyOverrides2 as PropertyOverrides,\n  PropertyStore,\n  QueryCache,\n  QueryEngine,\n  RadialGradient,\n  Rect,\n  RenderTarget,\n  namespace_exports as Reorder,\n  ResolveLinks,\n  RichText2 as RichText,\n  SSRVariants,\n  SVG,\n  Scroll,\n  Shadow,\n  Size,\n  SmartComponentScopedContainer,\n  SpringAnimator,\n  Stack,\n  StyleSheetContext,\n  SwitchLayoutGroupContext,\n  Text2 as Text,\n  ValueInterpolation,\n  VariantSelector,\n  Vector,\n  VectorGroup,\n  VisualElement,\n  WindowContext,\n  WithNavigator,\n  WithOverride,\n  _injectRuntime,\n  addActionControls,\n  addFonts,\n  addPointerEvent,\n  addPointerInfo,\n  addPropertyControls,\n  addScaleCorrector,\n  animate2 as animate,\n  animateMini,\n  animateValue,\n  animateVisualElement,\n  animationControls,\n  animations,\n  annotateTypeOnStringify,\n  anticipate,\n  backIn,\n  backInOut,\n  backOut,\n  backgroundImageFromProps,\n  buildTransform,\n  calcLength,\n  calculateRect,\n  callEach,\n  cancelFrame,\n  cancelSync,\n  circIn,\n  circInOut,\n  circOut,\n  clamp,\n  collectVisualStyleFromProps,\n  color,\n  combinedCSSRulesForPreview,\n  complex,\n  constraintsEnabled,\n  convertPresentationTree,\n  convertPropsToDeviceOptions,\n  createBox,\n  createData,\n  createFramerPageLink,\n  createRendererMotionComponent,\n  createScopedAnimate,\n  cssBackgroundSize,\n  cubicBezier,\n  cx,\n  debounce,\n  defaultDeviceProps,\n  degreesToRadians,\n  delay,\n  devicePresets,\n  disableInstantTransitions,\n  dispatchKeyDownEvent,\n  distance,\n  distance2D,\n  domAnimation,\n  domMax,\n  domMin,\n  easeIn,\n  easeInOut,\n  easeOut,\n  environment,\n  executeInRenderEnvironment,\n  filterProps,\n  findSpring,\n  finiteNumber,\n  fontStore,\n  forceLayerBackingWithCSSProperties,\n  fraction,\n  frame,\n  frameData,\n  frameFromElement,\n  frameFromElements,\n  frameSteps,\n  framerAppearAnimationScriptKey,\n  framerAppearEffects,\n  framerAppearIdKey,\n  framerAppearTransformTemplateToken,\n  framerCSSMarker,\n  getComponentSize,\n  getDevicePreset,\n  getFonts,\n  getFontsFromComponentPreset,\n  getFontsFromSharedStyle,\n  getLoadingLazyAtYPosition,\n  getMeasurableCodeComponentChildren,\n  getPropertyControls,\n  getWhereExpressionFromPathVariables,\n  gradientForShape,\n  imagePatternPropsForFill,\n  imageUrlForAsset,\n  inView,\n  inertia,\n  inferInitialRouteFromPath,\n  injectComponentCSSRules,\n  installFlexboxGapWorkaroundIfNeeded,\n  interpolate,\n  invariant,\n  isAnimatable,\n  isBrowser,\n  isDesignDefinition,\n  isDragActive,\n  isEqual,\n  isFiniteNumber,\n  isFractionDimension,\n  isFramerGamepadKeydownData,\n  isFramerPageLink,\n  isGapEnabled,\n  isMotionComponent,\n  isMotionValue2 as isMotionValue,\n  isOfAnnotatedType,\n  isOverride,\n  isReactDefinition,\n  isRelativeNumber,\n  isShallowEqualArray,\n  isStaticRenderer,\n  isStraightCurve,\n  isValidMotionProp,\n  keyframes,\n  lazy,\n  loadFont,\n  loadJSON,\n  localPackageFallbackIdentifier,\n  localShadowFrame,\n  m,\n  makePaddingString,\n  makeUseVisualState,\n  markHydrationStart,\n  memoize2 as memoize,\n  mirrorEasing,\n  mix,\n  modulate,\n  motion,\n  motionValue,\n  nestedLinksCollector,\n  optimizeAppear,\n  optimizeAppearTransformTemplate,\n  optimizedAppearDataAttribute,\n  paddingFromProps,\n  parseFramerPageLink,\n  pathDefaults,\n  pipe,\n  preloadImage,\n  print,\n  progress,\n  propsForLink,\n  pushLoadMoreHistory,\n  px,\n  removeHiddenBreakpointLayers,\n  removeHiddenBreakpointLayersV2,\n  resolveLink,\n  resolveMotionValue,\n  resolvePageScope,\n  reverseEasing,\n  roundWithOffset,\n  roundedNumber,\n  roundedNumberString,\n  safeCSSValue,\n  scroll,\n  scrollInfo,\n  setGlobalRenderEnvironment,\n  setInitialHydrationState,\n  sharedSVGManager,\n  shouldOpenLinkInNewTab,\n  spring,\n  stagger,\n  startAnimation,\n  startOptimizedAppearAnimation,\n  steps,\n  sync,\n  systemFontFamilyName,\n  throttle,\n  toFlexDirection,\n  toJustifyOrAlignment,\n  toSVGPath,\n  transform,\n  transformString2 as transformString,\n  transformTemplate,\n  turnOffReactEventHandling,\n  unwrapMotionComponent,\n  useActiveTargetCallback,\n  useActiveVariantCallback,\n  useAddVariantProps,\n  useAnimate,\n  useAnimateMini,\n  useAnimatedState,\n  useAnimation,\n  useAnimationControls,\n  useAnimationFrame,\n  useBreakpointVariants,\n  useComponentViewport,\n  useConstant,\n  useCurrentPathVariables,\n  useCurrentRoute,\n  useCurrentRouteId,\n  useCustomCursors,\n  useCycle,\n  useDataRecord,\n  useAnimatedState as useDeprecatedAnimatedState,\n  useInvertedScale as useDeprecatedInvertedScale,\n  useDomEvent,\n  useDragControls,\n  useDynamicRefs,\n  useElementScroll,\n  useForceUpdate,\n  useGamepad,\n  useHotkey,\n  useHydratedBreakpointVariants,\n  useInView,\n  useInitialRouteComponent,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  useInvertedScale,\n  useIsInCurrentNavigationTarget,\n  useIsOnFramerCanvas,\n  useIsPresent,\n  useIsStaticRenderer,\n  useIsomorphicLayoutEffect,\n  useLoadMorePaginatedQuery,\n  useLoadMorePagination,\n  useLocale,\n  useLocaleCode,\n  useLocaleInfo,\n  useLocalesForCurrentRoute,\n  useLocalizationInfo,\n  useMeasureLayout,\n  useMotionTemplate,\n  useMotionValue,\n  useMotionValueEvent,\n  useNavigate,\n  useNavigation,\n  useObserveData,\n  useOnAppear,\n  useOnCurrentTargetChange,\n  useOnVariantChange,\n  useOverlayState,\n  usePageEffects,\n  usePrefetch,\n  usePreloadQuery,\n  usePresence,\n  usePrototypeNavigate,\n  useProvidedWindow,\n  useQueryData,\n  useReducedMotion,\n  useReducedMotionConfig,\n  useRenderEnvironment,\n  useResetProjection,\n  useRoute,\n  useRouteAnchor,\n  useRouteElementId,\n  useRouteHandler,\n  useRouter,\n  useScroll,\n  useSiteRefs,\n  useSpring,\n  useTime,\n  useTransform,\n  useUnmountEffect,\n  useVariantState,\n  useVelocity,\n  useViewportScroll,\n  useWillChange,\n  valueToDimensionType,\n  version,\n  visualElementStore,\n  warning,\n  withCSS,\n  withCodeBoundaryForOverrides,\n  withFX,\n  withGeneratedLayoutId,\n  withInfiniteScroll,\n  withMappedReactProps,\n  withMeasuredSize,\n  withOpacity,\n  withOptimizedAppearEffect,\n  withParallaxTransform,\n  withPath,\n  withPerformanceMarks,\n  withShape,\n  withStyleAppearEffect,\n  withVariantAppearEffect,\n  withVariantFX,\n  wrap\n};\n/**\n * @license Emotion v11.0.0\n * MIT License\n *\n * Copyright (c) Emotion team and other contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n/*! Bundled license information:\n\nreact-is/cjs/react-is.production.min.js:\n  (** @license React v16.13.1\n   * react-is.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n*/\n//# sourceMappingURL=framer.73H42MHI.mjs.map\n"],
  "mappings": "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",
  "names": ["init_ssg_sandbox_shims", "require_memoize_browser_cjs", "__commonJS", "exports", "memoize", "fn", "cache", "arg", "require_is_prop_valid_browser_cjs", "_interopDefault", "ex", "reactPropsRegex", "index", "prop", "MotionGlobalConfig", "noop", "any", "createRenderStep", "runNextFrame", "thisFrame", "nextFrame", "isProcessing", "flushNextFrame", "toKeepAlive", "latestFrameData", "triggerCallback", "callback", "step", "keepAlive", "immediate", "queue", "frameData2", "stepsOrder", "maxElapsed", "createRenderBatcher", "scheduleNextBatch", "allowKeepAlive", "useDefaultElapsed", "state2", "flagRunNextFrame", "steps2", "acc", "key", "read", "resolveKeyframes", "update", "preRender", "render", "postRender", "processBatch", "timestamp", "wake", "process2", "i", "frame", "cancelFrame", "frameData", "frameSteps", "calcBezier", "t", "a1", "a2", "subdivisionPrecision", "subdivisionMaxIterations", "binarySubdivide", "x", "lowerBound", "upperBound", "mX1", "mX2", "currentX", "currentT", "cubicBezier", "mY1", "mY2", "getTForX", "aX", "mirrorEasing", "easing", "p", "reverseEasing", "backOut", "backIn", "backInOut", "anticipate", "circIn", "circOut", "circInOut", "warning", "invariant", "clamp", "min", "max", "v", "createUnitType", "unit", "degrees", "percent", "px", "vh", "vw", "progressPercentage", "number", "alpha", "scale", "sanitize", "floatRegex", "isNullish", "singleColorRegex", "isColorString", "type", "testProp", "splitColor", "aName", "bName", "cName", "a", "b", "c", "alpha2", "clampRgbUnit", "rgbUnit", "rgba", "red", "green", "blue", "alpha$1", "parseHex", "r", "g", "hex", "hsla", "hue", "saturation", "lightness", "color", "colorRegex", "test", "_a", "_b", "NUMBER_TOKEN", "COLOR_TOKEN", "VAR_TOKEN", "VAR_FUNCTION_TOKEN", "SPLIT_TOKEN", "complexRegex", "analyseComplexValue", "value", "originalValue", "values", "indexes", "types", "split", "parsedValue", "parseComplexValue", "createTransformer", "source", "numSections", "output", "convertNumbersToZero", "getAnimatableNone", "parsed", "complex", "secondsToMilliseconds", "seconds", "millisecondsToSeconds", "milliseconds", "safeMin", "minDuration", "maxDuration", "minDamping", "maxDamping", "findSpring", "duration", "bounce", "velocity", "mass", "envelope", "derivative", "dampingRatio", "undampedFreq2", "exponentialDecay", "delta", "calcAngularFreq", "e", "f", "initialGuess", "undampedFreq", "approximateRoot", "stiffness", "rootIterations", "result", "velocityPerSecond", "frameDuration", "velocitySampleDuration", "calcGeneratorVelocity", "resolveValue", "current", "prevT", "durationKeys", "physicsKeys", "isSpringType", "options", "keys2", "getSpringOptions", "springOptions", "derived", "spring", "keyframes2", "restDelta", "restSpeed", "origin", "target", "damping", "isResolvedFromDuration", "initialVelocity", "initialDelta", "undampedAngularFreq", "isGranularScale", "resolveSpring", "angularFreq", "dampedAngularFreq", "freqForT", "currentVelocity", "isBelowVelocityThreshold", "isBelowDisplacementThreshold", "inertia", "power", "timeConstant", "bounceDamping", "bounceStiffness", "modifyTarget", "isOutOfBounds", "nearestBoundary", "amplitude", "ideal", "calcDelta", "calcLatest", "applyFriction", "latest", "timeReachedBoundary", "spring$1", "checkCatchBoundary", "hasUpdatedFrame", "easeIn", "easeOut", "easeInOut", "combineFunctions", "pipe", "transformers", "progress", "from", "to", "toFromDifference", "mixNumber", "progress2", "hueToRgb", "q", "hslaToRgba", "mixImmediate", "mixLinearColor", "fromExpo", "expo", "colorTypes", "getColorType", "asRGBA", "color2", "model", "mixColor", "fromRGBA", "toRGBA", "blended", "checkStringStartsWith", "token", "isCSSVariableName", "startsAsVariableToken", "isCSSVariableToken", "singleCssVariableRegex", "invisibleValues", "mixVisibility", "mixNumber2", "getMixer", "mixComplex", "mixArray", "mixObject", "numValues", "blendValue", "matchOrder", "orderedOrigin", "pointers", "originIndex", "originValue", "template", "originStats", "targetStats", "mix", "createMixers", "ease2", "customMixer", "mixers", "mixerFactory", "numMixers", "mixer", "easingFunction", "interpolate", "input", "isClamp", "inputLength", "interpolator", "progressInRange", "isEasingArray", "isBezierDefinition", "easingLookup", "easingDefinitionToFunction", "definition", "x1", "y1", "x2", "y2", "fillOffset", "offset", "remaining", "offsetProgress", "defaultOffset", "arr", "convertOffsetToTimes", "o", "defaultEasing", "keyframes", "keyframeValues", "times", "easingFunctions", "absoluteTimes", "mapTimeToKeyframe", "transformPropOrder", "transformProps", "positionalKeys", "isNumOrPxType", "getPosFromMatrix", "matrix", "pos", "getTranslateFromMatrix", "pos2", "pos3", "_bbox", "transform2", "matrix3d", "transformKeys", "nonTranslationalTransformKeys", "removeNonTranslationalTransform", "visualElement", "removedTransforms", "positionalValues", "paddingLeft", "paddingRight", "y", "paddingTop", "paddingBottom", "top", "left", "toResolve", "isScheduled", "anyNeedsMeasurement", "measureAllKeyframes", "resolversToMeasure", "resolver", "elementsToMeasure", "transformsToRestore", "element", "restore", "readAllKeyframes", "flushKeyframeResolvers", "KeyframeResolver", "unresolvedKeyframes", "onComplete", "name", "motionValue2", "isAsync", "currentValue", "finalKeyframe", "valueAsRead", "now", "clearTime", "time", "newTime", "instantAnimationState", "isGenerator", "isAnimatable", "hasKeyframesChanged", "canAnimate", "originKeyframe", "targetKeyframe", "isOriginAnimatable", "isTargetAnimatable", "isNotNull", "getFinalKeyframe", "repeat", "repeatType", "resolvedKeyframes", "MAX_RESOLVE_DELAY", "BaseAnimation", "autoplay", "delay2", "repeatDelay", "onUpdate", "isGenerator2", "resolvedAnimation", "resolve", "reject", "maxGeneratorDuration", "calcGeneratorDuration", "generator", "timeStep", "frameloopDriver", "passTimestamp", "generators", "percentToProgress", "percent2", "MainThreadAnimation", "onStop", "KeyframeResolver$1", "onResolved", "keyframes$1", "generatorFactory", "mapPercentToKeyframes", "mirroredGenerator", "calculatedDuration", "resolvedDuration", "totalDuration", "sample", "resolved", "keyframes3", "timeWithoutDelay", "isInDelayPhase", "elapsed", "frameGenerator", "currentIteration", "iterationProgress", "done", "isAnimationFinished", "newSpeed", "hasChanged", "driver", "onPlay", "startTime", "now2", "time2", "animateValue", "isZeroValueString", "isNone", "isNumericalString", "splitCSSVariableRegex", "parseCSSVariable", "match", "token1", "token2", "fallback", "maxDepth", "getVariableValue", "depth", "trimmed", "testValueType", "auto", "dimensionValueTypes", "findDimensionValueType", "maxDefaults", "applyDefaultFilter", "number2", "defaultValue", "functionRegex", "filter", "functions", "browserNumberValueTypes", "transformValueTypes", "int", "numberValueTypes", "defaultValueTypes", "getDefaultValueType", "getAnimatableNone2", "defaultValueType", "invalidTemplates", "makeNoneKeyframesAnimatable", "noneKeyframeIndexes", "animatableTemplate", "keyframe", "noneIndex", "DOMKeyframesResolver", "originType", "targetType", "measureKeyframe", "finalKeyframeIndex", "unsetTransformName", "unsetTransformValue", "acceleratedValues", "resolution", "generateLinearEasing", "points", "numPoints", "memo", "supportsFlags", "memoSupports", "supportsFlag", "memoized", "supportsLinearEasing", "isWaapiSupportedEasing", "supportedWaapiEasing", "cubicBezierAsString", "d", "mapEasingToNativeEasing", "segmentEasing", "startWaapiAnimation", "valueName", "keyframeOptions", "attachTimeline", "animation", "timeline", "supportsWaapi", "sampleDelta", "maxDuration2", "requiresPregeneratedKeyframes", "pregenerateKeyframes", "sampleAnimation", "pregeneratedKeyframes", "unsupportedEasingFunctions", "isUnsupportedEase", "AcceleratedAnimation", "motionValue3", "pregeneratedAnimation", "sampleTime", "addUniqueItem", "item", "removeItem", "moveItem", "fromIndex", "toIndex", "startIndex", "endIndex", "SubscriptionManager", "handler", "numSubscriptions", "MAX_VELOCITY_DELTA", "isFloat", "collectMotionValues", "MotionValue", "init", "currentTime", "prevFrameValue", "subscription", "eventName", "unsubscribe", "eventManagers", "passiveEffect", "stopPassiveEffect", "prev", "endAnimation", "startAnimation", "motionValue", "camelToDash", "str", "optimizedAppearDataId", "optimizedAppearDataAttribute", "isMotionValue", "getValueState", "resolveVariantFromProps", "props", "custom", "resolveVariant", "underDampedSpring", "criticallyDampedSpring", "keyframesTransition", "ease", "getDefaultTransition", "valueKey", "getValueTransition", "transition", "supportsScrollTimeline", "GroupPlaybackControls", "animations2", "onResolve", "onReject", "propName", "newValue", "subscriptions", "cancel", "speed", "methodName", "controls", "isTransitionDefined", "when", "_delay", "delayChildren", "staggerChildren", "staggerDirection", "animateMotionValue", "isHandoff", "valueTransition", "shouldSkip", "isKeyframesTarget", "isCustomValue", "resolveFinalValueInKeyframes", "setMotionValue", "setTarget", "transitionEnd", "getOptimisedAppearId", "isWillChangeMotionValue", "getWillChangeName", "addValueToWillChange", "willChange", "shouldBlockAnimation", "protectedKeys", "needsAnimating", "shouldBlock", "animateTarget", "targetAndTransition", "transitionOverride", "animationTypeState", "valueTarget", "appearId", "animateVariant", "variant", "getAnimation", "getChildAnimations", "forwardDelay", "animateChildren", "first", "last", "maxStaggerDuration", "generateStaggerDuration", "sortByTreeOrder", "child", "animateVisualElement", "resolvedDefinition", "isAnimationControls", "shallowCompare", "next", "prevLength", "isVariantLabel", "variantPriorityOrder", "variantProps", "numVariantProps", "getVariantContext", "context2", "context", "reversePriorityOrder", "numAnimationTypes", "animateList", "createAnimationState", "animate2", "createState", "isInitialRender", "buildResolvedTypeValues", "setAnimateFunction", "makeAnimator", "animateChanges", "changedActiveType", "removedKeys", "encounteredKeys", "removedVariantIndex", "typeState", "propIsVariant", "activeDelta", "isInherited", "variantDidChange", "checkVariantsDidChange", "shouldAnimateType", "handledRemovedValues", "definitionList", "resolvedValues", "prevResolvedValues", "allKeys", "markToAnimate", "valueHasChanged", "fallbackAnimation", "fallbackTarget", "shouldAnimate", "setActive", "isActive", "_a2", "createTypeState", "Feature", "node", "AnimationFeature", "prevAnimate", "id", "ExitAnimationFeature", "isPresent2", "onExitComplete", "prevIsPresent", "exitAnimation", "register", "animations", "isPrimaryPointer", "event", "extractEventInfo", "pointType", "addPointerInfo", "addDomEvent", "addPointerEvent", "distance", "distance2D", "xDelta", "yDelta", "createLock", "lock", "openLock", "globalHorizontalLock", "globalVerticalLock", "getGlobalLock", "drag2", "openHorizontal", "openVertical", "isDragActive", "openGestureLock", "SCALE_PRECISION", "SCALE_MIN", "SCALE_MAX", "TRANSLATE_PRECISION", "TRANSLATE_MIN", "TRANSLATE_MAX", "calcLength", "axis", "isNear", "maxDistance", "calcAxisDelta", "calcBoxDelta", "calcRelativeAxis", "relative", "parent", "calcRelativeBox", "calcRelativeAxisPosition", "layout2", "calcRelativePosition", "createAxisDelta", "createDelta", "createAxis", "createBox", "PresenceContext", "z", "usePresence", "re", "id4", "ae", "ue", "safeToRemove", "te", "LayoutGroupContext", "z", "SwitchLayoutGroupContext", "scaleCorrectors", "addScaleCorrector", "correctors", "compareByDepth", "a", "b", "FlatTree", "child", "addUniqueItem", "removeItem", "callback", "resolveMotionValue", "value", "unwrappedValue", "isMotionValue", "isCustomValue", "delay", "timeout", "start", "time", "checkElapsed", "timestamp", "elapsed", "cancelFrame", "frame", "MotionConfigContext", "p", "MotionContext", "isBrowser", "useIsomorphicLayoutEffect", "fe", "ue", "LazyContext", "microtask", "cancelMicrotask", "createRenderBatcher", "isRefObject", "ref", "useVisualElement", "Component3", "visualState", "props", "createVisualElement", "ProjectionNodeConstructor", "_a", "_b", "parent", "re", "lazyContext", "presenceContext", "PresenceContext", "reducedMotionConfig", "visualElementRef", "pe", "visualElement", "initialLayoutGroupConfig", "createProjectionNode", "ie", "optimisedAppearId", "optimizedAppearDataAttribute", "wantsHandoff", "_a2", "initialPromotionConfig", "layoutId", "layout2", "drag2", "dragConstraints", "layoutScroll", "layoutRoot", "getClosestProjectingNode", "useMotionRef", "externalRef", "te", "instance", "isControllingVariants", "isAnimationControls", "variantProps", "name", "isVariantLabel", "isVariantNode", "getCurrentTreeVariants", "context", "initial", "animate2", "useCreateMotionContext", "se", "variantLabelsAsDependency", "prop", "featureProps", "featureDefinitions", "key", "loadFeatures", "features", "motionComponentSymbol", "createRendererMotionComponent", "preloadedFeatures", "useRender", "useVisualState2", "MotionComponent", "MeasureLayout2", "configAndProps", "useLayoutId", "isStatic", "useStrictMode", "layoutProjection", "getProjectionFunctionality", "u", "ForwardRefMotionComponent", "Y", "layoutGroupId", "isStrict", "combined", "useConstant", "init", "makeState", "applyWillChange", "scrapeMotionValuesFromProps3", "createRenderState", "onMount", "state2", "makeLatestValues", "makeUseVisualState", "config", "make", "forEachDefinition", "definition", "list", "resolved", "resolveVariantFromProps", "transitionEnd", "transition", "target", "shouldApplyWillChange", "scrapeMotionValues", "values", "motionValues", "isControllingVariants$1", "isVariantNode$1", "isInitialAnimationBlocked", "variantToSet", "valueTarget", "index", "getWillChangeName", "getValueAsType", "type", "translateAlias", "numTransforms", "transformPropOrder", "buildTransform", "latestValues", "transform2", "transformTemplate", "transformString", "transformIsDefault", "i", "valueIsDefault", "valueAsType", "numberValueTypes", "transformName", "validMotionProps", "isValidMotionProp", "shouldForward", "loadExternalIsValidProp", "isValidProp", "require_is_prop_valid_browser_cjs", "filterProps", "isDom", "forwardMotionProps", "filteredProps", "visualElementStore", "prefersReducedMotion", "hasReducedMotionListener", "initPrefersReducedMotion", "motionMediaQuery", "setReducedMotionPreferences", "updateMotionValuesFromProps", "element", "next", "prev", "nextValue", "prevValue", "motionValue", "existingValue", "latestValue", "valueTypes", "dimensionValueTypes", "color", "complex", "findValueType", "v", "testValueType", "propEventHandlers", "VisualElement", "_props", "_prevProps", "_visualElement", "blockInitialAnimation", "options", "KeyframeResolver", "now2", "renderState", "willChange", "initialMotionValues", "remove", "feature", "valueIsTransform", "transformProps", "removeOnChange", "removeOnRenderRequest", "removeSyncCheck", "other", "featureDefinition", "isEnabled", "FeatureConstructor", "createBox", "listenerName", "listener", "closestVariantNode", "unsubscribe", "defaultValue", "isNumericalString", "isZeroValueString", "getAnimatableNone2", "valueFromInitial", "variant", "eventName", "SubscriptionManager", "args", "createDOMMotionComponentProxy", "componentFactory", "componentCache", "deprecatedFactoryFunction", "_target", "PanSession", "event", "handlers", "transformPagePoint", "contextWindow", "dragSnapToOrigin", "info2", "getPanInfo", "isPanStarted", "isDistancePastThreshold", "distance2D", "point3", "timestamp2", "frameData", "onStart", "onMove", "event2", "transformPoint", "onEnd", "onSessionEnd", "resumeAnimation", "panInfo", "isPrimaryPointer", "info", "extractEventInfo", "initialInfo", "point2", "onSessionStart", "pipe", "addPointerEvent", "subtractPoint", "history", "lastDevicePoint", "startDevicePoint", "getVelocity", "timeDelta", "timestampedPoint", "lastPoint", "secondsToMilliseconds", "time2", "millisecondsToSeconds", "currentVelocity", "applyConstraints", "min", "max", "elastic", "mixNumber", "calcRelativeAxisConstraints", "axis", "calcRelativeConstraints", "layoutBox", "top", "left", "bottom", "right", "calcViewportAxisConstraints", "layoutAxis", "constraintsAxis", "calcViewportConstraints", "constraintsBox", "calcOrigin", "source", "origin", "sourceLength", "calcLength", "targetLength", "progress", "clamp", "rebaseAxisConstraints", "constraints", "relativeConstraints", "defaultElastic", "resolveDragElastic", "dragElastic", "resolveAxisElastic", "minLabel", "maxLabel", "resolvePointElastic", "label", "eachAxis", "convertBoundingBoxToBox", "convertBoxToBoundingBox", "x", "y", "transformBoxPoints", "transformPoint2", "topLeft", "bottomRight", "isIdentityScale", "scale2", "hasScale", "scaleX", "scaleY", "hasTransform", "has2DTranslate", "is2DTranslate", "scalePoint", "originPoint", "distanceFromOrigin", "scaled", "applyPointDelta", "translate", "boxScale", "applyAxisDelta", "applyBoxDelta", "box", "TREE_SCALE_SNAP_MIN", "TREE_SCALE_SNAP_MAX", "applyTreeDeltas", "treeScale", "treePath", "isSharedTransition", "treeLength", "node", "delta", "transformBox", "translateAxis", "distance2", "transformAxis", "axisTranslate", "axisScale", "axisOrigin", "measureViewportBox", "measurePageBox", "rootProjectionNode2", "viewportBox", "scroll2", "getContextWindow", "current", "elementDragControls", "VisualElementDragControls", "originEvent", "snapToCursor", "dragSnapToOrigin2", "dragPropagation", "onDragStart", "getGlobalLock", "percent", "projection", "measuredAxis", "addValueToWillChange", "animationState", "dragDirectionLock", "onDirectionLock", "onDrag", "offset", "getCurrentDirection", "isDragging", "velocity", "onDragEnd", "_point", "shouldDrag", "axisValue", "prevConstraints", "onMeasureDragConstraints", "constraintsElement", "invariant", "measuredConstraints", "userConstraints", "dragMomentum", "dragTransition", "onDragTransitionEnd", "momentumAnimations", "bounceStiffness", "bounceDamping", "inertia2", "animateMotionValue", "dragKey", "externalMotionValue", "boxProgress", "latest", "stopPointerListener", "dragListener", "measureDragConstraints", "stopMeasureLayoutListener", "stopResizeListener", "addDomEvent", "stopLayoutUpdateListener", "hasLayoutChanged", "motionValue2", "direction", "currentDirection", "lockThreshold", "DragGesture", "Feature", "noop", "dragControls", "asyncHandler", "handler", "PanGesture", "pointerDownEvent", "onPanSessionStart", "onPanStart", "onPan", "onPanEnd", "globalProjectionState", "pixelsToPercent", "pixels", "correctBorderRadius", "px", "correctBoxShadow", "projectionDelta", "original", "shadow", "template", "xScale", "yScale", "averageScale", "MeasureLayoutWithContext", "I", "layoutGroup", "switchLayoutGroup", "defaultScaleCorrectors", "prevProps", "layoutDependency", "isPresent2", "stack", "promoteContext", "safeToRemove", "MeasureLayout", "usePresence", "borders", "numBorders", "asNumber", "isPx", "mixValues", "follow", "lead", "progress2", "shouldCrossfadeOpacity", "isOnlyMember", "easeCrossfadeIn", "easeCrossfadeOut", "borderLabel", "followRadius", "getRadius", "leadRadius", "radiusName", "compress", "circOut", "easing", "copyAxisInto", "originAxis", "copyBoxInto", "originBox", "copyAxisDeltaInto", "originDelta", "removePointDelta", "removeAxisDelta", "sourceAxis", "removeAxisTransforms", "transforms", "scaleKey", "originKey", "xKeys", "yKeys", "removeBoxTransforms", "sourceBox", "isAxisDeltaZero", "isDeltaZero", "axisEquals", "boxEquals", "axisEqualsRounded", "boxEqualsRounded", "aspectRatio", "axisDeltaEquals", "NodeStack", "prevLead", "indexOfNode", "member", "preserveFollowOpacity", "crossfade", "resumingFrom", "buildProjectionTransform", "latestTransform", "xTranslate", "yTranslate", "zTranslate", "transformPerspective", "rotate", "rotateX", "rotateY", "skewX", "skewY", "elementScaleX", "elementScaleY", "isSVGElement", "animateSingleValue", "keyframes2", "motionValue$1", "metrics", "isDebug", "transformAxes", "hiddenVisibility", "animationTarget", "id2", "resetDistortingTransform", "sharedAnimationValues", "cancelTreeOptimisedTransformAnimations", "projectionNode", "appearId", "getOptimisedAppearId", "createProjectionNode2", "attachResizeListener", "defaultParent", "measureScroll", "checkIsScrollRoot", "resetTransform", "propagateDirtyNodes", "resolveTargetDelta", "calcProjection", "cleanDirtyNodes", "subscriptionManager", "isLayoutDirty", "cancelDelay", "resizeUnblockUpdate", "finishAnimation", "hasRelativeTargetChanged", "newLayout", "layoutTransition", "defaultLayoutTransition", "onLayoutAnimationStart", "onLayoutAnimationComplete", "targetChanged", "hasOnlyRelativeTargetChanged", "animationOptions", "getValueTransition", "resetSkewAndRotation", "shouldNotifyListeners", "clearMeasurements", "clearIsLayoutDirty", "resetTransformStyle", "updateLayout", "notifyLayoutUpdate", "frameSteps", "clearSnapshot", "removeLeadSnapshots", "prevLayout", "phase", "needsMeasurement", "isRoot", "isResetRequested", "hasProjection", "transformTemplateValue", "transformTemplateHasChanged", "removeTransform", "pageBox", "roundBox", "checkNodeWasScrollRoot", "boxWithoutScroll", "transformOnly", "withTransforms", "boxWithoutTransform", "nodeBox", "forceRecalculation", "isShared", "relativeParent", "calcRelativePosition", "calcRelativeBox", "canSkip", "prevTreeScaleX", "prevTreeScaleY", "calcBoxDelta", "notifyAll2", "createDelta", "snapshot", "snapshotLatestValues", "mixedValues", "targetDelta", "relativeLayout", "snapshotSource", "layoutSource", "isSharedLayoutAnimation", "hasOpacityCrossfade", "prevRelativeTarget", "mixAxisDelta", "mixBox", "targetWithTransforms", "shouldAnimatePositionOnly", "xLength", "yLength", "needsReset", "hasDistortingTransform", "resetValues", "styleProp", "styles", "emptyStyles", "valuesToRender", "correct", "applyTo", "corrected", "num", "measuredLayout", "animationType", "axisSnapshot", "length", "layoutDelta", "visualDelta", "parentSnapshot", "parentLayout", "relativeSnapshot", "onExitComplete", "output", "mixAxis", "from", "to", "userAgentContains", "string", "roundPoint", "roundAxis", "isNear", "DocumentProjectionNode", "notify2", "rootProjectionNode", "HTMLProjectionNode", "documentNode", "drag", "addHoverEvent", "isActive", "callbackName", "handleEvent", "isDragActive", "HoverGesture", "FocusGesture", "isFocusVisible", "isNodeOrChild", "fireSyntheticPointerEvent", "syntheticPointerEvent", "PressGesture", "startEvent", "startInfo", "removePointerUpListener", "endEvent", "endInfo", "onTap", "onTapCancel", "globalTapTarget", "removePointerCancelListener", "cancelEvent", "cancelInfo", "handleKeydown", "keydownEvent", "handleKeyup", "keyupEvent", "removeKeydownListener", "handleBlur", "removeBlurListener", "onTapStart", "whileTap", "removePointerListener", "removeFocusListener", "observerCallbacks", "observers", "fireObserverCallback", "entry", "fireAllObserverCallbacks", "entries", "initIntersectionObserver", "root", "lookupRoot", "rootObservers", "observeIntersection", "rootInteresectionObserver", "thresholdNames", "InViewFeature", "viewport", "rootMargin", "amount", "once", "onIntersectionUpdate", "isIntersecting", "onViewportEnter", "onViewportLeave", "hasViewportOptionChanged", "prevViewport", "gestureAnimations", "layout", "lowercaseSVGElements", "isSVGComponent", "renderHTML", "style", "vars", "camelCaseAttributes", "renderSVG", "_styleProp", "camelToDash", "isForcedMotionValue", "scrapeMotionValuesFromProps", "newValues", "scrapeMotionValuesFromProps2", "targetKey", "createHtmlRenderState", "createSvgRenderState", "buildHTMLStyles", "transformOrigin", "hasTransform2", "hasTransformOrigin", "isCSSVariableName", "originX", "originY", "originZ", "calcOrigin2", "size", "calcSVGTransformOrigin", "dimensions", "pxOriginX", "pxOriginY", "dashKeys", "camelKeys", "buildSVGPath", "attrs", "spacing", "useDashCase", "keys2", "pathLength", "pathSpacing", "buildSVGAttrs", "attrX", "attrY", "attrScale", "pathOffset", "isSVGTag2", "isSVGTag", "tag", "svgMotionConfig", "htmlMotionConfig", "copyRawValuesOnly", "useInitialMotionValues", "useStyle", "useHTMLProps", "htmlProps", "useSVGProps", "_isStatic", "visualProps", "rawStyles", "createUseRender", "elementProps", "children", "renderedChildren", "B", "createMotionComponentFactory", "DOMVisualElement", "DOMKeyframesResolver", "getComputedStyle2", "HTMLVisualElement", "defaultType", "getDefaultValueType", "computedStyle", "SVGVisualElement", "createDomVisualElement", "createMotionComponent", "animations", "motion", "PopChildMeasure", "I", "prevProps", "element", "size", "PopChild", "children", "isPresent2", "id4", "ae", "ref", "pe", "nonce", "re", "MotionConfigContext", "ie", "width", "height", "top", "left", "style", "p", "q", "PresenceChild", "initial", "onExitComplete", "custom", "presenceAffectsLayout", "mode", "presenceChildren", "useConstant", "newChildrenMap", "memoizedOnExitComplete", "te", "childId", "isComplete", "context", "se", "_", "key", "ue", "PresenceContext", "getChildKey", "child", "onlyElements", "filtered", "j", "J", "AnimatePresence", "exitBeforeEnter", "invariant", "presentChildren", "presentKeys", "isInitialRender", "pendingPresentChildren", "exitComplete", "diffedChildren", "setDiffedChildren", "ye", "renderedChildren", "setRenderedChildren", "useIsomorphicLayoutEffect", "i", "exitingChildren", "nextChildren", "forceRender", "LayoutGroupContext", "l", "onExit", "isEveryExitComplete", "isExitComplete", "MotionConfig", "isValidProp", "config", "loadExternalIsValidProp", "DeprecatedLayoutGroupContext", "z", "useIsMounted", "isMounted", "pe", "useIsomorphicLayoutEffect", "useForceUpdate", "forcedRenderCount", "setForcedRenderCount", "ye", "forceRender", "te", "frame", "notify", "node", "nodeGroup", "nodes", "subscriptions", "dirtyAll", "unsubscribe", "shouldInheritGroup", "inherit", "shouldInheritId", "LayoutGroup", "children", "id4", "layoutGroupContext", "re", "LayoutGroupContext", "deprecatedLayoutGroupContext", "key", "context", "upstreamId", "memoizedContext", "se", "p", "domMin", "createDomVisualElement", "animations", "domAnimation", "gestureAnimations", "domMax", "drag", "layout", "useMotionValue", "initial", "value", "useConstant", "motionValue", "isStatic", "MotionConfigContext", "setLatest", "ue", "useCombineMotionValues", "values", "combineValues", "updateValue", "scheduleUpdate", "v", "cancelFrame", "isCustomValueType", "v", "getMixer2", "transform", "args", "useImmediate", "argOffset", "inputValue", "inputRange", "outputRange", "options", "interpolator", "interpolate", "useComputed", "compute", "collectMotionValues", "value", "useCombineMotionValues", "useTransform", "input", "inputRangeOrTransformer", "transformer", "useListTransform", "latest", "values", "useConstant", "numValues", "toNumber", "useSpring", "source", "config", "isStatic", "re", "MotionConfigContext", "activeSpringAnimation", "pe", "useMotionValue", "isMotionValue", "latestValue", "latestSetter", "startAnimation", "animation", "frameData", "stopAnimation2", "animateValue", "ie", "set", "frame", "useIsomorphicLayoutEffect", "useMotionValueEvent", "event", "callback", "resolveElements", "elements", "scope", "selectorCache", "_a", "root", "invariant", "resizeHandlers", "observer", "getElementSize", "target", "borderBoxSize", "inlineSize", "blockSize", "notifyTarget", "contentRect", "handler", "notifyAll", "entries", "createResizeObserver", "resizeElement", "element", "elementHandlers", "windowCallbacks", "windowResizeHandler", "createWindowResizeHandler", "size", "info", "callback", "resizeWindow", "resize", "a", "b", "maxElapsed2", "createAxisInfo", "createScrollInfo", "keys", "updateAxisInfo", "axisName", "time2", "axis", "length", "position", "prev", "prevTime", "progress", "elapsed", "velocityPerSecond", "updateScrollInfo", "calcInset", "container", "inset", "current", "svgBoundingBox", "parentBoundingBox", "x", "y", "svg", "parent", "ScrollOffset", "namedEdges", "resolveEdge", "edge", "delta", "asNumber2", "defaultOffset2", "resolveOffset", "offset", "containerLength", "targetLength", "targetInset", "offsetDefinition", "targetPoint", "containerPoint", "point", "getTargetSize", "resolveOffsets", "options", "lengthLabel", "targetSize", "containerSize", "hasChanged", "numOffsets", "i", "interpolate", "defaultOffset", "measure", "node", "createOnScrollHandler", "onScroll", "scrollListeners", "resizeListeners", "onScrollHandlers", "getEventTarget", "scrollInfo", "containerHandlers", "containerHandler", "measureAll", "updateAll", "frameData", "notifyAll2", "listener2", "frame", "listener", "cancelFrame", "currentHandlers", "scrollListener", "observeTimeline", "update", "timeline", "prevProgress", "onFrame", "currentTime", "progress2", "scrollTimelineFallback", "source", "cancel", "timelineCache", "getTimeline", "elementCache", "supportsScrollTimeline", "isOnScrollWithInfo", "needsElementTracking", "scrollFunction", "scrollAnimation", "animation", "valueAnimation", "scroll", "optionsWithDefaults", "refWarning", "name", "ref", "warning", "createScrollMotionValues", "motionValue", "useScroll", "layoutEffect", "values", "useConstant", "useIsomorphicLayoutEffect", "ue", "_progress", "useReducedMotion", "hasReducedMotionListener", "initPrefersReducedMotion", "shouldReduceMotion", "ye", "prefersReducedMotion", "useReducedMotionConfig", "reducedMotionPreference", "reducedMotion", "re", "MotionConfigContext", "stopAnimation", "visualElement", "value", "setVariants", "variantLabels", "key", "variant", "setTarget", "child", "setValues", "definition", "animationControls", "hasMounted", "subscribers", "controls", "transitionOverride", "invariant", "animations2", "animateVisualElement", "wrap", "min", "max", "v", "rangeSize", "createGeneratorEasing", "options", "scale2", "createGenerator", "generator", "duration", "calcGeneratorDuration", "maxGeneratorDuration", "progress2", "millisecondsToSeconds", "isDOMKeyframes", "keyframes2", "resolveSubjects", "subject", "scope", "selectorCache", "resolveElements", "calcNextTime", "current", "next", "prev", "labels", "_a", "getEasingForSegment", "easing", "i", "isEasingArray", "eraseKeyframes", "sequence", "startTime", "endTime", "keyframe", "removeItem", "addKeyframes", "offset", "mixNumber", "compareByTime", "a", "b", "defaultSegmentEasing", "createAnimationsFromSequence", "defaultTransition", "sequenceTransition", "generators2", "defaultDuration", "animationDefinitions", "sequences", "elementCache", "timeLabels", "prevTime", "currentTime", "totalDuration", "segment", "transition", "maxDuration3", "resolveValueSequence", "valueKeyframes", "valueTransition", "valueSequence", "elementIndex", "numSubjects", "valueKeyframesAsList", "keyframesAsList", "delay2", "times", "defaultOffset", "type", "remainingTransition", "ease2", "calculatedDelay", "numKeyframes", "isGenerator", "absoluteDelta", "isNumberKeyframesArray", "delta", "springTransition", "secondsToMilliseconds", "springEasing", "targetTime", "remainder", "fillOffset", "isMotionValue", "subjectSequence", "getSubjectSequence", "getValueSequence", "subjects", "subjectIndex", "thisSubject", "key", "getValueTransition2", "valueSequences", "element", "valueOffset", "valueEasing", "at", "value", "progress", "definition", "name", "isNumber", "isObjectKey", "object", "ObjectVisualElement", "VisualElement", "instance", "renderState", "createBox", "latestValues", "output", "createDOMVisualElement", "node", "isSVGElement", "SVGVisualElement", "HTMLVisualElement", "visualElementStore", "createObjectVisualElement", "isSingleValue", "animateSubject", "animations2", "animateSingleValue", "invariant", "createVisualElement", "visualElement", "animateTarget", "animateSequence", "spring", "isSequence", "createScopedAnimate", "scopedAnimate", "subjectOrSequence", "optionsOrKeyframes", "animation", "GroupPlaybackControls", "animate", "useAnimationControls", "controls", "useConstant", "animationControls", "useIsomorphicLayoutEffect", "useAnimation", "thresholds", "inView", "elementOrSelector", "onStart", "root", "rootMargin", "amount", "elements", "resolveElements", "activeIntersections", "onIntersectionChange", "entries", "entry", "onEnd", "newOnEnd", "observer2", "element", "useInView", "ref", "margin", "once", "isInView", "setInView", "ye", "ue", "onEnter", "options", "DragControls", "controls", "event", "createDragControls", "useDragControls", "useConstant", "useDomEvent", "eventName", "handler", "addDomEvent", "isMotionComponent", "component", "motionComponentSymbol", "unwrapMotionComponent", "useInstantLayoutTransition", "startTransition", "callback", "rootProjectionNode", "useInstantTransition", "forceUpdate", "forcedRenderCount", "useForceUpdate", "startInstantLayoutTransition", "unlockOnFrameRef", "pe", "frame", "instantAnimationState", "useResetProjection", "te", "root", "rootProjectionNode", "createObject", "useVisualState", "makeUseVisualState", "createObject", "namespace_exports", "__export", "ReorderGroup", "ReorderItem", "ReorderContext", "z", "checkReorder", "order", "value", "offset", "velocity", "index", "item2", "nextOffset", "nextItem", "item", "nextLayout", "nextItemCenter", "mixNumber", "moveItem", "ReorderGroupComponent", "children", "as", "axis", "onReorder", "values", "props", "externalRef", "Component3", "useConstant", "motion", "isReordering", "pe", "invariant", "context", "layout2", "idx", "entry", "compareMin", "newOrder", "getValue", "ue", "p", "Y", "a", "b", "useDefaultMotionValue", "defaultValue", "isMotionValue", "useMotionValue", "ReorderItemComponent", "style", "onDrag", "re", "point2", "zIndex", "useTransform", "latestX", "latestY", "registerItem", "updateOrder", "event", "gesturePoint", "measured", "getOriginIndex", "from", "total", "lastIndex", "stagger", "duration", "startDelay", "ease2", "fromIndex", "distance2", "delay2", "maxDelay", "easingDefinitionToFunction", "cancelSync", "stepsOrder", "acc", "key", "process2", "cancelFrame", "npm_react_dom_18_2_exports", "__export", "$a", "Ga", "Ja", "Ha", "ai", "Si", "Ni", "_i", "Pi", "Qi", "Xi", "eu", "nu", "init_ssg_sandbox_shims", "npm_scheduler_0_23_exports", "__export", "e", "F", "E", "N", "j", "q", "B", "U", "W", "Y", "D", "z", "A", "L", "O", "Q", "S", "V", "X", "Z", "init_ssg_sandbox_shims", "f", "n", "t", "a", "l", "g", "h", "k", "r", "i", "u", "o", "s", "c", "b", "d", "_", "v", "G", "H", "I", "J", "K", "m", "M", "p", "y", "w", "P", "R", "x", "C", "T", "u", "npm_react_18_2_exports", "e", "o", "npm_scheduler_0_23_exports", "s", "w", "x", "p", "a", "i", "C", "z", "fa", "ha", "N", "_", "j", "P", "T", "oa", "pa", "qa", "v", "M", "F", "sa", "ta", "R", "O", "I", "U", "V", "A", "B", "H", "$", "K", "Y", "Z", "X", "ee", "le", "Ka", "ae", "ie", "Ma", "ce", "Oa", "Pa", "Qa", "Ra", "Sa", "Ta", "Ua", "Va", "Wa", "Xa", "Ya", "Za", "ab", "bb", "cb", "db", "fe", "fb", "gb", "hb", "ib", "jb", "kb", "lb", "de", "pe", "ob", "be", "ye", "rb", "sb", "we", "ub", "vb", "Se", "xb", "xe", "ze", "_e", "Bb", "Cb", "Db", "Eb", "Fb", "Gb", "Hb", "Pe", "Jb", "Kb", "Te", "Re", "Nb", "We", "Qe", "He", "$e", "Ye", "Tb", "Ub", "Vb", "Wb", "Xb", "Yb", "Zb", "$b", "qe", "Xe", "en", "nn", "tn", "rn", "ln", "an", "un", "on", "sn", "cn", "fn", "mc", "dn", "nc", "pn", "hn", "gn", "mn", "tc", "uc", "vc", "wc", "xc", "yc", "zc", "Ac", "Bc", "Cc", "vn", "Dc", "bn", "yn", "kn", "wn", "Sn", "En", "xn", "Cn", "zn", "Nn", "Ln", "_n", "jn", "Pn", "Sc", "Tc", "Uc", "Vc", "Wc", "Xc", "Yc", "Zc", "$c", "ad", "bd", "b", "Tn", "Dn", "ed", "fd", "gd", "hd", "Mn", "jd", "Fn", "Rn", "On", "nd", "od", "pd", "qd", "rd", "In", "Un", "Vn", "Wn", "Qn", "An", "Bn", "Hn", "zd", "$n", "Kn", "Yn", "Zn", "Gn", "qn", "Xn", "Jn", "et", "nt", "tt", "rt", "lt", "at", "Pd", "it", "ut", "ot", "st", "ct", "ft", "dt", "pt", "ht", "gt", "mt", "vt", "bt", "yt", "kt", "wt", "St", "ge", "he", "Et", "je", "ke", "xt", "me", "ne", "oe", "Ct", "zt", "re", "se", "te", "ue", "ve", "Nt", "_t", "jt", "Lt", "Ae", "Be", "Ce", "De", "Ee", "Fe", "Ge", "Pt", "Ie", "Je", "Ke", "Le", "Me", "Ne", "Oe", "Tt", "Dt", "Mt", "Ft", "Rt", "Ue", "Ve", "Ot", "It", "Ut", "Ze", "Vt", "Wt", "Qt", "At", "Bt", "Ht", "ff", "$t", "Kt", "Yt", "Zt", "Gt", "qt", "nf", "D", "fr", "pf", "qf", "Xt", "sf", "tf", "cr", "vf", "wf", "Jt", "er", "zf", "Af", "Bf", "nr", "tr", "Ef", "rr", "lr", "ar", "ir", "If", "Kf", "Lf", "Mf", "ur", "or", "sr", "dr", "pr", "hr", "gr", "Uf", "E", "G", "mr", "vr", "br", "yr", "Yf", "Zf", "$f", "ag", "bg", "cg", "dg", "kr", "wr", "Sr", "hg", "ig", "jg", "Er", "xr", "Cr", "zr", "Nr", "Lr", "_r", "jr", "Pr", "tg", "ug", "vg", "wg", "Tr", "Dr", "Mr", "Fr", "Ag", "Bg", "Cg", "Dg", "Eg", "Fg", "Gg", "Hg", "Ig", "Jg", "Rr", "Lg", "Or", "Ir", "Ur", "Vr", "Qg", "Rg", "Sg", "Tg", "Tl", "Vg", "Wr", "Xg", "Yg", "Zg", "Qr", "ah", "bh", "ch", "dh", "Zl", "eh", "fh", "gh", "aa", "ih", "Ar", "kh", "Br", "L", "lh", "mh", "oh", "ph", "qh", "rh", "sh", "th", "uh", "vh", "c", "d", "wh", "f", "g", "h", "xh", "k", "m", "yh", "l", "zh", "Ah", "q", "r", "y", "n", "t", "J", "Hr", "$r", "Kr", "Yr", "Zr", "Gr", "Hh", "Ih", "Jh", "Kh", "Lh", "qr", "Mh", "Xr", "Oh", "Jr", "tl", "ll", "ul", "vl", "yl", "wl", "Sl", "El", "xl", "Q", "Wh", "Xh", "zl", "Nl", "Ll", "Cl", "bi", "ci", "di", "ei", "fi", "gi", "hi", "ii", "ji", "ki", "li", "mi", "Gl", "ni", "oi", "pi", "qi", "ri", "si", "ti", "ui", "vi", "wi", "xi", "yi", "zi", "Ai", "Bi", "Ci", "Di", "Ei", "Fi", "Gi", "Hi", "Ii", "Ji", "Ki", "Li", "Mi", "_l", "Oi", "ba", "ya", "Ri", "ka", "Ti", "Ui", "Vi", "Wi", "Pl", "Yi", "Zi", "$i", "aj", "bj", "cj", "dj", "ej", "na", "ea", "hj", "ij", "jj", "kj", "lj", "mj", "Dl", "oj", "pj", "qj", "rj", "sj", "tj", "uj", "vj", "wj", "xj", "yj", "zj", "Ml", "Fl", "Rl", "Ol", "Ej", "S", "Fj", "Gj", "ra", "ma", "Ij", "Jj", "Il", "Ul", "Vl", "Wl", "Mj", "W", "Nj", "Ql", "Pj", "Qj", "Rj", "Sj", "Tj", "Uj", "Vj", "Wj", "Xj", "Al", "Bl", "Zj", "ak", "bk", "ck", "dk", "ek", "fk", "ga", "hk", "ik", "jk", "kk", "lk", "Hl", "$l", "Kl", "Yl", "Xl", "Jl", "la", "ia", "ua", "ca", "da", "va", "wa", "Ea", "xa", "Ca", "za", "Na", "La", "Dk", "Ek", "Fk", "Gk", "Hk", "Ik", "Jk", "Kk", "Lk", "Mk", "Nk", "Ok", "Pk", "Qk", "Rk", "Sk", "Tk", "Uk", "Vk", "_a", "Xk", "Yk", "Zk", "$k", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "il", "jl", "kl", "ja", "ml", "nl", "ol", "pl", "ql", "rl", "sl", "Da", "Fa", "Ia", "Aa", "checkDCE", "Ba", "Ha", "$a", "Ga", "Ja", "ai", "Si", "Ni", "_i", "Pi", "Qi", "Xi", "eu", "nu", "init_ssg_sandbox_shims", "require_hsluv", "__commonJS", "exports", "Hsluv2", "c", "Y", "L", "chan", "digit2", "digit1", "hex", "offset", "slope", "intercept", "angle", "d", "f1", "f2", "f3", "f4", "f5", "f6", "lr", "lg", "lb", "divider", "varU", "varV", "hrad", "l", "sub1", "sub2", "s1r", "s2r", "s3r", "s1g", "s2g", "s3g", "s1b", "s2b", "s3b", "r0", "r1", "g0", "g1", "b0", "b1", "h", "hueRad", "max", "require_eventemitter3", "module", "has", "prefix2", "Events", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "clearEvent", "EventEmitter2", "names", "events", "name", "handlers", "i", "ee", "listeners", "a1", "a2", "a3", "a4", "a5", "len", "args", "length", "j", "require_browser", "process5", "cachedSetTimeout", "cachedClearTimeout", "defaultSetTimout", "defaultClearTimeout", "runTimeout", "fun", "runClearTimeout", "marker", "queue", "draining", "currentQueue", "queueIndex", "cleanUpNextTick", "drainQueue", "timeout", "Item", "array", "noop4", "dir", "require_resize_observer_umd", "global", "factory", "exports2", "resizeObservers", "hasActiveObservations", "ro", "hasSkippedObservations", "msg", "deliverResizeLoopError", "ResizeObserverBoxOptions", "ResizeObserverBoxOptions2", "freeze", "obj", "ResizeObserverSize", "ResizeObserverSize2", "inlineSize", "blockSize", "DOMRectReadOnly", "DOMRectReadOnly2", "x", "y", "width", "height", "_a", "top", "right", "bottom", "left", "rectangle", "isSVG", "target", "isHidden", "_b", "offsetWidth", "offsetHeight", "isElement", "scope", "isReplacedElement", "cache2", "scrollRegexp", "verticalRegexp", "IE", "parseDimension", "pixel", "size", "switchSizes", "zeroBoxes", "calculateBoxSizes", "forceRecalculation", "cs", "svg", "removePadding", "canScrollVertically", "canScrollHorizontally", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "borderTop", "borderRight", "borderBottom", "borderLeft", "horizontalPadding", "verticalPadding", "horizontalBorderArea", "verticalBorderArea", "horizontalScrollbarThickness", "verticalScrollbarThickness", "widthReduction", "heightReduction", "contentWidth", "contentHeight", "borderBoxWidth", "borderBoxHeight", "boxes", "calculateBoxSize", "observedBox", "borderBoxSize", "contentBoxSize", "devicePixelContentBoxSize", "ResizeObserverEntry", "ResizeObserverEntry2", "calculateDepthForNode", "node", "depth", "parent", "broadcastActiveObservations", "shallowestDepth", "callbacks2", "entries", "ot", "entry", "targetDepth", "_i", "callbacks_1", "callback", "gatherActiveObservationsAtDepth", "trigger", "callbacks", "notify", "cb", "queueMicroTask", "toggle_1", "el_1", "config", "queueResizeObserver", "watching", "isWatching", "CATCH_PERIOD", "observerConfig", "time", "scheduled", "Scheduler", "Scheduler2", "_this", "until", "elementsHaveResized", "scheduler2", "updateCount", "n", "skipNotifyOnElement", "ResizeObservation", "ResizeObservation2", "size2", "ResizeObserverDetail", "ResizeObserverDetail2", "resizeObserver", "observerMap", "getObservationIndex", "observationTargets", "ResizeObserverController", "ResizeObserverController2", "detail", "options", "firstObservation", "index", "lastObservation", "ResizeObserver", "ResizeObserver2", "require_react_is_production_min", "b", "e", "f", "g", "k", "m2", "p", "q", "r", "t", "v", "w", "z", "a", "u", "A", "require_react_is", "require_hoist_non_react_statics_cjs", "reactIs", "REACT_STATICS", "KNOWN_STATICS", "FORWARD_REF_STATICS", "MEMO_STATICS", "TYPE_STATICS", "getStatics", "component", "defineProperty", "getOwnPropertyNames", "getOwnPropertySymbols", "getOwnPropertyDescriptor", "getPrototypeOf", "objectPrototype", "hoistNonReactStatics", "targetComponent", "sourceComponent", "blacklist", "inheritedComponent", "keys3", "targetStatics", "sourceStatics", "key7", "descriptor", "require_fontfaceobserver_standalone", "B", "C", "D", "E", "F", "G", "J", "K", "H", "b2", "M", "b3", "c2", "N", "I", "preloadKey", "isLazyComponentType", "componentType", "lazy", "LazyComponent", "factoryPromise", "LoadedComponent", "Component18", "props", "ref", "getRouteElementId", "route", "hash2", "yieldToMain", "resolve", "yieldBefore", "interactionResponse", "useAfterPaintEffect", "effectFn", "deps", "opts", "useEffectFn", "fe", "runAfterPaint", "runPromise", "cleanup", "EMPTY_ARRAY", "requestIdleCallback", "objectKeys", "hasProp", "o", "prop", "equalsKey", "withEquals", "valueEqual", "arrayShallowEqual", "arrayDeepEqual", "equal", "mapShallowEqual", "aValue", "mapDeepEqual", "setEqual", "objectShallowEqual", "objectDeepEqual", "deep", "typeA", "aIsArray", "bIsArray", "aIsMap", "bIsMap", "aIsSet", "bIsSet", "dateA", "dateB", "regexpA", "regexpB", "isEqual", "error", "useGetRouteCallback", "routes", "routeId", "RouterContext", "RouterAPIProvider", "api", "children", "useRouter", "RoutesProvider", "getRoute", "CurrentRouteContext", "useCurrentRoute", "router", "override", "re", "id", "useCurrentRouteKey", "currentRoute", "useOnRouteChange", "cb", "currentRoute", "useCurrentRoute", "lastRoute", "setLastRoute", "e", "isEqual", "useRoute", "routeId", "_a", "routerAPI", "useRouter", "useRouteElementId", "id", "targetRouteId", "route", "getRouteElementId", "useCurrentPathVariables", "isFunction", "value", "isBoolean", "isString", "isNumber", "isArray", "isObject", "isUndefined", "isNull", "isNullish", "isValidDate", "isGenerator", "noop", "isBot", "shouldPreloadBasedOnUA", "useRoutePreloader", "routeIds", "enabled", "getRoute", "ue", "preloadRoute", "component", "isLazyComponentType", "yieldToMain", "mockWindow", "query", "_url", "_target", "_features", "safeWindow", "timezone", "visitorLocale", "setTimezoneAndLocaleForTracking", "resolvedDateTimeOptions", "requestIdleCallback", "sendTrackingEvent", "eventType", "eventData", "computeRelativePath", "from", "to", "fromDir", "getDirAndFile", "toDir", "toFile", "relativePath", "relative", "path", "index", "CHAR_DOT", "CHAR_FORWARD_SLASH", "StringPrototypeCharCodeAt", "str", "StringPrototypeLastIndexOf", "searchString", "StringPrototypeSlice", "start", "end", "normalizeString", "fromStart", "fromEnd", "fromLen", "toStart", "toLen", "length", "lastCommonSep", "i", "fromCode", "out", "allowAboveRoot", "separator", "isPathSeparator", "code", "res", "lastSegmentLength", "lastSlash", "dots", "lastSlashIndex", "customNotFoundPagePaths", "pathVariablesRegExpRaw", "pathVariablesRegExp", "fillPathVariables", "variables", "match", "name", "value", "forwardCurrentQueryParams", "href", "queryParamsString", "forwardQueryParams", "startOfHash", "hrefWithoutHash", "hash2", "startOfSearch", "currentSearchParams", "newSearchString", "newSearchParams", "key7", "replacePathVariables", "currentLocale", "nextLocale", "defaultLocale", "collectionId", "pathVariables", "collectionUtils", "_a", "resultPath", "isMissingInLocale", "resultPathVariables", "matches", "replacements", "_a2", "pathVariableWithDelimiter", "pathVariableValue", "currentSlug", "isString", "utils", "recordId", "nextSlug", "defaultLocaleSlug", "lastIndex", "replacedPath", "hasMatch", "replacement", "getLocalizedNavigationPath", "route", "preserveQueryParams", "result", "getSitePrefix", "siteCanonicalURL", "url", "defaultSitePageEffects", "PageEffectsContext", "e", "PageEffectsProvider", "children", "p", "usePageEffects", "getPageEffectForRoute", "currentRouteId", "nextRouteId", "global", "routes", "step", "maxDuration", "createLinearEasing", "generator", "time", "state", "keyframes2", "cssVariable", "parseUnit", "calcMaskPosition", "mask", "innerWidth", "innerHeight", "x", "xUnit", "y", "yUnit", "conic", "progress2", "page", "percentage", "offsetToken", "isTransparentToBlack", "firstColor", "secondColor", "gradient", "circle", "inset", "bottom", "right", "blinds", "unit", "width", "widthToken", "wipe", "_mask", "offset", "maskGenerators", "restState", "valuesToCSSKeyframes", "values", "maskGenerator", "getMaskGenerator", "type", "createPageTransitionRules", "transition", "settings", "isSpringTransition", "easing", "duration", "spring", "getSpringOptions", "startKeyframes", "endKeyframes", "VIEW_TRANSITION_STYLES_ID", "defaultPageTransition", "createViewTransitionStylesheet", "exit", "enter", "styleElement", "styleContent", "removeViewTransitionStylesheet", "frame", "element", "noop2", "supportsViewTransitions", "addVTStylesheetAfterInRender", "effect", "resolve", "startViewTransition", "updateView", "signal", "useViewTransition", "sitePageEffects", "resolveHasPainted", "pe", "ue", "te", "update", "yieldBeforeFreezePeriod", "pageEffect", "hasPainted", "asyncUpdate", "yieldBeforeViewTransition", "interactionResponse", "noop", "useMonitorNextPaintAfterRender", "label", "startLabel", "endLabel", "useAfterPaintEffect", "pushRouteState", "routeId", "currentRoutePath", "currentPathVariables", "localeId", "enableAsyncURLUpdate", "isNavigationTransition", "newPath", "getPathForRoute", "pushHistoryState", "updateCanonicalURL", "prevUrl", "canonical", "newURL", "isHistoryState", "data2", "routeIdKey", "isObject", "replaceHistoryState", "ignoreReplaceStateWrapper", "maybeHasPopstateBug", "isImpactedPopstateBugChromiumVersion", "userAgent", "chromePos", "chromiumVersion", "awaitPaintBeforeUpdate", "popstateCalled", "popstateListener", "msg", "useReplaceInitialState", "disabled", "initialPathVariables", "initialLocaleId", "fe", "usePopStateHandler", "setCurrentRouteId", "startViewTransition2", "monitorNextPaintAfterRender", "viewTransitionReady", "popStateHandler", "_b", "_c", "_d", "_e", "_f", "changeRoute", "traversalHandler", "event", "reject", "getHashForRoute", "hashVariables", "resolvedHash", "getRouteElementId", "m2", "p1", "relative2", "onlyHash", "currentPath", "isSamePageHashNavigation", "sitePrefix", "handleRedirectForMissingSlugs", "nextLocaleWithDefaultSlugPath", "switchLocale", "options", "useNativeLoadingSpinner", "navigationPromise", "pe", "navigationController", "navigateListener", "te", "navigateEvent", "controller", "promise", "updateURL", "noop", "noopAsync", "defaultLocaleInfo", "LocaleInfoContext", "e", "useLocaleInfo", "eventsToStop", "stopFn", "event", "_a", "_b", "shouldTurnOnEventHandling", "turnOffReactEventHandling", "options", "TurnOnReactEventHandling", "ue", "hydrationRunning", "setInitialHydrationState", "setHydrationDone", "useIsHydrationOrSSR", "isHydrationOrSSR", "pe", "measureSafe", "name", "start", "end", "e", "shouldMark", "markHydrationStart", "routerHydrationInsertionEffectStartHasRun", "routerHydrationLayoutEffectStartHasRun", "routerHydrationEffectStartHasRun", "useMarkRouterEffects", "hydrationMarkPrefix", "ie", "fe", "hydrationInsertionEffectStartHasRun", "hydrationLayoutEffectStartHasRun", "hydrationEffectStartHasRun", "wasInBackground", "useMarkSuspenseEffectsStart", "hydrationLayoutEffectsEnd", "hydrationEffectsEnd", "hydrationBrowserRenderStart", "hydrationRenderEnd", "hydrationEffectsStart", "hydrationInsertionEffectHasRun", "hydrationLayoutEffectHasRun", "hydrationEffectHasRun", "useMarkSuspenseEffectEnd", "hydrationStart", "hydrationInsertionEffectsEnd", "hydrationFP", "hydrationAnimationFrameEnd", "yieldBefore", "MarkSuspenseEffectsStart", "MarkSuspenseEffectsEnd", "MarkSuspenseEffects", "renderPage", "Page4", "defaultPageStyle", "props", "NotFoundError", "NotFoundErrorBoundaryCaughtError", "__publicField", "NotFoundErrorBoundary", "I", "error", "nextProps", "prevState", "newState", "notFoundPage", "memoPathRoutes", "memoPaths", "lastRoutes", "getRouteInfoMemo", "routes", "routeId", "path", "pathDepth", "depth1", "depth2", "inferInitialRouteFromPath", "decodedLocationPath", "fallback", "locales", "pathRoutes", "paths", "activeLocale", "localeId", "locationPath", "firstPathSegment", "slug", "defaultLocale", "exactMatch", "match", "matchPath", "rootPath", "firstRoute", "pathWithTrimmedSlashes", "routePath", "pathVariablesKeys", "routePathRegExpString", "escapeStringRegExp", "pathVariablesRegExp", "_", "routePathRegExp", "matches", "pathVariables", "pathVariablesValues", "i", "key7", "value", "existingValue", "string", "warningMessages", "warnOnce", "keyMessage", "rest", "deprecationWarning", "removedItem", "removalVersion", "replacement", "replacementText", "warningText", "Observers", "observer", "isCalled", "change", "transaction", "accumulatedChange", "finishObservers", "Animatable", "Animatable2", "isAnimatable", "AnimatableValue", "update", "transactionId", "updatedValues", "animatable", "finish", "defaultValue", "object", "result", "onUpdateKey", "finishTransactionKey", "animatableInterpolation", "currentInterpolation", "from", "to", "fromValue", "toValue", "progress2", "v", "oldValue", "handler", "roundedNumber", "decimals", "multiplier", "roundWithOffset", "value", "offset", "Point", "x", "y", "Point2", "points", "args", "previousValue", "currentValue", "a", "b", "point", "deltaX", "deltaY", "lastValue", "diff", "maxDiff", "nTimes", "center", "centroid", "sumX", "sumY", "centroidX", "centroidY", "sortClockwise", "centerPoint", "angles", "i", "BezierDefaults", "controlPointsForCurve", "curve", "BezierAnimator", "options", "interpolation", "__publicField", "delta", "duration", "controlPoints", "p1x", "p1y", "p2x", "p2y", "UnitBezier", "point1", "point2", "epsilon2", "t", "t0", "t1", "t2", "x2", "d2", "Integrator", "accelerationFunction", "state", "dt", "c", "d", "dxdt", "dvdt", "initialState2", "dv", "derivative", "isInterpolatable", "value", "Interpolation", "from", "to", "NumberInterpolation", "a1", "b1", "progress2", "epsilon", "minDuration", "maxDuration2", "minDamping", "maxDamping", "approximateRoot", "func", "derivative", "initialGuess", "times", "result", "i", "end", "asc", "angularFrequency", "undampedFrequency", "dampingRatio", "SpringCurveValueConverter", "tension", "friction", "mass", "velocity", "duration", "b", "d", "envelope", "envelopeUndampedFrequency", "exponentialDecay", "currentDisplacement", "a", "c", "derivativeUndampedFrequency", "e", "f", "g", "SpringTensionFrictionDefaults", "SpringDampingDurationDefaults", "isDampingDurationSpringOptions", "options", "SpringAnimator", "interpolation", "__publicField", "_opt", "toPass", "Integrator", "state", "delta", "positionNearZero", "velocityNearZero", "cssNames", "modulate", "value", "rangeA", "rangeB", "limit", "fromLow", "fromHigh", "toLow", "toHigh", "fromDelta", "toDelta", "result", "isNumeric", "percentToFraction", "val", "digits", "numberFromString", "input", "match", "Hsluv", "require_hsluv", "hsluvConverter", "rgbToHsluv", "r", "g", "b", "rgbaFromHusl", "h", "s", "l", "a", "hsvToStr", "v", "_h", "_s", "_v", "rgbToRgb", "isNumeric", "bound01", "rgbToHex", "allow3Char", "hex", "pad2", "rgbToHsl", "_r", "_g", "_b", "max", "min", "d", "hue2rgb", "p", "q", "t", "hslToRgb", "rgbToHsv", "hsvToRgb", "i", "f", "mod", "n", "_max", "_n", "isOnePointZero", "processPercent", "isPercentage", "char", "matchers", "cssInteger", "cssUnit", "permissiveMatch3", "permissiveMatch4", "stringToObject", "inputColor", "trimLeft", "color2", "namedColor", "cssNames", "match", "percentToFraction", "parseIntFromHex", "convertHexToDecimal", "cache", "Color", "Color2", "c", "createColor", "created", "colorData", "getCompleteColorStrategy", "newColor", "ColorMixModel", "colorModel", "initialValue", "colorString", "hsl", "hsv", "key7", "amount", "rgb", "angle", "alphaValue", "colorA", "colorB", "model", "progress2", "from", "toColor", "fromColor", "mixer", "fraction2", "limit", "result", "modulate", "hslA", "hslB", "fromH", "toH", "deltaH", "tween", "gen", "name", "value", "deltaR", "deltaG", "deltaB", "deltaR2", "deltaG2", "deltaB2", "tolerance", "channelToDecimal", "interpolate", "convertChannelToLinearRgb", "channel", "abs", "l1", "l2", "colorOrR", "completeColor", "getCompleteColorFromRGB", "getCompleteColorFromString", "getCompleteColorFromHSL", "getCompleteColorFromHSV", "correctAlpha", "numberFromString", "ColorInterpolation", "type", "to", "Interpolation", "NoInterpolation", "ObjectInterpolation", "valueInterpolation", "interpolations", "keys3", "sum", "difference", "DefaultInterpolationOptions", "ValueInterpolation", "options", "__publicField", "NumberInterpolation", "constructor", "isInterpolatable", "interpolation", "isMotionValue2", "v", "MotionValue", "Defaults2", "PrecalculatedAnimator", "options", "__publicField", "delta", "value", "time", "index", "end", "EventEmitter3", "require_eventemitter3", "EventEmitter", "listeners", "eventName", "fn", "once", "unique", "context", "name", "handler", "count", "args", "_raf", "f", "__raf", "safeWindow", "raf", "LoopTimeStep", "Loop", "start", "task", "_a", "postEventTasks", "length", "i", "MainLoop", "RenderEnvironment", "RenderTarget", "RenderEnvironment", "target", "AnimationDriver", "animator", "updateCallback", "finishedCallback", "__publicField", "frame2", "elapsed", "value", "MainLoopAnimationDriver", "MainLoop", "DefaultDeprecatedAnimationOptions", "FramerAnimation", "from", "to", "animatorClass", "options", "driverClass", "deprecatedAnimationOptions", "animatorOptions", "interpolation", "ValueInterpolation", "BezierAnimator", "PrecalculatedAnimator", "isFinished", "isAnimatable", "isMotionValue2", "targetObject", "Animatable", "update", "key7", "targetValue", "oldValue", "resolve", "reject", "reason", "correctBorderScale", "axis", "latest", "delta", "treeScale", "corrected", "addScaleCorrector", "deprecatedAnimate", "from", "to", "animator", "options", "deprecationWarning", "target", "fromValue", "isAnimatable", "isMotionValue2", "Animatable", "animation", "FramerAnimation", "animate2", "animate3", "animatorOrTransition", "animate", "SpringAnimator", "BezierAnimator", "assert", "condition", "msg", "_a", "_b", "e", "lines", "assertNever", "x", "error", "LayoutIdContext", "args", "LayoutIdProvider", "children", "re", "p", "l", "cache2", "pe", "screen", "usedIds", "getLayoutId", "te", "id", "name", "duplicatedFrom", "cacheKey", "previousId", "nodeIdentifier", "possibleMatch", "index", "duplicatedId", "match", "byLastIdMatch", "matchedLayoutId", "shouldUseNamedLastIdMatch", "previousLayoutId", "shouldUseNamedMatch", "last", "possible", "rootDuplicatedId", "identifier", "value", "layoutId", "nextValue", "nextLayoutId", "lastId", "possibleId", "persistLayoutIdCache", "contextValue", "initialValue", "AutomaticLayoutIds", "enabled", "props", "context", "se", "useConstant", "init", "ref", "baseStyle", "errorStyle", "textStyle", "titleStyle", "messageStyle", "ErrorPlaceholder", "file", "title", "stripSlash", "message", "u", "getScaleData", "deviceOptions", "containerSize", "componentWidth", "componentHeight", "getComponentSize", "scaleX", "scaleY", "scale", "screenScalePixelFix", "actualScreenWidth", "screenScaleX", "actualScreenHeight", "screenScaleY", "getColorsFromTheme", "theme", "type", "isDarkTheme", "ErrorBoundary", "I", "__publicField", "info", "stack", "line", "currentIndex", "_", "prevState", "Device", "canResize", "ResizeObserver", "safeWindow", "optionsRef", "deviceAppearance", "scaleDataRef", "containerRef", "deviceRef", "screenRef", "updateImperativeScale", "invertScale", "point", "updateScale", "scaleTo", "onScaleChange", "scaleData", "observer", "containerStyle", "handStyle", "deviceStyle", "deviceImageStyle", "screenStyle", "getDeviceStyle", "resizeStyles", "screenBackground", "MotionConfig", "DEVICE_PADDING", "HAND_IMG_WIDTH", "HAND_IMG_HEIGHT", "HAND_IMG_GAP_WIDTH", "HAND_IMG_GAP_LEFT", "HAND_IMG_GAP_BOTTOM", "noDeviceSize", "deviceWidth", "deviceHeight", "noPadding", "padding", "overrideTheme", "noDeviceStyle", "overriddenColors", "appearance", "screenWidth", "screenHeight", "screenMaxHeight", "screenOffsetTop", "screenOffsetLeft", "screenRadius", "screenMaskImage", "screenColor", "shadow", "background", "hand", "boxShadows", "bezelStyle", "handOffsetLeft", "handOffsetRight", "handOffsetBottom", "handScale", "isFiniteNumber", "isEmpty", "obj", "isReactElement", "test", "isReactChild", "degreesToRadians", "degrees", "Line", "Line2", "a", "b", "line", "offset", "angle", "Point", "rad", "x", "y", "lineA", "lineB", "segments", "x1", "y1", "x2", "y2", "x3", "y3", "x4", "y4", "a1", "b1", "c1", "alpha", "beta", "deltaAX", "deltaAY", "deltaBX", "deltaBY", "pointOnLine", "deltaX", "deltaY", "pointB", "point", "perp", "distance2", "hypotenuse", "r", "Rect", "rect", "other", "size", "n", "delta", "xOffset", "yOffset", "value", "doubleValue", "rectMaxX", "rectMaxY", "width", "height", "decimals", "roundedNumber", "ps", "minX", "maxX", "minY", "maxY", "i", "tl", "tr", "_", "bl", "min", "max", "rect1", "rect2", "matrix", "rectA", "rectB", "aMax", "bMax", "rects", "comparingRect", "rectMinX", "rectMinY", "rectMidX", "rectMidY", "defaults", "pointA", "minSize", "minWidth", "minHeight", "diffX", "diffY", "br", "anchorRect", "direction", "alignment", "rebasedRect", "assertNever", "ConstraintMask", "constraints", "isFiniteNumber", "valueToDimensionType", "value", "trimmedValue", "ConstraintValues", "props", "left", "right", "top", "bottom", "width", "height", "centerX", "centerY", "aspectRatio", "autoSize", "isAnimatable", "widthValue", "heightValue", "widthType", "heightType", "parsedWidth", "Animatable", "parsedHeight", "centerAnchorX", "centerAnchorY", "values", "parentSizeInfo", "freeSpace", "parentWidth", "parentHeight", "hOpposingPinsOffset", "pinnedOffset", "assertNever", "vOpposingPinsOffset", "sizeAfterApplyingConstraintsAndAspectRatio", "pixelAlign", "x", "y", "parentSizeForPositioning", "positioningParentWidth", "positioningParentHeight", "f", "Rect", "defaultWidth", "defaultHeight", "getConstraintValue", "constraint", "parentSize", "viewport", "constraintValueForUncalculatedViewport", "constrainHeight", "constrainWidth", "w", "h", "start", "end", "containsInvalidStringValues", "constraintsEnabled", "sizeFromFiniteNumberProps", "size", "rectFromFiniteNumberProps", "calculateRect", "parentSizeDisabled", "constraintValues", "getConstraintValues", "enabledParentSize", "deprecatedParentSize", "center", "_constraints", "constraintMask", "ConstraintsContext", "e", "deprecatedParentSize", "parentSize", "useParentSize", "isSize", "o", "ProvideParentSize", "props", "currentParentSize", "children", "value", "getParentWidth", "getParentHeight", "p", "l", "useProvideParentSize", "node", "useConstraints", "calculateRect", "isAutoSized", "width", "height", "ControlType", "ControlType2", "isFlexboxGapSupportedCached", "isFlexboxGapSupported", "flex", "isSupported", "flexboxGapNotSupportedClass", "initialized", "installFlexboxGapWorkaroundIfNeeded", "richTextStylesRule", "richTextParagraphSpacingStylesRule", "richTextBackgroundMaskStylesRule", "richTextLinkStylesRule", "richTextLinkHoverStylesRule", "richTextLinkCurrentStylesRule", "richTextLinkCurrentHoverStylesRule", "richTextBoldStylesRule", "richTextItalicStylesRule", "richTextImageRule", "richTextBlockElementResetRule", "richTextStylesPresetResetRule", "richTextStylesList", "richTextStylesListItem", "richTextStylesNumberedListMarker", "richTextStylesBulletedListMarker", "deprecatedRichTextCSSRules", "richTextCSSRules", "defaultCache", "defaultSheet", "injectCSSRule", "cssRule", "sheet", "cache2", "styleElement", "componentCSSRules", "textAlignmentRule", "textBlockSpanRule", "textInlineSpanRule", "renderTextStylesRule", "textStylesRule", "linkStylesRule", "linkHoverStylesRule", "linkCurrentStylesRule", "textCSSRules", "stackPositionRule", "nativeStackGapRules", "stackGapRule", "stackDirectionRuleVertical", "stackDirectionRuleHorizontal", "stackCSSRules", "navigationCSSRules", "scrollCSSRules", "nativeScrollCSSRules", "deviceComponentCSSRules", "pageContentWrapperWrapperCSSRules", "presenceCSS", "cursorCSS", "frameCSS", "resetCSS", "hideScrollbars", "willChangeOverrideCSSVariable", "willChangeEffectOverrideCSSVariable", "anySafariVersion", "safari16OrGreater", "willChangeTransformRules", "isPreview", "frameCSSRules", "svgCSSRules", "combineCSSRules", "combinedCSSRules", "combinedCSSRulesForPreview", "didInject", "injectComponentCSSRules", "styles4", "RenderTarget", "rule", "isReactComponent", "component", "isObject", "isFunction", "optionalKey", "controlIsOptional", "control", "getControlDefaultValue", "control", "isString", "isBoolean", "isUndefined", "isNumber", "isObject", "value", "applyControlDefaultsToDefaultProps", "isArray", "defaultProps", "controls", "controlKey", "currentDefault", "controlIsOptional", "defaultValue", "getDefaultProps", "component", "applyControlDefaultsToReactDefaultProps", "isReactComponent", "addPropertyControls", "propertyControls", "getPropertyControls", "defaultPresetId", "presetsBase", "devicePresets", "deviceCodeComponentPresetIds", "devicePresetsMap", "map2", "preset", "getDevicePreset", "presetId", "defaultDeviceProps", "convertPropsToDeviceOptions", "props", "forceOldClay", "_a", "colors", "getColorsFromTheme", "shadowColor", "shadow", "rotate", "deviceWidth", "deviceHeight", "screenOffsetTop", "screenOffsetLeft", "colorId", "appearance", "colorIdForTheme", "screenWidth", "screenHeight", "screenOffsetRight", "handOffset", "makeScreenMaskImage", "supportsHand", "mask", "width", "height", "transform2", "lightColors", "darkColors", "theme", "availableColors", "color2", "skin", "orientation", "applyMetaTag", "name", "tag", "k", "v", "usePrototypingMetaTags", "e", "DeviceCodeComponentInner", "children", "deviceOptions", "injectComponentCSSRules", "p", "ProvideParentSize", "child", "resizedChild", "Device", "DeviceCodeComponent", "defaultWidth2", "defaultHeight2", "getComponentSize", "deviceCodeComponentPresets", "supportsOrientation", "supportsRealisticSkin", "supportsThemes", "realisticImage", "isStaticRenderer", "currentTarget", "RenderTarget", "useIsStaticRenderer", "isStatic", "ye", "asRecord", "object", "memoize", "fn", "cache2", "arg", "reactPropsRegex", "isPropValid", "prop", "mockWithWarning", "message", "warnOnce", "mockWithoutWarning", "implementation", "image", "rect", "nodeId", "element", "runtime", "isRuntimeInjected", "runtimeProxy", "target", "key7", "reciever", "wrapperStyle", "placeholderStyle", "cssObjectFit", "imageFit", "cssObjectPosition", "positionX", "positionY", "x", "y", "getImageStyle", "image", "StaticImage", "containerSize", "nodeId", "alt", "draggable", "syncDecoding", "source", "runtime", "imageStyle", "imageRef", "e", "p", "CanvasImage", "wrapperRef", "imageElement", "wrapper", "OptimizedCanvasImage", "BackgroundImageComponent", "layoutId", "props", "fallbackWrapperStyles", "imageNode", "isString", "backgroundSize", "isNumber", "tileSize", "imageSource", "RenderTarget", "motion", "collectBorderStyleForProps", "style", "collapseEqualBorders", "borderWidth", "borderStyle", "borderColor", "borderTop", "borderBottom", "borderLeft", "borderRight", "Border", "key", "BackgroundImage", "applyForwardOverrides", "background", "_forwardedOverrideId", "_forwardedOverrides", "id", "forwardedOverrideId", "src", "backgroundImageFromProps", "backgroundImage", "Animatable", "htmlElementAsMotionComponent", "asElem", "import_process", "__toESM", "require_browser", "safeNavigator", "isBrowser2", "safariVersion", "version2", "result", "safeNavigator", "isChrome", "isEdge", "isSafari", "isFirefox", "isFramerX", "isAndroid", "isIOS", "isMacOS", "isWindows", "isTouch", "safeWindow", "isTest", "import_process", "deviceOS", "isMacOS", "isIOS", "isAndroid", "isWindows", "deviceFont", "os", "fonts", "isChrome2", "isChrome", "collectLayoutHintDataProps", "props", "center", "layoutHintDataPropsForCenter", "RenderTarget", "nodeIdFromString", "str", "processOverrideForwarding", "props", "children", "_forwardedOverrides", "e", "child", "transformTemplate", "center", "_", "generated", "useLayoutId", "specificLayoutId", "postfix", "name", "layoutIdKey", "duplicatedFrom", "__fromCodeComponentNode", "drag", "getLayoutId", "enabled", "re", "LayoutIdContext", "se", "existingLayoutId", "layoutIdCandidate", "useIsomorphicLayoutEffect2", "fe", "ue", "ComponentContainerContext", "useForceUpdate2", "setForcedRenderCount", "v", "ResizeObserverPolyfill", "require_resize_observer_umd", "SharedObserver", "__publicField", "ResizeObserver", "safeWindow", "ResizeObserverPolyfill", "entries", "entry", "callbackForElement", "element", "callback", "sharedResizeObserver", "isBrowser2", "useRerenderOnResize", "ref", "update", "useForceUpdate2", "ue", "SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE", "getMeasurableCodeComponentChildren", "element", "SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE", "isMeasurable", "unwrapInlinedDisplayContents", "firstMeasurableChild", "useMeasureLayout", "props", "ref", "getChildren", "options", "id", "visible", "_needsMeasure", "skipHook", "inCodeComponent", "re", "ComponentContainerContext", "onCanvas", "RenderTarget", "useIsomorphicLayoutEffect2", "runtime", "nodeIdFromString", "measureClosestComponentContainer", "container", "smallValue", "translateZ", "useTranslateZHack", "isFramerX", "isSafari", "isTest", "forceLayerBackingWithMotionStyle", "motionStyle", "forceLayerBackingWithCSSProperties", "cssProperties", "setTranslateZHack", "style", "enabled", "transform2", "isString", "resetSetStyle", "key7", "toValue", "microtask", "asRecord", "value", "reset", "Layer", "Layer2", "I", "__publicField", "usingMotionStyle", "nextProps", "nextState", "isEqual", "prevProps", "manageCache", "cache2", "maxEntries", "i", "memoize2", "create", "r", "g", "hash", "hasher", "chr", "ConvertColor", "color2", "angle", "Color", "alpha", "obj", "stringToObject", "hsv", "hsvToStr", "h", "a", "b", "input", "CSSVariableRegExp", "colorCache", "cachedMultiplyAlpha", "s", "gradientColorStops", "gradient", "stops", "stop", "gradientColorStopsHash", "result", "multiStopGradientKeys", "isMultiStopGradient", "simpleGradientKeys", "isSimpleGradient", "linearGradientKeys", "LinearGradient", "linearGradient", "overrideAngle", "cssStops", "radialGradientKeys", "RadialGradient", "radialGradient", "widthFactor", "heightFactor", "centerAnchorX", "centerAnchorY", "index", "nextStop", "position", "collectBackgroundFromProps", "background", "backgroundColor", "isMotionValue2", "Animatable", "extractStyleFromProps", "name", "styleRef", "into", "hasLeftAndRight", "hasTopAndBottom", "getStyleForFrameProps", "hasEvents", "pointerEvents", "pointerEventsSet", "event", "getCursorFromEvents", "overflowKey", "hasScrollableContent", "hasScrollingOverflow", "unwrapFrameProps", "frameProps", "left", "top", "bottom", "right", "width", "height", "center", "_constraints", "size", "widthType", "heightType", "positionFixed", "positionAbsolute", "minWidth", "resolveMotionValue", "minHeight", "maxWidth", "maxHeight", "defaultFrameRect", "useStyleAndRect", "e", "injectComponentCSSRules", "_initialStyle", "__fromCanvasComponent", "unwrappedProps", "constraintsRect", "useConstraints", "defaultStyle", "shouldDisablePointerEvents", "safeToEditPointerEvents", "centerTextStyle", "child", "propsStyle", "constraintsStyle", "constraintsEnabled", "isAutoSized", "resultStyle", "isRenderingStaticContent", "isStaticRenderer", "filteredProps", "getMotionProps", "motionProps", "isValidMotionProp", "isPropValid", "hasDataFramerName", "VisibleFrame", "Y", "forwardedRef", "border", "_border", "__portal", "propsWithOverrides", "children", "processOverrideForwarding", "layoutId", "useLayoutId", "cursor", "fallbackRef", "pe", "dataProps", "currentStyle", "rect", "autoSized", "transformTemplate", "layoutHintDataPropsForCenter", "backgroundImage", "backgroundImageFromProps", "parentSize", "resolveParentSize", "wrappedContent", "useProvideParentSize", "u", "l", "p", "BackgroundImageComponent", "Border", "MotionComponent", "htmlElementAsMotionComponent", "radius", "shadow", "FrameWithMotion", "_usesDOMRect", "EmptyState", "title", "description", "hide", "insideUserCodeComponent", "target", "RenderEnvironment", "childCount", "scaleFactor", "Title", "Description", "TREE_ROOT_ID", "SharedLayoutContext", "SharedLayoutRoot", "tree", "transition", "shouldAnimate", "_a", "needsReset", "projectionNode", "_a2", "_b", "rootStyles", "MagicMotionCrossfadeRoot", "motion", "setRef", "isFunction", "isMutableRef", "isObject", "refHasValue", "useStableRefWithObserver", "callbacks", "useConstant", "cleanups", "refCallback", "needsCleanup", "callback", "cleanup", "fn", "skipCall", "useObserverRef", "createStableRefWithObserver", "useRefEffect", "effect", "deps", "effectRef", "depsChangedRef", "se", "depsChanged", "SharedIntersectionObserver", "entries", "observer", "entry", "callbackForElement", "SharedIntersectionObserverContext", "z", "_useSharedIntersectionObserver", "observers", "root", "rootMargin", "threshold", "useSharedIntersectionObserver", "noop", "thresholds", "_", "ViewportContext", "useAppearEffect", "appearCallback", "internalState", "animateOnce", "isInView", "hasAnimatedOnce", "isIntersecting", "isIntersectingWithThreshold", "calculatedIntersection", "intersectionRect", "boundingClientRect", "safeWindow", "import_hoist_non_react_statics2", "__toESM", "require_hoist_non_react_statics_cjs", "import_hoist_non_react_statics", "__toESM", "require_hoist_non_react_statics_cjs", "clamp2", "value", "a", "b", "min", "max", "hasOwnProperty", "obj", "prop", "$private", "ObservableObject", "ObservableObject2", "initial", "makeAnimatables", "observeAnimatables", "unproxiedState", "Observers", "key7", "state", "value", "asRecord", "sharedProxyHandler", "target", "observer", "ObservableObjectProxyHandler", "__publicField", "receiver", "privateObject", "animatable", "rawValue", "isAnimatable", "Animatable", "transactions", "change", "transaction", "result", "changed", "targetValue", "rawValueIsObject", "keys3", "privateIndex", "key2", "withOpacity", "target", "collectOpacityFromProps", "props", "style", "opacity", "Animatable", "shadowsAsFilter", "shadows", "filters", "dropShadows", "shadowItem", "collectTextShadowsForProps", "props", "style", "textShadow", "shadow", "collectLayerFilters", "props", "style", "filters", "isFiniteNumber", "shadowsAsFilter", "collectBackgroundFilters", "collectFiltersFromProps", "LayoutTree", "I", "__publicField", "child", "TREE_ROOT_ID", "nextProps", "isLead", "isExiting", "isOverlayed", "animatesLayout", "transition", "sharedLayoutContext", "hasBecomeLead", "hasExitBeenCancelled", "shouldPromote", "shouldDemote", "overlayChanged", "projection", "layoutId", "p", "SwitchLayoutGroupContext", "SharedLayoutTree", "props", "e", "SharedLayoutContext", "NavigationContainerContext", "useIsInCurrentNavigationTarget", "re", "newMap", "useMap", "useConstant", "NavigationTargetContext", "z", "NavigationTargetWrapper", "isCurrent", "children", "callbacks", "register", "te", "fn", "deregister", "cleanup", "value", "pe", "ue", "_", "cb", "newCleanup", "isFunction", "useOnCurrentTargetChange", "callback", "deps", "NavigationContainer", "isLayeredContainer", "isPrevious", "visible", "transitionProps", "backdropColor", "onTapBackdrop", "backfaceVisible", "exitBackfaceVisible", "animation", "exitAnimation", "instant", "initialProps", "exitProps", "position", "withMagicMotion", "index", "areMagicMotionLayersPresent", "id", "isInitial", "animate3", "useAnimation", "presence", "PresenceContext", "persistLayoutIdCache", "LayoutIdContext", "previousState", "getOriginProps", "viewportRef", "isBeingRemoved", "wasPrevious", "wasCurrent", "shouldAnimateIn", "shouldAnimateOut", "origins", "wasReset", "allAnimatableProperties", "exitTransition", "layout", "perspective", "contains3Dprops", "identity", "animations2", "isPresent", "isCurrentTarget", "u", "FrameWithMotion", "ViewportContext", "shouldUsePreviousValue", "prevProps", "currentOriginProps", "result", "isFiniteNumber", "containerProps", "_a", "_b", "_c", "toPropsContain3d", "fromPropsContain3d", "NavigatorMock", "warnOnce", "navigatorMock", "NavigationContext", "TransitionDefaults", "pushTransition", "options", "overlayTransition", "flipTransition", "defaultState", "reduceNavigationStateForAction", "state", "action", "addOverlay", "removeOverlay", "add", "remove", "updateComponent", "back", "forward", "currentState", "key7", "component", "currentOverlay", "overlayItemId", "overlayStack", "currentItem", "isCurrentScreen", "nextIndex", "removed", "shouldMoveForward", "isNextTargetForward", "current", "previous", "containerKey", "findLatestHistoryIndex", "containerVisualIndex", "containerIsRemoved", "magicMotionPropsForAdd", "transitionForContainer", "updateTransitions", "containers", "nextState", "nextItem", "history", "target", "assert", "item", "previousTransition", "visualIndex", "magicMotionPropsForRemove", "nextKey", "update", "nextVisualIndex", "validTargets", "nextValidTarget", "targetVisualIndex", "currentVisualIndex", "shouldRemoveLastKey", "containerIndex", "transitions", "screenIndex", "transitionForScreen", "stackState", "sequence", "allAnimatableKeys", "objectKeys", "direction", "from", "property", "transitionTo", "transitionFrom", "asRecord", "NavigationCallbackContext", "e", "IsInitialNavigationContext", "e", "Navigation", "_lastEventTimeStamp", "_a", "_getStackState", "getStackState_fn", "_isSameEventTransition", "isSameEventTransition_fn", "_navigationAction", "_transition", "transition_fn", "I", "props", "_a2", "__privateAdd", "__publicField", "defaultState", "action", "newState", "reduceNavigationStateForAction", "skipLayoutAnimation", "historyItem", "withMagicMotion", "updateState", "__privateMethod", "__privateSet", "__privateGet", "component", "isReactChild", "isReactElement", "transition", "TransitionDefaults", "key7", "_b", "options", "pushTransition", "overlayTransition", "flipTransition", "_c", "_d", "_e", "stackState", "overlayStackState", "activeOverlay", "activeOverlayItem", "isOverlayVisible", "isInitial", "contentContainers", "index", "assert", "visualIndex", "removed", "transitionProps", "isCurrent", "isPrevious", "areMagicMotionLayersPresent", "p", "NavigationContainer", "isInstantContainerTransition", "animationPropsForContainer", "getBackfaceVisibleForScreen", "MagicMotionCrossfadeRoot", "containerContent", "overlayContainers", "item", "stackIndex", "initialPropsForOverlay", "transitionPropsForOverlay", "containerIsVisible", "backdropColorForTransition", "getBackfaceVisibleForOverlay", "backdropTapAction", "FrameWithMotion", "NavigationContext", "u", "transitionPropsForStackWrapper", "animationForStackWrapper", "backfaceVisibleForStackWrapper", "LayoutIdProvider", "SharedLayoutRoot", "AnimatePresence", "current", "previous", "currentOverlay", "previousOverlay", "transitionTraits", "transitionOptions", "NavigationCallbackContext", "animationDefault", "overlayStack", "currentOverlayItem", "previousOverlayItem", "containerIndex", "history", "navigationItem", "screenIndex", "overlayIndex", "containerCurrent", "overCurrentContext", "child", "position", "shouldStretchWidth", "shouldStretchHeight", "canStretchStyle", "isObject", "goBackAction", "NavigationWrapper", "resetProjection", "useResetProjection", "useInstantLayoutTransition", "injectComponentCSSRules", "import_hoist_non_react_statics3", "__toESM", "require_hoist_non_react_statics_cjs", "import_process2", "__toESM", "require_browser", "debounce", "fn", "time", "timeout", "debounced", "args", "safeWindow", "cancel", "useWheelScroll", "ref", "enabled", "initial", "prev", "direction", "constraints", "offsetX", "offsetY", "onScrollStart", "onScroll", "onScrollEnd", "isWheelScrollActive", "pe", "getPointData", "te", "point", "getPoint", "data2", "handler", "clampX2", "v", "clamp2", "clampY2", "updateX2", "delta", "updateY2", "clampX", "clampY", "updateX", "updateY", "debouncedOnScrollEnd", "e", "x", "y", "useDomEvent", "hasPaddingPerSide", "props", "paddingPerSide", "paddingTop", "paddingBottom", "paddingLeft", "paddingRight", "paddingFromProps", "padding", "makePaddingString", "top", "left", "bottom", "right", "triggerStackReflow", "element", "display", "requiresPolyfill", "isSafari", "safariVersion", "useSafariGapFix", "gap", "isInitialRender", "hasTriggeredReflow", "prevGapValue", "Stack", "StackInner", "stackProps", "forwardedRef", "as", "distribution", "alignment", "wrap2", "externalUseFlexboxGap", "children", "styleProp", "className2", "willChangeTransform", "__fromCodeComponentNode", "parentSize", "__contentWrapperStyle", "containerProps", "useFlexboxGap", "stackRef", "onBeforeLayoutMeasure", "flexDirection", "toFlexDirection", "isReverse", "isReverseDirection", "justifyContent", "toJustifyOrAlignment", "style", "Layer", "constraintsEnabled", "unwrapFrameProps", "layoutId", "useLayoutId", "_children", "processOverrideForwarding", "widthType", "heightType", "fractionChildren", "handleFraction", "gapChildren", "wrapInGapElementForLegacyGap", "content", "useProvideParentSize", "attributes", "fromCanvasComponent", "alignItems", "contentWrapperStyle", "gapEnabled", "isGapEnabled", "gapSupportedInMainAxis", "isGapSupportedInMainAxis", "asRecord", "p", "FrameWithMotion", "useForwardedRef", "motion", "addPropertyControls", "isFractionDimension", "dimension", "fraction", "value", "isFiniteNumber", "child", "isReactChild", "isReactElement", "isVertical", "hasFraction", "propsStyle", "size", "width", "height", "newWidth", "newHeight", "nextStyle", "gapStyle", "isVerticalDirection", "innerRef", "pageContentWrapperType", "PageContainer", "effect", "dragEnabled", "contentHeight", "contentWidth", "isLastPage", "contentOffsetRef", "constraintsRef", "directionLock", "onDragStart", "onDrag", "onDragEnd", "isHorizontalDirection", "dragAxis", "hasHorizontalGap", "hasVerticalGap", "hasAutoWidth", "hasAutoHeight", "wrapperWidth", "wrapperHeight", "containerWidth", "containerHeight", "Page", "_a", "currentPage", "animateCurrentPageUpdate", "gapValue", "_padding", "momentum", "_defaultEffect", "background", "overflow", "_effect", "contentOffsetX", "contentOffsetY", "onChangePage", "_onDirectionLock", "_onUpdate", "wheelEnabled", "specificLayoutId", "rest", "hasMountedRef", "hasFixedSize", "RenderTarget", "isHorizontal", "warnOnce", "injectComponentCSSRules", "pageCount", "maxOffsetRef", "fallbackContainerRef", "containerRef", "scrollableRef", "pageEffectValuesRef", "pageRectsRef", "internalX", "useMotionValue", "isMotionValue2", "internalY", "currentContentPageRef", "propsBoundedCurrentPageRef", "latestPropsRef", "lastDirectionRef", "snapToPage", "useSnapToPage", "_", "setForceUpdateCount", "containerSizeRef", "updateOnResize", "applyEffects", "effectDictionary", "index", "values", "effectValues", "key7", "effectValue", "updateMaxOffsetFromPageContents", "containerSize", "newPageContentRects", "getPageContentRects", "newMaxOffset", "getMaxOffset", "measureContainerSize", "offsetWidth", "offsetHeight", "currentSize", "updateAndSnapToPage", "newPage", "mount", "newBoundedCurrentPage", "getBoundedCurrentPage", "updateCurrentPage", "offset", "offsetForPage", "animated", "useIsomorphicLayoutEffect2", "contentOffset", "handleMeasureLifecycle", "newContainerSize", "onDragStartHandler", "event", "info", "onDragHandler", "onDragTransitionEnd", "onDragEndHandler", "startPosition", "axis", "velocity", "nearestPageIndex", "animateValue", "endPosition", "animate", "childComponents", "update", "motionValue", "hasEffect", "u", "EmptyState", "cubeEffect", "normalizedOffset", "coverflowEffect", "calcPileAxisOffset", "length", "pileEffect", "absoluteOffset", "wheelEffect", "originZ", "rotateX", "rotateY", "getDefaultEffect", "type", "pageRects", "allowSkippingPages", "distanceToStart", "rect", "rectPosition", "distanceToEnd", "closestPages", "a", "b", "closestToStart", "pageA", "pageB", "containerElement", "contentWrappers", "node", "childNode", "sizes", "contentWrapper", "maxX", "maxY", "queriedSize", "pageContentRects", "paddingProps", "lastPageRect", "paddingSides", "paddingStart", "paddingEnd", "pageWidth", "freeSpace", "target", "pageIndex", "currentPageRect", "options", "latestDirection", "latestDefaultEffect", "latestEffect", "latestGap", "latestIsHorizontal", "pageRect", "effectFunction", "maxScrollOffset", "newPageIndex", "Page3", "ContentDimension", "pageContentDimensionOptions", "pageContentDimensionTitles", "option", "pageEffectOptions", "pageEffectTitles", "pageAlignmentOptions", "genericAlignmentTitles", "directionMap", "convertScrollDirectionToDrag", "scrollDirection", "useUpdateChildSize", "dragDirection", "children", "fromCanvasComponent", "se", "e", "child", "updatedSize", "update", "numberFromOptionalMotionValue", "value", "EmulatedScroll", "props", "forwardedRef", "direction", "directionLock", "dragEnabled", "dragElastic", "dragMomentum", "dragTransition", "wheelEnabled", "contentOffsetX", "contentOffsetY", "contentWidth", "contentHeight", "onScrollStart", "onScroll", "onScrollEnd", "onDragStart", "onDrag", "onDragEnd", "onUpdate", "onDirectionLock", "style", "scrollAnimate", "resetOffset", "overdragEnabled", "specificLayoutId", "_native", "containerProps", "layoutId", "useLayoutId", "defaultX", "useMotionValue", "defaultY", "x", "isMotionValue2", "y", "measuredConstraints", "pe", "dragControls", "useDragControls", "isInTarget", "useIsInCurrentNavigationTarget", "wasInTargetRef", "ie", "injectComponentCSSRules", "setMeasureDragConstraints", "constraints", "offsetToZero", "initial", "prev", "isPreview", "RenderTarget", "containerFallbackRef", "containerRef", "contentRef", "lastOffsetRef", "shouldResetScroll", "inTarget", "hasEnteredTarget", "measureAndUpdateScrollOffset", "mustReset", "previous", "shouldUpdateOffset", "currentMaxXOffset", "currentMaxYOffset", "hasSizeChanged", "hasScrollOffsetChanged", "currentOffsetX", "currentOffsetY", "nextXOffset", "nextYOffset", "useIsomorphicLayoutEffect2", "getLatestPoint", "resetInitialPoint", "te", "point", "getPointData", "data2", "updateScrollListeners", "scheduleUpdateScrollListeners", "frame", "onMotionDragStart", "event", "info", "onMotionDragTransitionEnd", "useWheelScroll", "overdragX", "overdragY", "setScrollX", "xValue", "element", "overdragXValue", "currentX", "setScrollY", "yValue", "overdragYValue", "currentY", "nativeOnScroll", "xDelta", "yDelta", "isEmpty2", "width", "height", "size", "p", "FrameWithMotion", "u", "EmptyState", "isFiniteNumber", "top", "left", "right", "bottom", "cx", "classNames", "isRunningAnimation", "phases", "runningAny", "cancelledAny", "phase", "didFinishAnimations", "timeConstant", "animatePointWithInertia", "from", "velocity", "onComplete", "onStop", "latest", "animationPhaseX", "animationPhaseY", "animations2", "updateHandler", "completionHandler", "animateValue", "animation", "scrollThreshold", "isTouchDevice", "isTouch", "isSafariBrowser", "isSafari", "getTouchAction", "canPanInDirection", "isInteractiveElement", "tag", "canStartScrollFromElement", "getEventPoint", "setPointerEvents", "getPointerEvents", "_a", "emptyObject", "useEmulateTouchScroll", "ref", "enabled", "scrollAnimationControlsRef", "ue", "targets", "downPoint", "scrollOffsetStart", "mouseMoveEvents", "onMouseMove", "offset", "Point", "deltaX", "deltaY", "target", "safeWindow", "getRecentEvents", "onMouseUp", "originalPointerEventsValue", "calculateVelocity", "shouldAnimateY", "shouldAnimateX", "position", "onMouseWheel", "onMouseDown", "previousPhase", "targetEl", "timeDelta", "events", "maxAge", "zeroPoint", "mouseUpEvent", "oldestMouseMoveEvent", "time", "useUpdateScrollOffset", "side", "cancelEmulatedTouchScrollAnimation", "updateScrollLeft", "NativeScroll", "scrollBarVisible", "_contentWidth", "_contentHeight", "className2", "_directionLock", "_wheelEnabled", "_scrollAnimate", "_dragTransition", "_dragMomentum", "_dragElastic", "_overdragEnabled", "_onScrollStart", "_onScrollEnd", "_onDragStart", "_onDrag", "_onDragEnd", "_onUpdate", "_onDirectionLock", "fallbackRef", "previousIsInTargetRef", "updateScrollOffsetHandler", "previousIsTarget", "Scroll", "ScrollInner", "addPropertyControls", "native", "useNavigation", "re", "NavigationContext", "data", "Data2", "_data", "ObservableObject", "observer", "Data", "initialState", "DataObserverContext", "e", "useObserveData", "context", "DataObserver", "I", "__publicField", "MainLoop", "cancel", "Data", "children", "d", "observer", "p", "import_hoist_non_react_statics4", "__toESM", "require_hoist_non_react_statics_cjs", "prefix", "prefixLength", "extractPrefixedProps", "props", "keys3", "result", "rest", "key7", "strippedKey", "stripPrefixFromPrefixedKey", "GeneratedComponentContext", "e", "cloneChildrenWithProps", "children", "asNode", "cloned", "j", "child", "J", "q", "p", "l", "useCloneChildrenWithPropsAndRef", "forwardedRef", "hook", "useConstant", "createHook", "state", "createRefFunction", "updateIfNeeded", "nextForwardedRef", "ref", "shouldUpdate", "preventNextCall", "cloneChildrenWithPropsAndRef", "ownRef", "newProps", "isFunction", "cloneAsElement", "newRef", "prevForwardedRef", "prevChildRef", "value", "setRef", "StyleSheetContext", "framerPostSSRCSSSelector", "componentsWithServerRenderedStyles", "_a", "isBrowser2", "componentsWithSSRStylesAttr", "framerCSSMarker", "withCSS", "Component18", "escapedCSS", "componentSerializationId", "sheet", "cache2", "id", "RenderTarget", "concatenatedCSS", "u", "ie", "rule", "injectCSSRule", "SSRParentVariantsContext", "SSRVariantClassName", "renderBranchedChildrenFromPropertyOverrides", "overrides", "variantClassNames", "primaryVariantId", "parentVariants", "cloneChildren", "activeVariantId", "childrenArray", "branches", "nonOverriddenVariants", "variantId", "propOverrides", "arePropOverridesEffectivelyDifferent", "effectiveVariants", "intersection", "remainingVariants", "effectiveRemainingVariants", "renderedBranches", "variants", "element", "hiddenClassNames", "generateHiddenClassNames", "assert", "variantHashFromClassName", "className2", "generateHiddenClassNames", "showOnlyInVariantIds", "parentVariants", "variantClassNames", "classNames", "variantId", "variantClassName", "alreadyHiddenInParent", "intersection", "variants", "variant", "arePropOverridesEffectivelyDifferent", "props", "propOverrides", "key7", "isEqual", "propsForBreakpoint", "overrides", "PropertyOverridesWithoutCSS", "e", "breakpoint", "children", "ref", "cloneWithRefs", "useCloneChildrenWithPropsAndRef", "SSRParentVariantsContext", "isHydrationOrSSR", "useIsHydrationOrSSR", "action", "useConstant", "isBrowser2", "generatedComponentContext", "GeneratedComponentContext", "primaryVariantId", "renderBranchedChildrenFromPropertyOverrides", "cloneChildrenWithProps", "assertNever", "PropertyOverrides2", "withCSS", "SSRVariantClassName", "defaultVariantKey", "defaultVariants", "_variantHashes", "AnimationCollector", "__publicField", "__privateAdd", "nodeId", "prop", "value", "variantHash", "assert", "id", "existing", "existingValue", "info", "__privateGet", "_a", "transformTemplate2", "isFunction", "framerAppearTransformTemplateToken", "initial", "animate3", "config", "isObject", "isString", "framerAppearEffects", "withOptimizedAppearEffect", "Component18", "optimized", "framerAppearIdKey", "disabledProps", "getDisabledFXPropsInStaticRenderer", "p", "optimizeAppear", "animateTargetAndTransition", "optimizeAppearTransformTemplate", "fn", "template", "framerAppearAnimationScriptKey", "isStaticRenderer", "isVariantOrVariantList", "effectValuesKeys", "makeFXValues", "defaults", "motionValue", "defaultFXValues", "isFXValuesKey", "effectEnabledStyle", "effectDisabledStyle", "useFXValues", "values", "enabled", "effect", "isUndefined", "loopOptionsKeys", "useDelay", "timeoutRef", "pe", "ue", "d", "resolve", "useLoop", "loopEffectEnabled", "loopRepeatDelay", "loopTransition", "loopRepeatType", "loop", "loopPauseOffscreen", "shouldReduceMotion", "useReducedMotionConfig", "mirrorStateRef", "delay2", "animateValues", "te", "transition", "mirror", "to", "from", "opts", "target", "animate", "isRunning", "setIsRunning", "ye", "shouldRunRef", "animateLoop", "start", "Z", "stop", "overrideRunRef", "hasLoop", "startStopTabVisibilityListener", "startAndStopBasedOnIntersection", "entry", "useSharedIntersectionObserver", "addWillChange", "se", "parallaxTransform", "scrollY", "originalPosition", "speed", "offset", "adjustPosition", "speedFactor", "initialPosition", "scrollOffset", "parallaxOptionsKeys", "useParallax", "options", "visibilityStyle", "parallaxTransformEnabled", "transform2", "yValue", "useScroll", "parallaxY", "useTransform", "visibility", "useMotionValue", "defaultValue", "useRefEffect", "element", "frame", "useOnRouteChange", "getTransition", "runEffectAnimation", "appearId", "instant", "motionValue2", "isMotionValue", "isNumber", "visualElement", "visualElementStore", "startTime", "safeWindow", "handoffAnimationStartTime", "presenceOptionsKeys", "usePresenceAnimation", "motionInitial", "motionAnimate", "motionExit", "presenceInitial", "presenceAnimate", "presenceExit", "style", "animateConfig", "exit", "isPresent", "safeToRemove", "usePresence", "internalState", "base", "hasMounted", "lastAnimate", "running", "effectEnabled", "calcOffsetTop", "container", "top", "current", "scrollObserverOffset", "createTransformInputRange", "transformTargets", "threshold", "callback", "starts", "inputRange", "index", "targetRef", "height", "previousTop", "end", "currentScrollDirection", "lastOffset", "scrollDirectionThreshold", "useScrollDirectionChange", "scrollDirection", "cb", "direction", "repeat", "currentRouteKey", "useCurrentRouteKey", "_", "directionChangeOffset", "lastDirection", "currentTarget", "scrollInfo", "hasDirectionChanged", "nextTarget", "styleAppearOptionsKeys", "defaultOutputRange", "defaultRanges", "createInputOutputRange", "targets", "hasExit", "outputRange", "firstRange", "idx", "last", "makeStyle", "useAnimationVariants", "opacity", "targetOpacity", "transformPerspective", "enter", "animateVariant", "defaultStyles", "useStyleAppearEffect", "playState", "animation", "runAnimation", "fromInitial", "transitionWithFallback", "toValue", "hasAnimatedOnce", "animateWithIntersectionObserver", "useAppearEffect", "appears", "isPlaying", "lastAppearState", "animateWithScrollInfo", "playedState", "lastVariant", "transform", "variantAnimation", "asRecord", "styleTransformOptionsKeys", "defaultValues", "defaultRanges2", "useAttachOptionalSpring", "spring2", "springs", "objectKeys", "m2", "v", "set", "active", "animateValue", "frameData", "delta", "createInputOutputRanges", "effectKeyOutputRange", "_b", "_c", "previousTarget", "createPageOutputRange", "keyOutputRange", "pageInputRange", "useStyleTransform", "transformTrigger", "styleTransformEffectEnabled", "transformViewportThreshold", "effectDisabled", "triggerOnScroll", "fe", "scrollYInputRange", "groups", "groupValues", "backwardsCompatibleEnabledCheck", "secondaryKey", "object", "extractFXOptions", "result", "strippedKey", "stripPrefixFromPrefixedKey", "group", "keys3", "add2", "sum", "multiply", "reactRefObjectKey", "isReactRefObject", "addMotionValueStyle", "isVariantOrVariantList2", "withFX", "forwardedRef", "parallax", "styleAppear", "styleTransform", "presence", "forwardedProps", "targetOpacityValue", "withPerspective", "inSmartComponent", "observerRef", "useObserverRef", "presenceEffectValues", "presenceEffectStyle", "optimizedAppearDataAttribute", "parallaxValues", "parallaxStyle", "transformValues2", "scrollStyle", "appearEffectValues", "scrollAppearStyle", "loopValues", "loopStyle", "fxValues", "scale", "x", "y", "rotate", "rotateX", "rotateY", "skewX", "skewY", "drag", "dragConstraints", "useRerenderOnResize", "motionValueStyle", "motionGestures", "ComponentViewportContext", "e", "useComponentViewport", "ComponentViewportProvider", "width", "height", "y", "children", "rest", "ref", "componentViewport", "cloneWithPropsAndRef", "useCloneChildrenWithPropsAndRef", "p", "withGeneratedLayoutId", "Component18", "props", "layoutId", "useLayoutId", "SuspenseErrorBoundary", "I", "__publicField", "error", "errorInfo", "componentStack", "stack", "sendTrackingEvent", "NotFoundErrorBoundaryCaughtError", "L", "suspendPromise", "Suspend", "SuspenseThatPreservesDom", "NullFallback", "nullFallback", "collectErrorToAnalytics", "logError", "args", "shouldEnableCodeBoundaries", "RenderTarget", "CodeComponentBoundary", "errorMessage", "fallback", "ServerSideErrorBoundary", "ClientSideErrorBoundary", "hasError", "DeprecatedContainerErrorBoundary", "ExternalComponentContext", "useNearestExternalComponent", "useFurthestExternalComponent", "nearestExternalComponent", "item", "IsExternalComponent", "scopeId", "nodeId", "parent", "newValue", "CRASH_ERROR_MESSAGE_PREFIX", "formatCodeCrashLocationFromSourceNode", "getErrorMessageForComponent", "getErrorMessageFor", "getErrorMessageForOverride", "element", "shouldWrapComponentWithBoundary", "scopeIdOfThisComponent", "scopeIdOfNearestExternalComponent", "externalComponentLevel", "isAuthoredByUser", "isExternalComponent", "inComponentSlot", "isLocalComponentInstance", "isNodeLocalToProject", "shouldWrapOverrideWithBoundary", "scopeIdOfNodeWithOverride", "scopeIdOfThisNode", "isUndefined", "useMaybeWrapComponentWithCodeBoundary", "isModuleExternal", "ContainerInner", "as", "outerLayoutId", "useConstant", "MotionComponent", "htmlElementAsMotionComponent", "clonedChildren", "child", "childrenWithCodeBoundary", "ComponentContainerContext", "AutomaticLayoutIds", "LayoutGroup", "Container", "SmartComponentScopedContainer", "rendersWithMotion", "otherProps", "tagName", "layoutDependency", "plainHTMLRenderableProps", "CustomCursorContext", "z", "replaceCursorClassName", "cursorComponentClassName", "getActiveDefinitions", "map2", "previousDefinitions", "newDefinitions", "allCursors", "hashes", "hash2", "value", "CustomCursorContextProvider", "X", "events", "byCaller", "callback", "cursors", "id", "shouldReduceMotion", "useReducedMotionConfig", "u", "CustomCursorComponent", "CustomCursorHost", "withCSS", "staticCursorStyle", "customCursorReplacesNativeCursor", "cursor", "valueForCursorAlignment", "alignment", "assertNever", "getCenteringTransform", "placement", "portalIdAttribute", "getCursorHash", "x", "el", "isEmptyObject", "object", "_", "onRegisterCursors", "re", "hasHoverCapability", "setHasHoverCapability", "ye", "pointerX", "useMotionValue", "pointerY", "opacity", "cursorRef", "pe", "internalState", "forceRender", "useForceUpdate2", "fe", "noHoverMQ", "safeWindow", "updateRender", "Z", "ue", "x2", "y2", "updateValues", "animate", "updateVariant", "frame", "updateCursor", "cancelFrame", "fireEventToTarget", "event", "_a", "hideCursor", "updateCursors", "newCursors", "unregister", "cursorHash", "replaceNativeCursor", "Cursor", "spring2", "sprungX", "useSpring", "sprungY", "useTransform", "transformTemplate2", "te", "t", "useCustomCursors", "webPageCursors", "registerCursors", "ae", "Polygon", "points", "sum", "len", "i", "pointA", "pointB", "polygonPoints2", "point", "_b", "_c", "_d", "sign", "Point", "x1", "y1", "i2", "d", "localSign", "pointsA", "pointsB", "boundingRectA", "Rect", "boundingRectB", "edgesA", "pointsALength", "index", "nextPoint", "Line", "edgesB", "pointsBLength", "edgeA", "edgeB", "rect", "edges", "seen", "count", "clippedPoints", "originalPoints", "intersectionKey", "keyForPoint", "line", "edge", "intersection2", "invertPlacement", "preferredOffset", "length", "max", "collisionDetectionPadding", "min", "size", "collisionAxis", "windowSize", "getPlacementAndOffsetAvoidingScreenCollision", "offset", "getSafePlacementFloatingPositionRect", "anchor", "collisionDetectionSize", "rebasedRect", "preferredRect", "safePlacement", "rebasedCollisionRect", "preferredPoint", "a", "b", "minInset", "safeAreaPolygonConstraints", "mouseOffset", "polygonPoints", "constrainX", "constrainY", "tl", "bl", "tr", "br", "mousePoint", "safeAreaInset", "delta", "floatingPositionSafeAreaStyle", "anchorRect", "floatingRect", "minX", "minY", "valueForFloatingAlignment", "motionOriginFromFloatingPosition", "getAncestorInfo", "anchorRef", "info", "createAnimationFrameLoop", "onRead", "createUpdateSafeArea", "safeAreaRef", "calculatedRect", "updatePosition", "floatingPositionRef", "position", "FloatingStackingContext", "useDismissFloatingLayer", "safeArea", "onDismiss", "descendantStackingContext", "ancestorStackingContext", "isPresent", "safeToRemove", "usePresence", "handleEscape", "latestEvent", "maybeDismiss", "scheduleMaybeDismiss", "makeGetSafePlacementFloatingPositionRect", "useDynamicMotionOrigin", "initialPlacement", "originX", "originY", "origin", "motionValue", "values", "childrenWithOrigin", "isReactChild", "isReactElement", "isObject", "style", "overlayContainerId", "templateOverlayContainerId", "getPortalContainer", "deprecatedSelector", "inComponent", "container2", "container", "isString", "Floating", "offsetX", "offsetY", "className2", "portalSelector", "zIndex", "collisionDetection", "contentRef", "updateOrigin", "refHasValue", "scrolls", "elementRect", "initialAnchorRect", "getSafePlacementRect", "initialSafePlacement", "initialCalculatedRect", "updateSafeArea", "onUpdate", "onRender", "safePlacementAndRect", "loop", "cancelAnimationFrameLoop", "handleMouseMove", "descendantContext", "Ha", "motion", "GracefullyDegradingErrorBoundary", "isBot", "unwrappedError", "closingHTMLComment", "closingHTMLCommentReplacement", "dom", "LazyValue", "resolver", "status", "promise", "LibraryFeaturesContext", "LibraryFeaturesProvider", "useLibraryFeatures", "findAnchorElement", "target", "withinElement", "ChildrenCanSuspend", "useGranularSuspense", "withChildrenCanSuspend", "Y", "linkKey", "isLinkToWebPage", "link", "PRELOAD_AFTER_MS", "OBSERVER_THRESHOLD", "LOW_MEMORY_THRESHOLD", "MAX_CONCURRENT_PRELOADS_SLOW_NETWORK", "MAX_CONCURRENT_PRELOADS_FAST_NETWORK", "nodeToRoute", "preloadedRoutes", "routeToNodesInViewport", "getObserveRouteForPreloadingFn", "connection", "lowDeviceMemory", "effectiveType", "preloadDisabled", "maxPreloadAmount", "updateConnection", "observer", "onPreloadIntersectionChange", "activePreloadsAmount", "preloadTimeout", "route", "nodesInViewport", "preloadDone", "preloadRoute", "node", "entries", "_a2", "entry", "nodes", "amountOfNodesInViewport", "observeRouteForPreloading", "shouldPreloadBasedOnUA", "noLocale", "resolveSlugCache", "resolveSlug", "unresolvedSlug", "utilsByCollectionId", "activeLocale", "cache2", "collectionCache", "collectionItemCache", "lazyValue", "getUtils", "utils", "resolveSlugs", "unresolvedPathSlugs", "unresolvedHashSlugs", "collectionUtils", "handleSlugs", "unresolvedSlugs", "result", "slugKey", "assert", "pathResult", "slugResult", "resolveSlugsWithSuspense", "promises", "result2", "isInternalURL", "href", "isValidURL", "isInternal", "findMatchingRouteAttributesForWebPageLink", "router", "currentRoute", "pageLink", "implicitPathVariables", "webPageId", "pathVariables", "hashVariables", "resolvedSlugs", "getRouteAttributes", "findMatchingRouteAttributesForWebPageLinkWithSuspense", "findMatchingRouteAttributesForResolvedPath", "path", "pathnameWithQueryParams", "pathname", "routeId", "inferInitialRouteFromPath", "combinedPathVariables", "combinedHashVariables", "resolvedHref", "getPathForRoute", "resolvedHash", "getRouteFromPageLink", "elementKey", "collectionKey", "collectionItemIdKey", "pathVariablesKey", "mediaType", "isFramerPageLink", "parseFramerPageLink", "link", "isFramerPageLink", "url", "target", "mediaType", "searchParams", "element", "elementKey", "collectionItem", "collection", "collectionKey", "collectionItemId", "collectionItemIdKey", "pathVariablesValue", "pathVariablesKey", "pathVariables", "navigateFromAttributes", "navigate", "element", "implicitPathVariables", "_a", "routeId", "elementId", "pathVariables", "pathVariablesRaw", "href", "link", "parseFramerPageLink", "smoothScroll", "linkFromFramerPageLink", "isFramerPageLink", "parsed", "target", "collectionItem", "createVariablesFromPageLinkCollectionItem", "variables", "pathVariablesKey2", "value", "pathVariablesRegExp2", "PathVariablesContext", "z", "useImplicitPathVariables", "contextPathVariables", "re", "currentPathVariables", "useCurrentRoute", "linkMatchesRoute", "route", "webPageId", "hash2", "combinedPathVariable", "key7", "useLinkMatchesRoute", "pageLink", "isString", "isLinkToWebPage", "propsForLink", "href", "openInNewTab", "trackLinkClick", "isInternal", "isInternalURL", "target", "getTargetAttrValue", "rel", "isValidURL", "linkInfoKey", "link", "_a", "_b", "NestedLinksCollector", "__publicField", "result", "outerLinkKey", "innerLinkKeys", "outerLinkInfo", "assert", "links", "innerLinkKey", "innerLinkInfo", "outerLink", "innerLink", "outerLinkNestingInfo", "nestedLinksCollector", "useIsOnFramerCanvas", "RenderTarget", "OuterLinkContext", "z", "useReplaceNestedLinks", "children", "scopeId", "nodeId", "propsAddedByLink", "observerRef", "re", "furthestExternalComponent", "useFurthestExternalComponent", "se", "router", "useRouter", "currentRoute", "useCurrentRoute", "route", "pageLink", "isLinkToWebPage", "linkFromFramerPageLink", "getRouteFromPageLink", "replaceNestedLinks", "useLibraryFeatures", "isOnFramerCanvas", "shouldReplaceLink", "onClick", "te", "event", "openExternalLink", "onAuxClick", "onKeyDown", "useRefEffect", "node", "replacedChildren", "j", "child", "isChildReplaceable", "linkInfoIsCollectable", "tag", "maybeReplaceAnchorWithSpan", "childChildren", "childProps", "props", "ref", "B", "p", "linkInfo", "isUndefined", "J", "component", "isMotionComponent", "unwrapMotionComponent", "motion", "useTrackLinkClick", "newTrackingEventsEnabled", "clickTrackingId", "activeLocale", "hrefAttribute", "_c", "_d", "_e", "pageviewEventData", "sendTrackingEvent", "makeUrlAbsolute", "targetWebPageId", "targetRoute", "targetRoutePath", "targetCollectionItemId", "utils", "slug", "url", "safeWindow", "performNavigation", "routeId", "elementId", "combinedPathVariables", "smoothScroll", "isLazyComponentType", "createOnClickLinkHandler", "anchorElement", "findAnchorElement", "propsForRoutePath", "implicitPathVariables", "matchedRoute", "findMatchingRouteAttributesForResolvedPath", "pathVariables", "path", "getPathForRoute", "anchorTarget", "Link", "withChildrenCanSuspend", "Y", "motionChild", "restProps", "forwardedRef", "useImplicitPathVariables", "useLocaleInfo", "newTrackingEvents", "isString", "resolvedHref", "findMatchingRouteAttributesForWebPageLinkWithSuspense", "linkMatchesRoute", "hasRef", "useObserverRef", "observeRouteForPreloading", "navigate", "propsAddedByLinkExceptNavigate", "isInternalNavigation", "useCloneChildrenWithPropsAndRef", "cloneChildPropsWithAggregatedEvents", "rebindEventHandlersIfNeeded", "linkProps", "aggregatedProps", "onTap", "childOnClick", "childOnTap", "isFunction", "info", "isIOS", "preventClickOnNativeAnchorLink", "resolveLinkInternal", "href", "router", "implicitPathVariables", "onlyHash", "resolveSlugs2", "pageLink", "isLinkToWebPage", "linkFromFramerPageLink", "isString", "propsForLink", "currentRoute", "webPageId", "hash2", "pathVariables", "hashVariables", "unresolvedHashSlugs", "unresolvedPathSlugs", "route", "resolvedSlugs", "combinedPathVariables", "combinedHashVariables", "getPathForRoute", "IgnoreErrors", "I", "__publicField", "error", "salt", "difficulty", "tokenLength", "maxTime", "calculateProofOfWork", "target", "startTime", "processing", "timestamp", "nonce", "randomCharacters", "secret", "hash2", "sha256", "text", "buffer", "hashBuffer", "b", "count", "characters", "result", "charactersLength", "getEncodedFormFieldsHeader", "data2", "addUTMTagsToFormData", "document2", "matches", "parsed", "key7", "trackFormSubmit", "newTrackingEventsEnabled", "router", "nodeId", "submitTrackingId", "_a", "eventData", "sendTrackingEvent", "pendingState", "successState", "incompleteState", "completeState", "errorState", "formReducer", "state", "type", "assertNever", "stateCanSubmitForm", "preventDefault", "openExternalLinkInCurrentTab", "link", "formRef", "href", "isValidURL", "linkElement", "FormContext", "e", "FormContainer", "action", "children", "redirectUrl", "onSuccess", "onError", "onLoading", "props", "forwardedRef", "fallbackRef", "ref", "useRouter", "currentRoute", "useCurrentRoute", "implicitPathVariables", "useImplicitPathVariables", "dispatch", "activeLocale", "useLocaleInfo", "projectHash", "re", "callbacks", "newTrackingEvents", "useLibraryFeatures", "redirectTo", "_b", "isString", "matchingRoute2", "findMatchingRouteAttributesForResolvedPath", "routeId2", "elementId2", "pathVariables2", "assert", "isLinkToWebPage", "matchingRoute", "findMatchingRouteAttributesForWebPageLink", "routeId", "elementId", "pathVariables", "handleSubmit", "event", "_c", "_d", "_e", "_f", "interactionResponse", "safeWindow", "value", "submitForm", "Z", "handleKeyDown", "input", "form", "checkValidity", "anyEmptyRequiredFields", "p", "motion", "element", "child", "proofOfWork", "response", "body", "responseHasError", "isObject", "getPageviewEventData", "framerSiteId", "routePath", "collectionItemId", "localeCode", "isSamePage", "a", "aPathVariables", "bPathVariables", "defaultLocaleId", "useForceUpdate3", "_", "setForcedRenderCount", "v", "updateScrollPosition", "smoothScroll", "isHistoryTransition", "scrollElementIntoView", "useScheduleRenderSideEffects", "dep", "actions", "pe", "fe", "te", "cb", "useNavigationTransition", "enableAsyncURLUpdates", "startNativeSpinner", "useNativeLoadingSpinner", "monitorNextPaintAfterRender", "useMonitorNextPaintAfterRender", "navigationController", "transitionFn", "updateURL", "isAbortable", "setHydrationDone", "hasUpdateURL", "resolve", "controller", "signal", "nextRender", "resolveNavigationPromise", "navigationPromise", "reject", "noop", "Router", "defaultPageStyle", "disableHistory", "initialPathVariables", "initialRoute", "notFoundPage", "collectionUtils", "routes", "initialLocaleId", "locales", "EMPTY_ARRAY", "preserveQueryParams", "LayoutTemplate", "editorBar", "siteCanonicalURL", "useMarkRouterEffects", "useReplaceInitialState", "startViewTransition2", "useViewTransition", "forceUpdate", "scheduleSideEffect", "startNavigation", "skipFirstPageView", "currentRouteRef", "currentPathVariablesRef", "currentLocaleIdRef", "currentLocaleId", "se", "id", "localeInfo", "localeOrLocaleId", "localeId", "defaultLocale", "nextLocale", "currentRouteId2", "currentRoute2", "localeResult", "switchLocale", "currentPathVariables2", "currentStatePaginationInfo", "isHistoryState", "currentPath", "ignorePushStateWrapper", "pushHistoryState", "setCurrentRouteId", "usePopStateHandler", "navigate", "newRoute", "inUse", "path", "match", "pathVariablesRegExp", "usedVariable", "routeElementId", "getRouteElementId", "currentRouteLocaleId", "route", "pushRouteState", "getRoute", "useGetRouteCallback", "currentRouteId", "currentPathVariables", "currentRoutePath", "pageviewEventData", "ue", "utils", "slug", "api", "pageExistsInCurrentLocale", "pathWithFilledVariables", "fillPathVariables", "remountKey", "templatePageStyle", "useConstant", "RouterAPIProvider", "LocaleInfoContext", "u", "SuspenseThatPreservesDom", "NotFoundErrorBoundary", "MarkSuspenseEffects", "WithLayoutTemplate", "inLayoutTemplate", "x", "renderPage", "TurnOnReactEventHandling", "style", "scrollIntoViewOptions", "preloadImage", "url", "image", "isObjectOrArray", "getPropertyByPath", "keyPath", "keyParts", "part", "current", "getRequestCacheKey", "loadingFetchResult", "isNumberString", "isValidFetchDataValueResult", "isNumber", "isBoolean", "resolveFetchDataValue", "request", "resolvedValue", "isUndefined", "isCacheExpired", "insertionTimestamp", "cacheDuration", "RenderTarget", "cacheDurationMs", "currentTimestamp", "expirationTimestamp", "noop3", "_subscribers", "_preloadedRequests", "_shortestCacheDurations", "_cachedAt", "_ongoingFetches", "_staleQueriesInterval", "_FetchClient", "__privateAdd", "debounce", "responseValue", "cacheConfig", "__privateGet", "storedAt", "interval", "cacheKey", "currentIntervalForRequest", "shortestCacheDuration", "cachedAt", "rawData", "cached", "cachedData", "subscribers", "subscriber", "isBrowser2", "ongoingFetch", "hasExpiredCache", "promise", "onlyIfPrefetched", "callback", "skipFetchRequest", "cacheDurationForUrl", "nextSubscribers", "FetchClient", "FetchClientContext", "z", "IsRestoringCacheContext", "FetchClientProvider", "initialClient", "client", "ye", "isRestoring", "setIsRestoring", "_subscriptions", "_subscribers2", "_results", "_SSRResults", "_onlyPrefetched", "_subscriptions", "_subscribers2", "_results", "_SSRResults", "_onlyPrefetched", "PageRoot", "RootComponent", "isWebsite", "routeId", "framerSiteId", "pathVariables", "routes", "collectionUtils", "notFoundPage", "isReducedMotion", "includeDataObserver", "localeId", "locales", "preserveQueryParams", "EditorBar", "defaultPageStyle", "disableHistory", "LayoutTemplate", "siteCanonicalURL", "enableAsyncURLUpdates", "useLibraryFeatures", "e", "MainLoop", "p", "MotionConfig", "FetchClientProvider", "CustomCursorHost", "FormContext", "Router", "EditorBarLauncher", "Wrapper", "DataObserver", "RoutesProvider", "NavigationWrapper", "libraryFeatures", "mounted", "setMounted", "ye", "re", "editorBarFeatures", "se", "features", "key7", "ue", "Z", "IgnoreErrors", "L", "ResolveLinks", "withChildrenCanSuspend", "Y", "links", "children", "rest", "ref", "router", "useRouter", "activeLocale", "useLocaleInfo", "cloneWithPropsAndRef", "useCloneChildrenWithPropsAndRef", "promises", "resolvedLinks", "link", "isString", "resolveLinkInternal", "unresolvedPathSlugs", "unresolvedHashSlugs", "handleSlugs", "slugs", "result", "slugKey", "unresolvedSlug", "assert", "lazyValue", "resolveSlug", "promise", "resolvedValue", "childrenWithLinks", "getLogger", "name", "args", "_a", "runtime", "isAnyCollection", "value", "isAnyLegacyCollection", "isAnyDatabaseCollection", "isLegacyCollection", "isArray", "isObject", "isLegacyLocalizedCollection", "isFunction", "isDatabaseCollection", "isLocalizedDatabaseCollection", "getCollectionItems", "collection", "locale", "CompatibilityDatabaseCollection", "__publicField", "propertyControls", "getPropertyControls", "assert", "schema", "controlEntries", "key7", "controlDescription", "type", "item", "pointer", "data2", "isNullish", "definition", "isUndefined", "LazyValue", "promise", "index", "pointers", "items", "left", "right", "compareArray", "collation11", "leftLength", "rightLength", "i", "leftItem", "rightItem", "result", "compare", "castArray", "DatabaseValue", "compareBoolean", "castBoolean", "valueToBoolean", "cast", "compareColor", "castColor", "compareDate", "leftDate", "rightDate", "castDate", "date", "isValidDate", "compareEnum", "castEnum", "compareFile", "castFile", "compareLink", "leftEncoded", "rightEncoded", "castLink", "protocol", "compareNumber", "castNumber", "number", "valueToNumber", "compareObject", "leftKeys", "rightKeys", "leftKey", "rightKey", "leftValue", "rightValue", "castObject", "definitionEntries", "itemDefinition", "compareResponsiveImage", "castResponsiveImage", "compareRichText", "castRichText", "compareString", "castString", "valueToString", "assertNever", "isBoolean", "isNumber", "isString", "source", "target", "sourceValue", "targetValue", "isNull", "unknownDefinition", "getNetworkLatency", "getNetworkSpeed", "KB", "Cost", "network", "totalRequests", "transferredBytes", "latency", "speed", "cost", "Group", "id", "relational", "__publicField", "node", "required", "hash2", "existing", "winner", "Winner", "assert", "optimizer", "Cost", "cost", "evaluateSync", "generator", "state", "evaluateAsync", "value", "evaluateObject", "values", "result", "keys3", "promises", "key7", "isGenerator", "evaluateArray", "AbstractNode", "isSynchronous", "RelationalNode", "group", "isHashable", "value", "isObject", "isFunction", "calculateHash", "name", "values", "hashes", "isCollectionMetadata", "CollectionMetadata", "assert", "isFieldMetadata", "FieldMetadata", "isIndexMetadata", "IndexMetadata", "isRelationalNode", "RelationalNode", "isGroup", "Group", "RichText", "data2", "pointer", "__publicField", "VIRTUAL_INDEX_FIELD", "Metadata", "other", "item", "ids", "a", "b", "CollectionMetadata", "id", "name", "data2", "__publicField", "Indexes", "Fields", "IndexMetadata", "id", "data2", "collection", "lookupNodes", "constraint", "ordering", "__publicField", "Fields", "fieldName", "field", "Indexes", "Metadata", "FieldMetadata", "id", "name", "definition", "collection", "item", "assert", "value", "RichText", "Fields", "Metadata", "__publicField", "OrderingField", "field", "direction", "calculateHash", "Ordering", "ordering", "other", "fields", "VIRTUAL_INDEX_FIELD", "RequiredProps", "resolvedFields", "node", "Scope", "parent", "scopeField", "scope", "_a", "candidates", "namedFields", "Tuple", "result", "pointer", "tuple", "Relation", "tuples", "predicate", "callback", "start", "end", "keys3", "key7", "ProjectionField", "input", "RelationalProject", "RelationalNode", "projections", "passthrough", "isSynchronous", "projection", "projectionFields", "required", "optimizer", "inputRequired", "inputCost", "projectionsCost", "Cost", "projectionCost", "projectionInput", "context", "outputFields", "projectedValues", "evaluateArray", "evaluateObject", "index", "collation", "ScalarNode", "AbstractNode", "referencedFields", "referencedOuterFields", "generator", "evaluateSync", "evaluateAsync", "collation2", "CaseCondition", "when", "then", "ScalarCase", "conditions", "otherwise", "_b", "condition", "DatabaseValue", "valueToBoolean", "Builder", "normalizer", "query", "locale", "inScope", "select", "fromScope", "defaultOrdering", "orderProjections", "orderFields", "order", "isUndefined", "orderingField", "expression", "fieldId", "projectionScope", "offset", "limit", "selects", "outScope", "fieldName", "from", "assertNever", "collectionData", "getCollection", "collectionName", "collectionId", "CollectionMetadata", "indexData", "lookupNodes", "node2", "constraint", "indexId", "IndexMetadata", "leftScope", "rightScope", "leftOrdering", "rightOrdering", "left", "right", "isOuterField", "subquery", "unknownDefinition", "getArgument", "argument", "source", "target", "array", "Subquery", "data2", "isAnyLegacyCollection", "CompatibilityDatabaseCollection", "isDatabaseCollection", "isLocalizedDatabaseCollection", "RelationalFilter", "predicateCost", "predicates", "_", "RelationalIndexLookup", "isFullScan", "lookup", "KB", "RelationalIntersection", "leftOutputFields", "rightOutputFields", "leftRequired", "leftCost", "rightRequired", "rightCost", "ScalarEquals", "RelationalLeftJoin", "group", "constraintCost", "leftConstraint", "rightConstraint", "joinKeyMap", "rightTuple", "rightValue", "tuplesForKey", "leftTuple", "leftValue", "matches", "joinedTuple", "hasMatch", "RelationalRightJoin", "RelationalScan", "RelationalUnion", "ScalarAnd", "ScalarConstant", "collation3", "ScalarContains", "sourceCost", "targetCost", "collation4", "ScalarEndsWith", "ScalarGreaterThan", "ScalarGreaterThanOrEqual", "ScalarLessThan", "ScalarLessThanOrEqual", "ScalarNotEquals", "ScalarOr", "collation5", "ScalarStartsWith", "Explorer", "before", "after", "createIndexQueryAll", "length", "RelationalProps", "Memo", "relationalProps", "Group", "hash2", "existing", "relational", "RelationalLimit", "limitCost", "valueToNumber", "RelationalOffset", "offsetCost", "ScalarArray", "itemDefinitions", "namedFieldEntries", "namedFieldIds", "inputContext", "relation", "relationTuple", "ScalarCast", "ScalarFlatArray", "collation6", "ScalarIn", "collation7", "ScalarIndexOf", "ScalarLength", "ScalarNot", "collation8", "ScalarNotIn", "ScalarVariable", "Normalizer", "memo2", "pushedFilter", "pushedLimit", "nullableDefinition", "isLeftVariable", "arrayDefinition", "castConditions", "castWhen", "castCondition", "EnforcerNode", "EnforcerResolve", "collections", "collectionItems", "pointers", "items", "collation9", "EnforcerSort", "isAscending", "leftPointer", "leftItem", "rightPointer", "rightItem", "isNull", "Optimizer", "query", "locale", "__publicField", "Memo", "Normalizer", "Explorer", "outScope", "Builder", "group", "required", "optimized", "namedFields", "winner", "normalized", "assert", "node", "cost", "enforcer", "EnforcerResolve", "EnforcerSort", "stringifyIdentifier", "expression", "stringifyLiteralValue", "stringifyFunctionCall", "argument", "stringifyExpression", "stringifyCaseExpression", "caseString", "condition", "stringifyUnaryOperation", "value", "stringifyBinaryOperation", "left", "right", "operator", "stringifyTypeCast", "stringifyQuery", "assertNever", "stringifyCollection", "collection", "isDatabaseCollection", "stringifyJoin", "join", "result", "stringifyFrom", "from", "autoIndentSql", "sql", "formattedSql", "token", "queryString", "selectExpression", "expressionString", "orderExpression", "log", "getLogger", "QueryEngine", "optimizer", "root", "relation", "namedFieldEntries", "tuple", "resolvedFields", "name", "field", "resolved", "RichText", "item", "entries", "resolvedEntries", "key7", "QueryCache", "queryEngine2", "getCacheKey", "existing", "resolver", "LazyValue", "collectionIds", "getCollectionId", "id", "replaceCollection", "_", "isObject", "isAnyCollection", "localeId", "rejectPending", "pendingTimers", "pendingPromises", "t", "reject", "createSet", "useActiveVariantCallback", "baseVariant", "useConstant", "useOnCurrentTargetChange", "ue", "pe", "callback", "args", "resolve", "msDelay", "useAddVariantProps", "baseVariant", "gestureVariant", "variantProps", "e", "id", "_a", "_b", "_c", "activeMediaQueryFromWindow", "mediaQueries", "variant", "query", "safeWindow", "activeBreakpointHashesFromWindow", "breakpoints", "_a", "matches", "hash2", "mediaQuery", "defaultHash", "useHydratedBreakpointVariants", "initial", "hydratedWithInitial", "isInitialNavigation", "re", "IsInitialNavigationContext", "isStaticRenderer2", "useIsStaticRenderer", "usesMediaQueries", "isBrowser2", "baseVariant", "pe", "basePropsVariant", "forceUpdate", "useForceUpdate2", "instantTransition", "useInstantTransition", "setActiveVariantInstant", "te", "updateStateAndRerender2", "Z", "updateStateAndRerender", "useIsomorphicLayoutEffect2", "ue", "callbacks", "mql", "callback", "event", "addMQLCallback", "removeMQLCallback", "framerBreakpointCSSSelector", "requestIdleCallbackFallback", "callback", "removeHiddenBreakpointLayersV2", "breakpoints", "_a", "_b", "_c", "_d", "suspenseBoundaries", "activeBreakpointHashes", "activeBreakpointHashesFromWindow", "hash2", "hiddenLayer", "isSuspenseBoundaryStart", "safeWindow", "_a2", "ssrVariant", "suspenseBoundary", "isSuspenseBoundaryEnd", "node", "callbackForVariant", "map2", "variant", "useOnVariantChange", "callbackMap", "isStaticRenderer", "isActiveScreenRef", "e", "callbackMapRef", "useOnCurrentTargetChange", "isCurrent", "isOverlayed", "isActiveScreen", "callback", "useOnAppear", "setOverflow", "blockDocumentScrolling", "show", "yieldBefore2", "interactionResponse", "frame", "htmlStyle", "useOverlayState", "showOverlay", "setShowOverlay", "key4", "isRoute", "route", "isObject", "componentForRoute", "routeComponent", "withPreload", "preloadKey2", "component", "usePrototypeNavigate", "preload", "navigation", "useNavigation", "getRoute", "useRouter", "onCanvas", "useIsOnFramerCanvas", "componentOrRoute", "isString", "target", "options", "Component18", "appearsFrom", "backdropColor", "animation", "use", "promise", "queryEngine", "QueryEngine", "queryCache", "QueryCache", "useQueryData", "query", "activeLocale", "useLocaleInfo", "cached", "getWhereExpressionFromPathVariables", "pathVariables", "collection", "expressions", "value", "isUndefined", "isObject", "name", "result", "expression", "createGestureVariant", "variant", "type", "nextVariant", "allVariants", "currentVariant", "nextIndex", "nextVariant2", "assert", "activeTransition", "transitions", "variantTransition", "getGesture", "enabledGestures", "isHovered", "isPressed", "isLoading", "isError", "hover", "pressed", "loading", "error", "createVariantClassName", "baseVariant", "variantClassNames", "mappedClassName", "safeBaseVariant", "targetVariant", "fallbackVariant", "validBaseVariants", "CycleVariantState", "useRunCallbackIfPageIsVisible", "listenerRef", "pe", "callbackRef", "clean", "te", "ue", "callback", "listenerFn", "_a", "useRunCallbackIfElementIsInView", "observerRef", "isInViewRef", "ref", "observer", "entries", "isIntersecting", "i", "useUpdateIfVisible", "runUpdateIfPageIsVisible", "runUpdateIfElementIsInView", "checkViewport", "isBot", "useVariantState", "variant", "externalDefaultVariant", "externalTransitions", "externalEnabledGestures", "externalCycleOrder", "variantProps", "forceUpdate", "useForceUpdate2", "isCanvas", "useIsOnFramerCanvas", "useConstant", "wrapUpdatesInTransitions", "pauseOffscreenFeatureOn", "useLibraryFeatures", "update", "useTransition", "Z", "runUpdateIfVisible", "internalState", "resolveNextVariant", "targetBaseVariant", "isHovered2", "isPressed2", "isError2", "enabledGestures2", "defaultVariant2", "nextBaseVariant", "gesture", "nextGestureVariant", "createGestureVariant", "updateIfNeeded", "baseVariant2", "gestureVariant2", "highPriority", "clearError", "nextBase", "nextGesture", "setGestureState", "setVariant", "proposedVariant", "pauseOffscreen", "cycleOrder", "nextVariant", "clearLoadingGesture", "gestureVariant", "defaultVariant", "loadedBaseVariant", "addVariantProps", "useAddVariantProps", "se", "variants", "hasLoadingVariant", "gestures", "gestureHandlers", "activeTransition", "cx", "withCodeBoundaryForOverrides", "Component18", "scopeId", "nodeId", "override", "inComponentSlot", "shouldEnableCodeBoundaries", "appliedOverride", "tryToApplyOverride", "hasErrorBeenLogged", "CodeBoundaryForOverrides", "props", "ref", "nearestExternalComponent", "useNearestExternalComponent", "shouldWrapOverrideWithBoundary", "p", "CodeComponentBoundary", "getErrorMessageForOverride", "logError", "collectErrorToAnalytics", "e", "error", "keys", "defaultRanges3", "createInputOutputRanges2", "transformTargets", "threshold", "exitTarget", "outputRange", "inputRange", "createTransformInputRange", "index", "lastInputRange", "isNumber", "firstItem", "withVariantAppearEffect", "Component18", "e", "props", "forwardedRef", "RenderTarget", "p", "wrapUpdatesInTransitions", "useLibraryFeatures", "options", "rest", "extractPrefixedProps", "visibleVariantId", "obscuredVariantId", "animateOnce", "variantAppearEffectEnabled", "targets", "scrollDirection", "activeVariant", "setVariant", "animateState", "observerRef", "useObserverRef", "useAppearEffect", "appears", "playedState", "currentVariant", "scrollInfo", "scrollY", "_a", "transform", "variant", "useScrollDirectionChange", "useOnRouteChange", "target", "WindowContext", "e", "useProvidedWindow", "safeFonts", "fontAliases", "fontFamilies", "isSuccessfullyParsedFontVariant", "variant", "systemFontFamilyName", "LocalFontSource", "__publicField", "family", "fontFamily", "fonts", "fontFamilies", "members", "member", "selector", "weight", "font", "key7", "value", "fontAliases", "systemFontFamily", "aliases", "fontFamilies2", "weights", "styles4", "style", "createVariantName", "alias", "fontWeightNames", "friendlyStyle", "import_process3", "__toESM", "require_browser", "isVariableFont", "createFontFamilyName", "createVariableFontFamilyName", "familyName", "supportsOpenType", "openTypeData", "validateVariationAxes", "variationAxesData", "variationAxes", "axis", "isVariationAxis", "isOpenTypeFeature", "feature", "builtInFontSelectorPrefix", "BuiltInFontSource", "assets", "asset", "properties", "fontName", "variantNameToWeight", "getFontStyle", "a", "b", "weightA", "weightB", "kebabCaseVariant", "variantToKebabCase", "variantsNameToWeight", "createFont", "locator", "f", "foundryName", "version2", "existingFontFamily", "_a", "_b", "_", "selectorWithoutPrefix", "name", "customFontSelectorPrefix", "getCustomFontName", "fileName", "isAssetVariableFont", "CustomFontSource", "_c", "isVariableFont2", "possibleValues", "possibleValuesWithItalics", "lowerCaseFamily", "tokens", "foundToken", "char", "foundFontFamily", "getRelatedFontVariants", "currentVariant", "availableVariants", "pickBoldItalicVariants", "pickVariableVariants", "currentWeight", "currentStyle", "variantByWeightAndStyle", "boldVariantByStyle", "variantBold", "variantBoldItalic", "currentVariantWeight", "variantItalic", "loadFontsWithOpenType", "source", "supportedFonts", "loadFontToOpenTypeFeatures", "features", "knownFontshareCategories", "parseFontshareCategories", "categoriesField", "category", "isKnownFontshareCategory", "fontsharePrefix", "weightNameToNumber", "weightNames", "allowedVariantsRegex", "FontshareSource", "variantSplit", "weightName", "weightName2", "styleName", "fontshareFonts", "fontsWithOpenType", "fontshareFont", "fontVariants", "fontStyle", "fontMetadataSelector", "hasOpenTypeFeatures", "fontVariant", "variantVariable", "variantVariableItalic", "mapToKnownCategory", "fontToOpenTypeFeatures", "categoryString", "categoryMapping", "framerInterFontPrefix", "framerFontPrefix", "weightNameToNumber2", "FramerFontSource", "weightAndStyleInfo", "framerFonts", "framerFont", "rest", "isVariable", "googleFontSelectorPrefix", "GoogleFontSource", "match", "webFonts", "webFontsWithAxes", "fontsToVariationAxes", "webFontsMap", "mapBy", "webFont", "webFontsWithAxesMap", "webFontName", "staticVariants", "variantName", "variableFont", "variableVariants", "allVariants", "allSuccessfullyParsedVariants", "googleFontsVariantName", "linkedVariants", "mapToKnownCategory2", "array", "keyFn", "acc", "item", "import_fontfaceobserver", "require_fontfaceobserver_standalone", "FONT_LOADING_TIMEOUT", "MAX_RETRIES", "FontLoadingError", "message", "fontRequests", "fontReadyPromises", "loadFont", "data2", "doc", "loadFontWithRetries", "attempt", "url", "stretch", "unicodeRange", "requestId", "fontFace", "isString", "readyPromise", "isFontReady", "e", "readyPromiseId", "framer_default", "loadVariationAxes", "isValidVariationAxesData", "axes", "assertNever", "error", "isObject", "isValidVariationAxes", "isVariationAxis2", "FontStore", "staticFonts", "variableFonts", "runtime", "axesData", "builtInFonts", "info", "googleLocator", "fontshareLocator", "builtInFontLocator", "framerFontDraftProperties", "fontIsVariable", "selectors", "googleFontsRequested", "fontshareFontsRequested", "builtInFontsRequested", "warnOnce", "s", "fontSelectors", "result", "fontsLoadedCallback", "fontStore", "defaultFont", "assert", "FormInputStyleVariableNames", "FormInputStyleVariableNames2", "Var", "inputClassName", "inputWrapperClassName", "emptyValueClassName", "forcedFocusClassName", "cssValue", "value", "css", "selector", "declaration", "output", "key7", "css2", "variable", "variables", "lastItem", "index", "sharedInputCSS", "inputClassName", "Var", "inputWrapperCSS", "inputWrapperClassName", "inputBorderAllSides", "inputBorderCSS", "customValidityKey", "validKey", "isRelevantValidityStateKey", "isInvalid", "validity", "useCustomValidity", "onValid", "onInvalid", "onChange", "onBlur", "onFocus", "isValidRef", "e", "handleInvalid", "handleChange", "handleBlur", "iconSpacing", "iconSize", "inputIconCSSDeclaration", "passwordManagerIgnoreDataProps", "PlainTextInput", "Y", "props", "ref", "autoFocus", "className2", "inputName", "max", "min", "placeholder", "required", "step2", "style", "type", "maxLength", "defaultValue", "autofillEnabled", "rest", "hasValue", "setHasValue", "ye", "prevDefaultValue", "setPrevDefaultValue", "te", "interactionResponse", "newValue", "Z", "eventHandlers", "p", "motion", "dataProps", "cx", "textInputWrapperClassName", "B", "emptyValueClassName", "iconSize2", "defaultTextareaResizerIcon", "defaultDateIconMaskImage", "defaultTimeIconMaskImage", "styles", "forcedFocusClassName", "FormPlainTextInput2", "withCSS", "Image2", "e", "props", "ref", "background", "children", "alt", "draggable", "rest", "style", "MotionComponent", "htmlElementAsMotionComponent", "u", "p", "BackgroundImageComponent", "isShallowEqualArray", "a", "b", "v", "i", "nonSlugCharactersRegExp", "trimSlugRegExp", "slugify", "value", "htmlRegExp", "escapeHTML", "str", "tag", "regex", "replaceFramerPageLinks", "rawHTML", "getRoute", "currentRoute", "implicitPathVariables", "original", "pre1", "pre2", "value1", "value2", "post", "_a", "_b", "href", "pageLink", "parseFramerPageLink", "targetRoute", "isRoute", "targetPath", "currentPath", "attributes", "elementId", "getRouteElementId", "link", "linkFromFramerPageLink", "isString", "linkMatchesRoute", "relativePath", "pathVariables", "pathVariablesRegExp2", "_", "key7", "params", "computeRelativePath", "htmlEscapes", "reUnescapedHtml", "reHasUnescapedHtml", "escapeHTML2", "chr", "deprecatedRichTextPlaceholder", "richTextWrapperClassName", "DeprecatedRichText", "Y", "props", "forwardedRef", "id", "name", "html", "htmlFromDesign", "text", "textFromDesign", "fonts", "width", "height", "left", "right", "top", "bottom", "center", "className2", "stylesPresetsClassName", "visible", "opacity", "rotation", "verticalAlignment", "isEditable", "willChangeTransform", "environment2", "RenderTarget", "withExternalLayout", "positionSticky", "positionStickyTop", "positionStickyRight", "positionStickyBottom", "positionStickyLeft", "__htmlStructure", "__fromCanvasComponent", "_forwardedOverrideId", "_forwardedOverrides", "_usesDOMRect", "_children", "rest", "parentSize", "useParentSize", "layoutId", "useLayoutId", "fallbackLayoutRef", "pe", "layoutRef", "navigate", "useRouter", "useCurrentRoute", "useRoutePreloader", "useMeasureLayout", "inCodeComponent", "re", "ComponentContainerContext", "isOnCanvas", "useIsOnFramerCanvas", "textOrOverride", "forwardedOverrideId", "override", "innerHTML", "escapedText", "useImplicitPathVariables", "innerHTMLWithReplacedFramerPageLinks", "se", "ue", "container", "interceptPageLinks", "event", "anchorElement", "findAnchorElement", "navigateFromAttributes", "useLoadFonts", "ie", "injectComponentCSSRules", "isHidden", "style", "convertVerticalAlignment", "restrictedRenderTarget", "frame2", "calculateRect", "isAutoSized2", "template", "transformTemplate", "rotate", "Animatable", "collectFiltersFromProps", "collectTextShadowsForProps", "forceLayerBackingWithCSSProperties", "p", "motion", "cx", "fromCanvasComponent", "containerRef", "prevFontsRef", "isShallowEqualArray", "fontStore", "newlyLoadedFontCount", "measureClosestComponentContainer", "newOverrideableRef", "patchAndWaitForChild", "ref", "controller", "current", "refCallbackResolve", "refCallbackPromise", "resolve", "reject", "element", "defaultValues2", "isEffectKey", "createKeyframes", "effect", "out", "effectValue", "defaultValue", "isUndefined", "emojiSplitRe", "tokenizeText", "tokenization", "elements", "words", "lastWordIndex", "word", "wordIndex", "isLastWord", "short", "u", "x", "char", "i", "tokenizationForEffect", "type", "assertNever", "transformString", "transforms", "isNumber", "getInitialEffectStyle", "canPlay", "canAnimate", "useTextEffect", "config", "preview", "useConstant", "isRenderingStaticContent", "isStaticRenderer", "state", "trigger", "target", "threshold", "play", "transition", "startDelay", "repeat", "tokenization2", "cleanupRef", "runAppearEffect", "inView", "effectEnabled", "hasMounted", "hasAnimatedOnce", "effectStyle", "mayAnimate", "r", "callback", "enter", "list", "createElementList", "animate", "stagger", "frame", "createLineGroups", "animations2", "group", "node", "groups2", "currentGroup", "lastOffset", "FitText", "viewBoxScale", "viewBox", "children", "RichTextContainer", "anchorLinkOffsetY", "_as", "_initialStyle", "stylesPresetsClassNames", "plainText", "fallbackRef", "textEffect", "processedChildren", "processRichTextChildren", "containerStyle", "positionStyle", "Component18", "htmlElementAsMotionComponent", "isFragment", "isLineBreak", "slugCounters", "tokenizer", "depth", "j", "onlyLineBreaks", "child", "J", "dataPresetTag", "isMotionComponent", "elementType", "unwrapMotionComponent", "stylesPresetClassName", "isHeading", "anchorLinkStylePresetClassName", "slug", "generateHeadingSlug", "anchorLink", "q", "headingText", "extractTextFromReactNode", "slugCounter", "RichText2", "content", "isObject", "contentProp", "h1", "h2", "h3", "a", "linearGradientLine", "angle", "rad", "offset", "anglePoint", "Point", "angleLine", "Line", "points", "Rect", "sortedPoints", "point", "a2", "b2", "b", "assert", "c", "start", "end", "elementPropertiesForLinearGradient", "gradient", "line", "stops", "gradientColorStops", "startPosition", "endPosition", "startPoint", "endPoint", "interpolator", "interpolate", "LinearGradient", "stop", "ConvertColor", "elementPropertiesForRadialGradient", "RadialGradient", "isRelativeNumber", "withoutLastChar", "float", "getRelativeNumberValue", "getPositionXFraction", "positionX", "getPositionYFraction", "positionY", "imagePatternPropsForFill", "fill", "includeTransform", "BackgroundImage", "imageWidth", "imageHeight", "transform2", "fit", "offsetX", "offsetY", "scaleX", "scaleY", "imageRatio", "realWidth", "realHeight", "validScaleX", "validScaleY", "layerPositionX", "layerPositionY", "extraOffsetX", "extraOffsetY", "mediaType2", "isAssetReference", "imageUrlForAsset", "asset", "pixelSize", "isExport", "runtime", "ImagePatternElement", "path", "parser", "supportsNativeParseHTML", "isFirefox", "domParser", "html", "type", "useDOM", "isBrowser2", "SharedSVGEntry", "id", "svg", "innerHTML", "viewBox", "count", "visuallyHiddenStyle", "SharedSVGManager", "__publicField", "generateUniqueIds", "contentId", "entry", "hash", "uniqueSVG", "svgSize", "svgDom", "parseSVG", "prefixIdsInSVG", "getSVGSize", "container", "size", "svgTemplates", "svgElement", "box", "output", "value", "sharedSVGManager", "node", "prefix2", "sanitizedPrefix", "sanitizeString", "recursivelyPrefixId", "str", "el", "prefixId", "attr", "base", "fragmentIdentifier", "URL_REF", "prefixedValue", "unitsToPixels", "parseLength", "_a", "m2", "width", "height", "SVG", "Y", "props", "forwardedRef", "parentSize", "useParentSize", "layoutId", "useLayoutId", "layoutRef", "e", "ref", "providedWindow", "useProvidedWindow", "useMeasureLayout", "p", "SVGComponent", "MAX_BACKGROUND_SVG_TEXT_LENGTH", "containsImageReference", "containsCustomPropertyReference", "hasBorderRadius", "style", "sizeSVG", "_b", "div", "localWindow", "safeWindow", "withExternalLayout", "constraintsEnabled", "intrinsicWidth", "intrinsicHeight", "_constraints", "isFiniteNumber", "SVGStyleSheet", "injectComponentCSSRules", "Layer", "element", "calculateRect", "svgContentId", "contentid", "prevProps", "fill", "BackgroundImage", "resetSetStyle", "innerStyle", "frame2", "rotation", "rotate", "Animatable", "RenderTarget", "xFactor", "yFactor", "zoom", "target", "RenderEnvironment", "zoomFactor", "left", "right", "top", "bottom", "visible", "title", "description", "className2", "variants", "innerRef", "_height", "_opacity", "_width", "rest", "identifier", "outerStyle", "collectOpacityFromProps", "collectFiltersFromProps", "fillElement", "Color", "fillColor", "LinearGradient", "gradient", "gradientId", "stops", "x1", "x2", "y1", "y2", "elementPropertiesForLinearGradient", "stop", "idx", "RadialGradient", "elementProperties", "elementPropertiesForRadialGradient", "imagePattern", "imagePatternPropsForFill", "ImagePatternElement", "dataProps", "hasTransformTemplate", "layoutHintDataPropsForCenter", "svgAsBackgroundImage", "content", "__html", "u", "l", "MotionComponent", "htmlElementAsMotionComponent", "href", "rel", "onClick", "onTap", "hasTitleOrDescription", "transformTemplate", "useFontLoadStatus", "fontSelectors", "timeout", "missingFontSelectors", "s", "fontStore", "fontLoadStatus", "setFontLoadStatus", "timer", "TextStyleSheet", "Text2", "fallbackLayoutRef", "pe", "navigate", "getRoute", "useRouter", "currentRoute", "useCurrentRoute", "useRoutePreloader", "onCanvas", "useIsOnFramerCanvas", "matchesCurrentRoute", "useLinkMatchesRoute", "fonts", "__fromCanvasComponent", "prevFontsRef", "fontsDidChange", "isShallowEqualArray", "ue", "newlyLoadedFontCount", "measureClosestComponentContainer", "implicitPathVariables", "useImplicitPathVariables", "interceptPageLinks", "event", "anchorElement", "findAnchorElement", "navigateFromAttributes", "rawHTML", "replaceFramerPageLinks", "TextComponent", "inCodeComponent", "font", "alignment", "willChangeTransform", "opacity", "transition", "name", "_initialStyle", "_widthType", "_heightType", "_usesDOMRect", "autoSize", "styleProp", "_preload", "tabIndex", "isHidden", "convertVerticalAlignment2", "key7", "asRecord", "collectTextShadowsForProps", "forceLayerBackingWithCSSProperties", "text", "isString", "replaceDraftHTMLWithText", "centeringTransformTemplate", "tabIndexProps", "getTabIndexProps", "motion", "cx", "_forwardedOverrideId", "_forwardedOverrides", "forwardedOverrideId", "ComponentContainerContext", "positionSticky", "positionStickyTop", "positionStickyRight", "positionStickyBottom", "positionStickyLeft", "externalWidth", "externalHeight", "positionFixed", "positionAbsolute", "widthType", "heightType", "isDOMLayoutAutoSized", "deviceFont", "linkTag", "linkClosingTag", "outerTag", "outerClosingTag", "blockTag", "blockClosingTag", "inlineTag", "inlineClosingTag", "textContentRegex", "_", "openingTags", "inlineClosingTag2", "closingTags", "verticalAlignment", "LOADING_LAZY_THRESHOLD", "getLoadingLazyAtYPosition", "offset", "addFonts", "component", "passedFonts", "flags", "fonts", "convertMixedFontArrayToFontBundles", "font", "getFonts", "getFontsFromSharedStyle", "convertMixedFontArrayToFontBundles", "fonts", "oldFontBundle", "fontBundles", "fontOrBundle", "isComponentFontBundle", "upgradeComponentFontV1", "componentFontBundleKey", "font", "source", "withPerformanceMarks", "prefix2", "callback", "markStart", "markEnd", "initialRouteComponent", "component", "withPreload", "useInitialRouteComponent", "routes", "homeNodeId", "_a", "InitialRouteComponent", "RouteComponent", "setRouteComponent", "ye", "ue", "MotionValue", "transformer", "v", "child", "motionValue"]
}
