{"version":3,"file":"shared-lib.BGwQiQmX.mjs","names":["React.useContext","React.useMemo","React.Fragment","React.forwardRef","useRef","React.useId","sharedStyle.className","className","RichText","sharedStyle.css","sharedStyle.fonts","useId","useRef","useState","useMemo"],"sources":["https:/framerusercontent.com/modules/M5ghbtvwPaekaVZ9RfOm/2vrtIL5qWnxmJ0HKl1Z2/KNOtWJW5N.js","https:/framerusercontent.com/modules/fB2FW2SEsqZTmAcjfMDk/pBMwzY7sTALeG5a1qOrz/aticmVSf0.js","https:/framerusercontent.com/modules/SLr2D9anHiuwFYsVaJKa/phKFgk20cA0yy6mlQBKE/VideoWordMask.js","https:/framerusercontent.com/modules/9TrBfbU748eG2XN8ds30/LsYD6LM9LJnosSkSqVbQ/siteMetadata.js"],"sourcesContent":["// Generated by Framer (2f36e3b)\nimport{fontStore}from\"framer\";fontStore.loadFonts([]);export const fonts=[{explicitInter:true,fonts:[]}];export const css=[\".framer-oy39g .framer-styles-preset-1mgq52g:not(.rich-text-wrapper), .framer-oy39g .framer-styles-preset-1mgq52g.rich-text-wrapper a { --framer-link-current-text-color: #ffffff; --framer-link-hover-text-color: rgba(255, 255, 255, 0.85); --framer-link-text-color: rgba(255, 255, 255, 0.6); }\"];export const className=\"framer-oy39g\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (25dfa11)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFontsFromSharedStyle,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/M5ghbtvwPaekaVZ9RfOm/2vrtIL5qWnxmJ0HKl1Z2/KNOtWJW5N.js\";const cycleOrder=[\"a5RvJ0wZy\",\"qzGseeDkc\"];const serializationHash=\"framer-6fenI\";const variantClassNames={a5RvJ0wZy:\"framer-v-89szot\",qzGseeDkc:\"framer-v-14vozgs\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Desktop:\"a5RvJ0wZy\",Phone:\"qzGseeDkc\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"a5RvJ0wZy\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"a5RvJ0wZy\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-89szot\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"a5RvJ0wZy\",ref:refBinding,style:{backgroundColor:\"rgb(15, 15, 15)\",borderBottomLeftRadius:999,borderBottomRightRadius:999,borderTopLeftRadius:999,borderTopRightRadius:999,...style},...addPropertyOverrides({qzGseeDkc:{\"data-framer-name\":\"Phone\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1q9o2vs\",layoutDependency:layoutDependency,layoutId:\"og8ZsNVhC\",style:{borderBottomLeftRadius:999,borderBottomRightRadius:999,borderTopLeftRadius:999,borderTopRightRadius:999},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"SW50ZXItU2VtaUJvbGQ=\",\"--framer-font-size\":\"13px\",\"--framer-font-weight\":\"600\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.6))\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"yVVEUwgkP\"},motionChild:true,nodeId:\"r6TZwY1Or\",openInNewTab:false,relValues:[],scopeId:\"aticmVSf0\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-1mgq52g\",\"data-styles-preset\":\"KNOtWJW5N\",children:\"Demo 1\"})})})}),className:\"framer-1nnigro\",fonts:[\"Inter-SemiBold\"],layoutDependency:layoutDependency,layoutId:\"r6TZwY1Or\",style:{\"--extracted-r6o4lv\":\"rgba(255, 255, 255, 0.6)\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({qzGseeDkc:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"SW50ZXItU2VtaUJvbGQ=\",\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"600\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.6))\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"yVVEUwgkP\"},motionChild:true,nodeId:\"r6TZwY1Or\",openInNewTab:false,relValues:[],scopeId:\"aticmVSf0\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-1mgq52g\",\"data-styles-preset\":\"KNOtWJW5N\",children:\"Demo 1\"})})})})}},baseVariant,gestureVariant)})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1c1jjfs\",layoutDependency:layoutDependency,layoutId:\"CUWN8AaoQ\",style:{borderBottomLeftRadius:999,borderBottomRightRadius:999,borderTopLeftRadius:999,borderTopRightRadius:999},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"SW50ZXItU2VtaUJvbGQ=\",\"--framer-font-size\":\"13px\",\"--framer-font-weight\":\"600\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.6))\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"KtF0dwwVF\"},motionChild:true,nodeId:\"dUaGiT8DP\",openInNewTab:false,relValues:[],scopeId:\"aticmVSf0\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-1mgq52g\",\"data-styles-preset\":\"KNOtWJW5N\",children:\"Demo 2\"})})})}),className:\"framer-15ve6of\",fonts:[\"Inter-SemiBold\"],layoutDependency:layoutDependency,layoutId:\"dUaGiT8DP\",style:{\"--extracted-r6o4lv\":\"rgba(255, 255, 255, 0.6)\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({qzGseeDkc:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"SW50ZXItU2VtaUJvbGQ=\",\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"600\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.6))\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"KtF0dwwVF\"},motionChild:true,nodeId:\"dUaGiT8DP\",openInNewTab:false,relValues:[],scopeId:\"aticmVSf0\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-1mgq52g\",\"data-styles-preset\":\"KNOtWJW5N\",children:\"Demo 2\"})})})})}},baseVariant,gestureVariant)})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1vxluzi\",layoutDependency:layoutDependency,layoutId:\"PoWPkAfUH\",style:{borderBottomLeftRadius:999,borderBottomRightRadius:999,borderTopLeftRadius:999,borderTopRightRadius:999},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"SW50ZXItU2VtaUJvbGQ=\",\"--framer-font-size\":\"13px\",\"--framer-font-weight\":\"600\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.6))\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"XS42NXHzy\"},motionChild:true,nodeId:\"GFvQykek3\",openInNewTab:false,relValues:[],scopeId:\"aticmVSf0\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-1mgq52g\",\"data-styles-preset\":\"KNOtWJW5N\",children:\"Demo 3\"})})})}),className:\"framer-bkof2n\",fonts:[\"Inter-SemiBold\"],layoutDependency:layoutDependency,layoutId:\"GFvQykek3\",style:{\"--extracted-r6o4lv\":\"rgba(255, 255, 255, 0.6)\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({qzGseeDkc:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"SW50ZXItU2VtaUJvbGQ=\",\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"600\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.6))\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"XS42NXHzy\"},motionChild:true,nodeId:\"GFvQykek3\",openInNewTab:false,relValues:[],scopeId:\"aticmVSf0\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-1mgq52g\",\"data-styles-preset\":\"KNOtWJW5N\",children:\"Demo 3\"})})})})}},baseVariant,gestureVariant)})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1j3ab4o\",layoutDependency:layoutDependency,layoutId:\"PHJQAhjFM\",style:{borderBottomLeftRadius:999,borderBottomRightRadius:999,borderTopLeftRadius:999,borderTopRightRadius:999},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"SW50ZXItU2VtaUJvbGQ=\",\"--framer-font-size\":\"13px\",\"--framer-font-weight\":\"600\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.6))\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"FHC41xUdI\"},motionChild:true,nodeId:\"VaNDe1X94\",openInNewTab:false,relValues:[],scopeId:\"aticmVSf0\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-1mgq52g\",\"data-styles-preset\":\"KNOtWJW5N\",children:\"Demo 4\"})})})}),className:\"framer-iphsi8\",fonts:[\"Inter-SemiBold\"],layoutDependency:layoutDependency,layoutId:\"VaNDe1X94\",style:{\"--extracted-r6o4lv\":\"rgba(255, 255, 255, 0.6)\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({qzGseeDkc:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"SW50ZXItU2VtaUJvbGQ=\",\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"600\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.6))\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"FHC41xUdI\"},motionChild:true,nodeId:\"VaNDe1X94\",openInNewTab:false,relValues:[],scopeId:\"aticmVSf0\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-1mgq52g\",\"data-styles-preset\":\"KNOtWJW5N\",children:\"Demo 4\"})})})})}},baseVariant,gestureVariant)})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1iwwwal\",layoutDependency:layoutDependency,layoutId:\"TZB0x3gCV\",style:{borderBottomLeftRadius:999,borderBottomRightRadius:999,borderTopLeftRadius:999,borderTopRightRadius:999},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"SW50ZXItU2VtaUJvbGQ=\",\"--framer-font-size\":\"13px\",\"--framer-font-weight\":\"600\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.6))\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"BbRQA3mB6\"},motionChild:true,nodeId:\"c47eGhohO\",openInNewTab:false,relValues:[],scopeId:\"aticmVSf0\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-1mgq52g\",\"data-styles-preset\":\"KNOtWJW5N\",children:\"Demo 5\"})})})}),className:\"framer-19cx91a\",fonts:[\"Inter-SemiBold\"],layoutDependency:layoutDependency,layoutId:\"c47eGhohO\",style:{\"--extracted-r6o4lv\":\"rgba(255, 255, 255, 0.6)\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({qzGseeDkc:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"SW50ZXItU2VtaUJvbGQ=\",\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"600\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.6))\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"BbRQA3mB6\"},motionChild:true,nodeId:\"c47eGhohO\",openInNewTab:false,relValues:[],scopeId:\"aticmVSf0\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-1mgq52g\",\"data-styles-preset\":\"KNOtWJW5N\",children:\"Demo 5\"})})})})}},baseVariant,gestureVariant)})})]})})})});});const css=[\".framer-6fenI.framer-1y0rz1d, .framer-6fenI .framer-1y0rz1d { display: block; }\",\".framer-6fenI.framer-89szot { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: flex-start; padding: 6px; position: relative; width: min-content; }\",\".framer-6fenI .framer-1q9o2vs, .framer-6fenI .framer-1c1jjfs, .framer-6fenI .framer-1vxluzi, .framer-6fenI .framer-1j3ab4o, .framer-6fenI .framer-1iwwwal { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; padding: 8px 14px 8px 14px; position: relative; width: min-content; }\",\".framer-6fenI .framer-1nnigro, .framer-6fenI .framer-15ve6of, .framer-6fenI .framer-bkof2n, .framer-6fenI .framer-iphsi8, .framer-6fenI .framer-19cx91a { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-6fenI.framer-v-14vozgs.framer-89szot { flex-wrap: wrap; gap: 6px; justify-content: center; padding: 4px; width: 280px; }\",\".framer-6fenI.framer-v-14vozgs .framer-1q9o2vs, .framer-6fenI.framer-v-14vozgs .framer-1c1jjfs, .framer-6fenI.framer-v-14vozgs .framer-1vxluzi, .framer-6fenI.framer-v-14vozgs .framer-1j3ab4o, .framer-6fenI.framer-v-14vozgs .framer-1iwwwal { padding: 6px 12px 6px 12px; }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 44\n * @framerIntrinsicWidth 407\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"qzGseeDkc\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FrameraticmVSf0=withCSS(Component,css,\"framer-6fenI\");export default FrameraticmVSf0;FrameraticmVSf0.displayName=\"Demo Nav\";FrameraticmVSf0.defaultProps={height:44,width:407};addPropertyControls(FrameraticmVSf0,{variant:{options:[\"a5RvJ0wZy\",\"qzGseeDkc\"],optionTitles:[\"Desktop\",\"Phone\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FrameraticmVSf0,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/hyOgCu0Xnghbimh0pE8QTvtt2AU.woff2\",weight:\"600\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/NeGmSOXrPBfEFIy5YZeHq17LEDA.woff2\",weight:\"600\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/oYaAX5himiTPYuN8vLWnqBbfD2s.woff2\",weight:\"600\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/lEJLP4R0yuCaMCjSXYHtJw72M.woff2\",weight:\"600\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/cRJyLNuTJR5jbyKzGi33wU9cqIQ.woff2\",weight:\"600\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/yDtI2UI8XcEg1W2je9XPN3Noo.woff2\",weight:\"600\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/A0Wcc7NgXMjUuFdquHDrIZpzZw0.woff2\",weight:\"600\"}]},...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FrameraticmVSf0\",\"slots\":[],\"annotations\":{\"framerColorSyntax\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicWidth\":\"407\",\"framerIntrinsicHeight\":\"44\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"qzGseeDkc\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./aticmVSf0.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useId,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";// Video/Photo/Poster each resolve to Upload (the existing File/\n// ResponsiveImage control) or URL (a plain string, for linking an external\n// asset instead of hosting it in Framer) — resolve whichever is actually in\n// use to a single src string wherever the component reads it, so every\n// render site stays agnostic to which source the user picked. Poster\n// deliberately follows `videoSource`, not a source toggle of its own.\nfunction resolveVideoSrc(item){if(!item)return undefined;return item.videoSource===\"url\"?item.videoUrl:item.video;}function resolvePhotoSrc(item){if(!item)return undefined;return item.photoSource===\"url\"?item.photoUrl:item.photo?.src;}function resolvePosterSrc(item){if(!item)return undefined;return item.videoSource===\"url\"?item.posterUrl:item.poster?.src;}// Converts the Font control's `Line` value (unitless multiplier, \"Nem\",\n// \"N%\", \"Npx\", or unset) into a plain multiplier of font-size, the same way\n// CSS line-height resolves. Falls back to CSS's own \"normal\" approximation\n// (~1.2) when unset.\nfunction parseLineHeightMultiplier(lineHeight,fontSizePx){if(lineHeight==null)return 1.2;if(typeof lineHeight===\"number\")return lineHeight;const str=lineHeight.trim();if(str.endsWith(\"%\"))return Number.parseFloat(str)/100;if(str.endsWith(\"px\"))return Number.parseFloat(str)/(fontSizePx||1);if(str.endsWith(\"em\"))return Number.parseFloat(str);const num=Number.parseFloat(str);return Number.isFinite(num)?num:1.2;}// Framer's native Shadow control (`ControlType.BoxShadow`) emits a plain\n// CSS `box-shadow` string — one or more comma-separated `X Y blur spread\n// color` layers, optionally `inset`. There's no `text-shadow`/`filter:\n// drop-shadow` equivalent to reuse directly: `drop-shadow()` shares\n// box-shadow's X/Y/blur/color but has no `spread` and can't do `inset` at\n// all. Converts each layer into a `drop-shadow(X Y blur color)` filter\n// function (space-separated, chainable in one `filter` property), dropping\n// `spread` and silently skipping any `inset` layer (fundamentally different\n// look, no equivalent — better to omit than render it wrong).\nfunction boxShadowToDropShadowFilter(value){if(!value)return undefined;const layers=value.split(/,(?![^(]*\\))/)// split on top-level commas only, not inside rgba(...)\n.map(layer=>{const tokens=layer.trim().match(/(?:[^\\s(]+(?:\\([^)]*\\))?)+/g);if(!tokens)return null;if(tokens.includes(\"inset\"))return null;const nums=tokens.filter(t=>!Number.isNaN(parseFloat(t)));const color=tokens.find(t=>Number.isNaN(parseFloat(t)));if(nums.length<3||!color)return null;const[x,y,blur]=nums;return`drop-shadow(${x} ${y} ${blur} ${color})`;}).filter(v=>Boolean(v));return layers.length?layers.join(\" \"):undefined;}/**\n * VIDEO WORD MASK\n *\n * Each letter of the text acts as a mask revealing its own media (video or\n * photo). Provide a bold display font in the Font control and a list of\n * media items (upload or URL) — items are matched to letters 1-for-1 in\n * order (the 1st item goes on the 1st letter, etc). Letters beyond the end\n * of the list simply show the solid Letter Color, same as any letter with\n * an empty item. Media can stay always visible, or only reveal on hover per\n * letter (resting state shows the solid-color letter).\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function VideoWordMask(props){const{text=\"WORKS\",tag=\"h1\",uppercase=true,font={fontSize:160,variant:\"Black\",letterSpacing:\"-0.02em\",lineHeight:\"0.9em\",textAlign:\"center\"},letterColor=\"#000000\",fitWidth=false,mediaMode=\"multiple\",media=[{kind:\"video\"}],singleMedia={kind:\"video\"},revealMode=\"always\",stickyReveal=false,singleHoverTrigger=\"perLetter\",fadeDuration=250,stroke={enabled:false,width:2,keepOnMedia:true},shadow,autoplay=true,hoverToPlay=false,loop=true,overlay={enabled:false,color:\"rgba(0,0,0,0.35)\",fadeOnHover:true,blendMode:\"normal\"},style}=props;const displayText=uppercase?text.toUpperCase():text;// Stroke/Stroke Width/Keep on Media were three separate top-level\n// controls until now — grouped into one Object control (matching\n// Overlay's own pattern) to cut panel clutter. Local aliases here so\n// every existing usage site below (unchanged) still reads a plain\n// `letterOutline`/`letterOutlineWidth`/`strokeOnMedia`.\nconst letterOutline=stroke.enabled;const letterOutlineWidth=stroke.width;const strokeOnMedia=stroke.keepOnMedia;const isHoverMode=revealMode===\"hover\";const isSingleMode=mediaMode===\"single\";// Only meaningful in Always Visible + Autoplay off — guard the runtime\n// behavior itself, not just the panel control's `hidden`, so a stale\n// `true` left over from a different Reveal/Autoplay combo can't do\n// anything unexpected.\nconst hoverToPlayActive=!isHoverMode&&!autoplay&&hoverToPlay;const rawId=useId();const uid=rawId.replace(/[^a-zA-Z0-9]/g,\"\");const textId=`vwm-text-${uid}`;const outerRef=useRef(null);const containerRef=useRef(null);const svgRef=useRef(null);const textRef=useRef(null);const proberRef=useRef(null);const videoRefs=useRef([]);const wordVideoRef=useRef(null);const[metrics,setMetrics]=useState(null);const[availableWidth,setAvailableWidth]=useState(null);const[inView,setInView]=useState(true);const[hoveredIndex,setHoveredIndex]=useState(-1);const[revealedLetters,setRevealedLetters]=useState(()=>new Set);const isStatic=useIsStaticRenderer();// Single media mode + On Hover: whether hovering ANY letter reveals the\n// shared video across every letter at once (\"wholeWord\" — more coherent\n// with there being only one underlying video for the whole word), or\n// only the one letter under the pointer (\"perLetter\", the original\n// per-letter behavior, unchanged default). No-op outside Single+Hover.\nconst isWordHoverMode=isSingleMode&&isHoverMode&&singleHoverTrigger===\"wholeWord\";function isLetterRevealed(i){if(isWordHoverMode){return stickyReveal?revealedLetters.size>0:hoveredIndex>=0;}return stickyReveal?revealedLetters.has(i):hoveredIndex===i;}// Live pointer-over-letter state, independent of Sticky/Reveal — used\n// only for the Overlay's own \"Fade on Hover\" veil, which should always\n// track the real live hover (fade out while actually hovered, fade back\n// in the instant the pointer leaves) even when Sticky keeps the\n// media itself permanently revealed.\nfunction isLetterLiveHovered(i){if(isWordHoverMode)return hoveredIndex>=0;return hoveredIndex===i;}useEffect(()=>{let cancelled=false;async function measure(){if(typeof document===\"undefined\")return;const size=typeof font.fontSize===\"number\"?font.fontSize:Number.parseFloat(String(font.fontSize))||16;// Wait for the chosen webfont to actually finish loading first —\n// measuring against a fallback font bakes in wrong metrics that\n// never get corrected once the real font swaps in.\nif(document.fonts){const weight=font.fontWeight??400;const fontStyle=font.fontStyle??\"normal\";const family=font.fontFamily??\"sans-serif\";try{await document.fonts.load(`${fontStyle} ${weight} ${size}px ${family}`,displayText);}catch{// ignore — fall through to fonts.ready below\n}try{await document.fonts.ready;}catch{// ignore\n}}if(cancelled)return;const textEl=textRef.current;const proberEl=proberRef.current;if(!textEl||!proberEl)return;try{const bbox=textEl.getBBox();const len=textEl.getNumberOfChars();const letters=[];for(let i=0;i<len;i++){const char=displayText[i];if(!char||/\\s/.test(char))continue;const start=textEl.getStartPositionOfChar(i);// Negative/tight letter-spacing (near-mandatory on bold\n// display faces) makes the browser report a SHRUNKEN\n// extent for `textEl.getExtentOfChar` — it reflects the\n// spacing-reduced advance, not the glyph's true ink\n// width, so sizing the video/photo box from it clips the\n// glyph. Measure this character ALONE (no letter-spacing\n// — spacing only affects gaps between glyphs, never a\n// single glyph's own shape) to get its true width, then\n// anchor that at the real, tracked pen position.\nproberEl.textContent=char;const trueExtent=proberEl.getExtentOfChar(0);// Same isolated prober, but its own bbox instead of the\n// char's advance box — gives this one glyph's true\n// vertical ink range (e.g. \"O\" is shorter than \"K\"),\n// independent of the word's shared aggregate height.\n// `proberEl`'s own bbox.y is relative to ITS baseline at\n// y=0, so add the real tracked baseline position\n// (start.y) to place it correctly in word-space.\nconst glyphBox=proberEl.getBBox();letters.push({char,x:start.x+trueExtent.x,width:trueExtent.width,startX:start.x,startY:start.y,glyphY:start.y+glyphBox.y,glyphHeight:glyphBox.height});}if(!cancelled){// Reserve vertical space based on the Font control's own\n// `Line` value (like real line-height), not just the\n// tight ink bbox of whatever characters happen to be in\n// THIS word — a plain word and one with accents/\n// descenders would otherwise get inconsistent heights\n// (and inconsistent hover-active zones) at the same font\n// size. Never shrinks below the real ink bbox though —\n// Line set smaller than the glyphs need still shows\n// everything, just without extra breathing room, same\n// guarantee as before.\nconst lineHeightMultiplier=parseLineHeightMultiplier(font.lineHeight,size);const totalHeight=Math.max(bbox.height,size*lineHeightMultiplier);const extraSpace=totalHeight-bbox.height;setMetrics({y:bbox.y-extraSpace/2,height:totalHeight,inkY:bbox.y,inkHeight:bbox.height,width:bbox.width,letters});}}catch{if(!cancelled)setMetrics(null);}}setMetrics(null);measure();return()=>{cancelled=true;};},[displayText,font.fontFamily,font.fontWeight,font.fontStyle,font.fontSize,font.letterSpacing,font.lineHeight]);useEffect(()=>{if(isStatic||typeof window===\"undefined\")return;const el=containerRef.current;if(!el)return;const observer=new IntersectionObserver(entries=>setInView(entries[0]?.isIntersecting??true),{threshold:.05});observer.observe(el);return()=>observer.disconnect();},[isStatic]);// Fit Width: track the width the outer box is actually given (by\n// Framer's own Fixed/Fill sizing on the instance, via `style`) so the\n// font size can be scaled to exactly fill it. Only observes when\n// Fit Width is on — otherwise the outer box just hugs its content and\n// there's no \"available width\" to fit into.\nuseEffect(()=>{if(!fitWidth||typeof window===\"undefined\")return;const el=outerRef.current;if(!el)return;// Read the current width immediately via getBoundingClientRect,\n// not just from the observer's own first callback — belt-and-\n// suspenders against any browser/timing case where a\n// ResizeObserver's initial callback is delayed or never fires with\n// a real (non-zero) size (seen in the wild: Firefox left this\n// permanently `null`, and since Fit Width's content stays hidden\n// until `availableWidth` is set — see `contentReady` below — the\n// whole component rendered fully blank there, not just unscaled).\nconst initialWidth=el.getBoundingClientRect().width;if(initialWidth)setAvailableWidth(initialWidth);const observer=new ResizeObserver(entries=>{const width=entries[0]?.contentRect.width;if(width)setAvailableWidth(width);});observer.observe(el);// Second safety net: if NEITHER of the above ever produces a\n// reading (truly zero width at mount, and the box never resizes\n// afterward — an edge case, but \"permanently invisible\" is a much\n// worse failure than \"briefly shows at the unscaled size\"), force\n// a fallback after 1s so `contentReady` can never get stuck forever.\nconst timeout=window.setTimeout(()=>setAvailableWidth(w=>w!=null?w:0),1e3);return()=>{observer.disconnect();window.clearTimeout(timeout);};},[fitWidth]);// Fit Width: how much bigger/smaller the natural (Font control's own\n// Size) text is than the available width. SVG glyph metrics scale\n// exactly and proportionally with font-size (vector outlines, not\n// rasterized/hinted pixels), so multiplying every already-measured\n// coordinate by this factor is mathematically identical to re-measuring\n// from scratch at the scaled size — no second async measurement pass\n// needed.\nconst fitScale=fitWidth&&metrics&&availableWidth&&metrics.width>0?availableWidth/metrics.width:1;const renderMetrics=useMemo(()=>{if(!metrics)return null;if(fitScale===1)return metrics;return{y:metrics.y*fitScale,width:metrics.width*fitScale,height:metrics.height*fitScale,inkY:metrics.inkY*fitScale,inkHeight:metrics.inkHeight*fitScale,letters:metrics.letters.map(letter=>({char:letter.char,x:letter.x*fitScale,width:letter.width*fitScale,startX:letter.startX*fitScale,startY:letter.startY*fitScale,glyphY:letter.glyphY*fitScale,glyphHeight:letter.glyphHeight*fitScale}))};},[metrics,fitScale]);// Fit Width needs a real `availableWidth` reading from the ResizeObserver\n// before `fitScale` means anything — until then it silently falls back\n// to 1 (unscaled), so the SVG would briefly paint at the Font control's\n// raw, un-fitted size and then visibly jump to the correct fitted size\n// a frame later. Keep the real content hidden until both the glyph\n// measurement AND (when Fit Width is on) the width reading are in, so\n// there's nothing to paint at the wrong size in the first place — a\n// brief blank instead of a flash. No effect when Fit Width is off,\n// since there's no second size to jump to there.\n// `isStatic` (canvas/export/thumbnail) is always treated as ready — a\n// one-shot snapshot render has no guarantee the ResizeObserver ever\n// gets a chance to fire before it's captured, and a permanently blank\n// thumbnail would be worse than an occasional unscaled one there.\nconst contentReady=Boolean(renderMetrics)&&(!fitWidth||availableWidth!=null||isStatic);// The glyph shapes drawn *inside* the masks must be sized to match\n// `renderMetrics`'s scaled coordinate space, or the mask's ink and its\n// own window would disagree. Only this render-time font size scales;\n// the measurement-only master/prober texts stay at the Font control's\n// own Size, since the natural (unscaled) width is what `fitScale` is\n// computed from in the first place.\nconst effectiveFontSize=fitScale===1?font.fontSize:(typeof font.fontSize===\"number\"?font.fontSize:Number.parseFloat(String(font.fontSize))||16)*fitScale;// Outline Only (Hover mode): stroke width for the resting-state glyph\n// outline, scaled alongside the font size so it stays visually\n// proportional when Fit Width scales the render up or down.\nconst effectiveOutlineWidth=fitScale===1?letterOutlineWidth:letterOutlineWidth*fitScale;const shadowFilter=boxShadowToDropShadowFilter(shadow);// Hover tracking: a single listener converts pointer position into\n// \"which letter\" using the same measured x-ranges used to lay the\n// letters out. Needed both for Reveal: On Hover, and for Always Visible\n// + Autoplay off + Play on Hover.\n//\n// Deliberately goes through the SVG's own screen CTM (getScreenCTM,\n// inverted) rather than a naive \"mouse minus container rect.left/top\"\n// calculation — the outer instance frame Framer actually lays out isn't\n// guaranteed to match `metrics` exactly (e.g. Framer's own auto-height\n// heuristic for a Font-control-driven component can end up taller than\n// our real content, which our default preserveAspectRatio=\"xMidYMid\n// meet\" then centers/letterboxes rather than stretches — undistorted,\n// but no longer a 1:1 pixel mapping). getScreenCTM accounts for\n// whatever that mapping actually is, so hovering only activates a\n// letter while the pointer is really over its glyph, regardless of any\n// extra frame padding above/below.\nuseEffect(()=>{if(isStatic||!(isHoverMode||hoverToPlayActive)||!renderMetrics||typeof window===\"undefined\")return;const el=containerRef.current;const svgEl=svgRef.current;if(!el||!svgEl)return;function handleMove(e){const ctm=svgEl.getScreenCTM();if(!ctm)return;const pt=svgEl.createSVGPoint();pt.x=e.clientX;pt.y=e.clientY;const svgP=pt.matrixTransform(ctm.inverse());// Tight ink bounds, not the line-height-padded box — hovering\n// in the extra breathing room `Line` adds above/below the word\n// shouldn't count as hovering the letter itself.\nif(svgP.y<renderMetrics.inkY||svgP.y>renderMetrics.inkY+renderMetrics.inkHeight){setHoveredIndex(-1);return;}const idx=renderMetrics.letters.findIndex(letter=>svgP.x>=letter.x&&svgP.x<=letter.x+letter.width);setHoveredIndex(idx);}function handleLeave(){setHoveredIndex(-1);}el.addEventListener(\"pointermove\",handleMove);el.addEventListener(\"pointerleave\",handleLeave);return()=>{el.removeEventListener(\"pointermove\",handleMove);el.removeEventListener(\"pointerleave\",handleLeave);};},[isStatic,isHoverMode,hoverToPlayActive,renderMetrics]);// Sticky Reveal: once a letter has been hovered, keep it revealed for\n// good — a hover only ever ADDS to this set, never removes from it.\nuseEffect(()=>{if(!stickyReveal||hoveredIndex<0)return;setRevealedLetters(prev=>prev.has(hoveredIndex)?prev:new Set(prev).add(hoveredIndex));},[stickyReveal,hoveredIndex]);// A new text/font layout invalidates any previously-unlocked letters.\nuseEffect(()=>{setRevealedLetters(new Set);},[metrics]);// Always mode: every letter's video plays continuously (or, in Single\n// media mode, the one shared word-wide video) — unless Autoplay is off\n// and Play on Hover is on, in which case only the letter(s) currently\n// under the pointer play (any letter, for the one shared Single video).\nuseEffect(()=>{if(isStatic||isHoverMode)return;const applyPlayback=(videoEl,shouldPlay)=>{if(!videoEl)return;if(inView&&shouldPlay)videoEl.play().catch(()=>{});else videoEl.pause();};if(isSingleMode){const shouldPlay=autoplay||hoverToPlayActive&&hoveredIndex>=0;applyPlayback(wordVideoRef.current,shouldPlay);}else{videoRefs.current.forEach((videoEl,i)=>{const shouldPlay=autoplay||hoverToPlayActive&&hoveredIndex===i;applyPlayback(videoEl,shouldPlay);});}},[inView,autoplay,hoverToPlayActive,hoveredIndex,metrics,isStatic,isHoverMode,isSingleMode]);// Hover mode: the revealed letter's video plays (in Sticky Reveal, every\n// unlocked letter keeps playing; otherwise only the one under the\n// pointer). Others pause and reset so a later reveal starts fresh.\n// Deliberately NOT gated on `autoplay` — in Hover mode, revealing a\n// letter *is* the play trigger; there's no useful \"reveal it but don't\n// play it\" state, so Autoplay is hidden from the panel entirely here\n// (see its `hidden` callback below).\nuseEffect(()=>{if(isStatic||!isHoverMode)return;videoRefs.current.forEach((videoEl,i)=>{if(!videoEl)return;const shouldPlay=isLetterRevealed(i);if(inView&&shouldPlay){videoEl.play().catch(()=>{});}else if(!shouldPlay){videoEl.pause();videoEl.currentTime=0;}else{videoEl.pause();}});},[inView,metrics,isStatic,isHoverMode,hoveredIndex,stickyReveal,revealedLetters,isSingleMode,singleHoverTrigger]);const TextTag=tag;const fillStyle={width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\"};// Styles the fallback <TextTag> only — never visible once `renderMetrics`\n// exists (opacity:0, absolutely positioned, no layout weight), so its\n// own dimensions never affect what the user sees. Deliberately does NOT\n// use `font.lineHeight` (unlike every other Font sub-value here): the\n// final SVG render is sized from real glyph bbox metrics, never from\n// CSS line-height, so line-height has always been inert for the actual\n// result. A small fixed `lineHeight: 1.1` here — tight, with a little\n// room for tall glyphs/accents — decoupled from the user's own Line\n// value, so if Framer's own auto-height sizing for this instance ever\n// samples this fallback element's size, that sample stays small and\n// constant instead of growing with whatever Line the user picks.\nconst textStyle={margin:0,padding:0,fontFamily:font.fontFamily,fontWeight:font.fontWeight,fontStyle:font.fontStyle,fontSize:font.fontSize,letterSpacing:font.letterSpacing,lineHeight:1.1,textAlign:font.textAlign};// Draws the mask glyphs — uses `effectiveFontSize` (the Fit Width\n// -scaled size, or just the Font control's own Size when Fit Width is\n// off) so the ink matches the scaled coordinate space in\n// `renderMetrics`.\nconst glyphStyle={fontFamily:font.fontFamily,fontWeight:font.fontWeight,fontStyle:font.fontStyle,fontSize:effectiveFontSize};// Wraps resolved media content with a color veil on top — darkens,\n// lightens, or tints depending purely on the chosen color's own alpha,\n// no separate mode/opacity control needed. Applied everywhere media\n// renders (Always, Hover, static) so it reads as one consistent look.\n// `isHovered` is optional (defaults to false, e.g. in a context with no\n// hover tracking at all) — when `Fade on Hover` is on, the veil itself\n// fades away while the pointer is really over that content, and back in\n// when it leaves, independent of Sticky/Reveal state.\nfunction withOverlay(node,isHovered=false){if(!node||!overlay.enabled)return node;return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",height:\"100%\"},children:[node,/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,background:overlay.color,pointerEvents:\"none\",opacity:overlay.fadeOnHover&&isHovered?0:1,transition:\"opacity 200ms ease\",mixBlendMode:overlay.blendMode}})]});}// Defense-in-depth against the SVG `mask` transiently failing to apply\n// (a known class of browser bug where a masked `foreignObject` can\n// briefly render unmasked right as an ANCESTOR gets/loses its own GPU\n// compositor layer — exactly what a Framer \"Appear Effect\" on this\n// instance or its parent triggers) — if that happens, the full,\n// word-height-tall video/photo box would otherwise flash visible as\n// thin bands above/below the letter. Wraps the per-letter content in a\n// real HTML `overflow: hidden` window sized to THIS letter's own true\n// vertical ink range (+ a small margin), independent of the mask\n// entirely — even if the mask fails, nothing can paint outside this\n// window. The inner content div stays the full box height/position\n// (shifted to compensate) so object-fit:cover's crop/zoom is completely\n// unaffected — this only tightens what's visible, never how the\n// video/photo is framed.\n// A hairline (~1px) seam can still show at the clip window's own edge —\n// either the mask's true edge and this window's edge landing on\n// different sub-pixel positions, or a residual sliver of the\n// mask-failure bands from round 32 too thin to fully hide with an\n// outward margin. Rather than pad OUTWARD (which only pushes a\n// same-sized seam a bit further out, still inside the visible glyph),\n// pad INWARD by a couple px — erodes the video/photo's visible edge\n// slightly (imperceptible at normal sizes, there's no base color layer\n// under revealed content for it to look like a \"gap\") but guarantees\n// nothing ever paints at the mask's own true boundary, which is where a\n// compositor seam actually forms. Rounding every pixel value kills a\n// second, independent source of hairline seams: sub-pixel clip/position\n// values landing on different device pixels than the mask's own\n// rasterization.\nfunction insetClip(node,rawY,rawHeight,boxYForClip,boxHForClip){const SAFETY_INSET=2;const rawTop=rawY-boxYForClip+SAFETY_INSET;const clipTop=Math.round(Math.max(0,Math.min(rawTop,boxHForClip)));const clipHeight=Math.round(Math.max(0,Math.min(boxHForClip-clipTop,rawHeight-SAFETY_INSET*2)));return /*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:clipTop,width:\"100%\",height:clipHeight,overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:-clipTop,width:\"100%\",height:Math.round(boxHForClip)},children:node})});}// Per-letter version: clips to THIS glyph's own true vertical ink range.\nfunction clipToGlyph(node,letter,boxYForClip,boxHForClip){return insetClip(node,letter.glyphY,letter.glyphHeight,boxYForClip,boxHForClip);}// Word-wide version (Single + Always's shared backdrop) — there's no\n// single letter's ink range to clip to here (the backdrop has to span\n// every letter's own ink at once), so this just insets the box itself\n// by the same safety margin on both edges. Missed in round 33 (only the\n// per-letter sites got it) — same mask-failure risk applies here too.\nfunction clipToWord(node,boxYForClip,boxHForClip){return insetClip(node,boxYForClip,boxHForClip,boxYForClip,boxHForClip);}return /*#__PURE__*/_jsx(\"div\",{ref:outerRef,style:{position:\"relative\",// Height was locked to Auto (hug content) until now — the\n// panel offers Fixed/Fill height the same way it already\n// does for width. There's no \"Fit Height\" scaling to match\n// (that's a separate, unrequested feature) — a Fixed height\n// just gives this box real vertical room via `...style`\n// below; `display:flex` + `alignItems:center` centers the\n// actual (always naturally-sized) content inside it. A\n// no-op in every existing case: Auto height means this box\n// and its content are already the same size, so centering\n// has nothing to do.\ndisplay:\"flex\",alignItems:\"center\",// Fit Width off: hug content, same as always — `...style`\n// below can still override this (e.g. a user-set Fixed\n// width), same as before Fit Width existed. Fit Width on:\n// default to 100% so this box actually stretches to fill\n// whatever space its own parent gives it (a Stack's \"Fill\"\n// sizing on a child is typically expressed via flex on an\n// ancestor wrapper, not necessarily a literal `style.width`\n// string reaching this component's own props) — `...style`\n// still wins when Framer *does* pass an explicit width (e.g.\n// Fixed). Either way this is the box the ResizeObserver\n// above measures as the \"available width\" to fill.\n...fitWidth?{width:\"100%\"}:{width:\"max-content\"},...style},children:/*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{position:\"relative\",display:\"inline-block\",width:renderMetrics?renderMetrics.width:\"max-content\",height:renderMetrics?renderMetrics.height:undefined},children:[/*#__PURE__*/_jsx(TextTag,{style:{...textStyle,color:letterColor,whiteSpace:\"nowrap\",userSelect:\"none\",// Hidden once the SVG has real content to show\n// (`renderMetrics`), same as always — but with Fit\n// Width on, hidden from the very first render\n// instead, before any measurement has even started.\n// Without this, this real HTML fallback briefly\n// shows the word at the Font control's raw,\n// un-fitted size (this is a plain CSS box, not\n// gated by the SVG's own `contentReady` opacity from\n// round 26 — that only ever covered the SVG). Only\n// applies when Fit Width is on, since without it\n// there's no \"wrong size\" to flash at all — an\n// accepted trade-off: a Fit-Width instance with no\n// JS (crawler, no-JS visitor) now shows nothing\n// instead of unscaled text, but this component was\n// already fully JS-dependent for its real content\n// either way.\n...renderMetrics||fitWidth?{position:\"absolute\",inset:0,opacity:0,pointerEvents:\"none\"}:{}},children:displayText}),shadowFilter&&renderMetrics&&/*#__PURE__*/_jsx(\"svg\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",pointerEvents:\"none\",overflow:\"visible\",filter:shadowFilter},viewBox:`0 ${renderMetrics.y} ${renderMetrics.width} ${renderMetrics.height}`,children:renderMetrics.letters.map((letter,i)=>/*#__PURE__*/_jsx(\"text\",{x:letter.startX,y:letter.startY,fill:letterColor,style:glyphStyle,children:letter.char},`shadow-${i}`))}),/*#__PURE__*/_jsxs(\"svg\",{ref:svgRef,\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",pointerEvents:\"none\",// Every mask/foreignObject is built to stay within\n// [0, metrics.width] x [metrics.y, metrics.y+height] by\n// construction, matching the viewBox exactly — nothing\n// should ever legitimately paint outside it. Clipping\n// here is a safety net: if the Framer canvas ever\n// captures a frame where a foreignObject briefly renders\n// at stale/incorrect geometry (a timing quirk specific\n// to canvas/export snapshots, not reproducible on the\n// published site), this stops it from becoming a\n// visible streak escaping the component's own box.\noverflow:\"hidden\",opacity:contentReady?1:0,// No transition on static renders — isStatic is always\n// \"ready\" from the very first paint, so there's nothing\n// to fade from there, only a risk of a canvas/export\n// snapshot capturing a mid-fade frame and looking like a\n// faint, washed-out render instead of the real content.\ntransition:isStatic?undefined:\"opacity 150ms ease\"},viewBox:renderMetrics?`0 ${renderMetrics.y} ${renderMetrics.width} ${renderMetrics.height}`:undefined,children:[/*#__PURE__*/_jsx(\"text\",{id:textId,ref:textRef,x:0,y:0,\"aria-hidden\":\"true\",style:{fontFamily:font.fontFamily,fontWeight:font.fontWeight,fontStyle:font.fontStyle,fontSize:font.fontSize,letterSpacing:font.letterSpacing,opacity:0,pointerEvents:\"none\"},children:displayText}),/*#__PURE__*/_jsx(\"text\",{ref:proberRef,x:0,y:0,\"aria-hidden\":\"true\",style:{fontFamily:font.fontFamily,fontWeight:font.fontWeight,fontStyle:font.fontStyle,fontSize:font.fontSize,opacity:0,pointerEvents:\"none\"}}),/*#__PURE__*/_jsxs(\"defs\",{children:[renderMetrics?.letters.map((letter,i)=>/*#__PURE__*/_jsx(\"mask\",{id:`vwm-mask-${uid}-${i}`,maskUnits:\"userSpaceOnUse\",// Full word width, NOT this letter's own tight\n    // x/width — the isolated single-character <text>\n    // below is re-positioned via\n    // getStartPositionOfChar, and its rendered ink\n    // can spill a hair past getExtentOfChar's exact\n    // box (antialiasing, sub-pixel rounding). A window\n    // this generous never clips the glyph itself;\n    // correctness comes only from the glyph content\n    // being isolated, not from this window's size.\n    x:0,y:renderMetrics.y,width:renderMetrics.width,height:renderMetrics.height,children:/*#__PURE__*/_jsx(\"text\",{x:letter.startX,y:letter.startY,fill:\"#fff\",style:glyphStyle,children:letter.char})},`mask-${i}`)),!isHoverMode&&isSingleMode&&renderMetrics&&/*#__PURE__*/_jsx(\"mask\",{id:`vwm-wordmask-${uid}`,maskUnits:\"userSpaceOnUse\",x:0,y:renderMetrics.y,width:renderMetrics.width,height:renderMetrics.height,children:renderMetrics.letters.map((letter,i)=>/*#__PURE__*/_jsx(\"text\",{x:letter.startX,y:letter.startY,fill:\"#fff\",style:glyphStyle,children:letter.char},i))})]}),(()=>{// Single media mode, Always reveal: resolve the one\n// shared item once, framed word-wide, revealed through\n// every letter at once via the union mask above.\nif(isHoverMode||!isSingleMode||!renderMetrics)return null;const item=singleMedia;const videoSrc=resolveVideoSrc(item);const photoSrc=resolvePhotoSrc(item);const posterSrc=resolvePosterSrc(item);let wordContent=null;if(item){if(item.kind===\"photo\"){if(photoSrc){wordContent=/*#__PURE__*/_jsx(\"img\",{src:photoSrc,alt:\"\",style:fillStyle});}}else if(videoSrc){if(isStatic){// A raw, non-playing <video> here risks the\n// GPU-compositor seam described where\n// `OVERLAP` is defined below (a <video>\n// element gets its own compositor layer, and\n// that layer's edge can show a seam against\n// its masked foreignObject neighbor even\n// after a frame has decoded) — a generous\n// OVERLAP mitigates it, but showing the\n// Poster when one exists is still the only\n// fully reliable option. Per explicit user\n// preference, still show the paused video\n// when there's no Poster, because a flat\n// Letter Color looks nothing like the real\n// result — an accurate static preview (worth\n// the small residual seam risk) beats a safe\n// but misleading one.\nwordContent=posterSrc?/*#__PURE__*/_jsx(\"img\",{src:posterSrc,alt:\"\",style:fillStyle}):/*#__PURE__*/_jsx(\"video\",{src:videoSrc,muted:true,playsInline:true,preload:\"auto\",style:fillStyle});}else{wordContent=/*#__PURE__*/_jsx(\"video\",{ref:el=>{wordVideoRef.current=el;},src:videoSrc,// Play on Hover: the video is\n// visible from the start, paused —\n// showing its own first decoded\n// frame instead of a poster avoids a\n// poster-swaps-to-video flash the\n// instant playback starts.\nposter:hoverToPlayActive?undefined:posterSrc,muted:true,playsInline:true,disablePictureInPicture:true,loop:loop,preload:inView?\"auto\":\"metadata\",style:fillStyle});}}}if(!wordContent)return null;return /*#__PURE__*/_jsx(\"foreignObject\",{x:0,y:renderMetrics.inkY,width:renderMetrics.width,height:renderMetrics.inkHeight,mask:`url(#vwm-wordmask-${uid})`,children:clipToWord(withOverlay(wordContent,hoveredIndex>=0),renderMetrics.inkY,renderMetrics.inkHeight)});})(),!isHoverMode&&isSingleMode&&renderMetrics&&letterOutline&&strokeOnMedia&&Boolean(singleMedia?.kind===\"photo\"?resolvePhotoSrc(singleMedia):resolveVideoSrc(singleMedia))&&renderMetrics.letters.map((letter,i)=>/*#__PURE__*/_jsx(\"text\",{x:letter.startX,y:letter.startY,fill:\"none\",stroke:letterColor,strokeWidth:effectiveOutlineWidth,style:glyphStyle,pointerEvents:\"none\",children:letter.char},`word-stroke-${i}`)),renderMetrics?.letters.map((letter,i)=>{// Single media mode + Always reveal already painted\n// everything above (one shared word-wide backdrop) —\n// nothing left to draw per letter in that combination,\n// as long as that shared item actually resolved to real\n// content. If it's still empty (nothing uploaded yet),\n// fall through so every letter shows its plain\n// Letter Color below, same as any other \"no media\" case.\nconst singleAlwaysCovered=!isHoverMode&&isSingleMode&&Boolean(singleMedia?.kind===\"photo\"?resolvePhotoSrc(singleMedia):resolveVideoSrc(singleMedia));if(singleAlwaysCovered)return null;// 1-for-1 in Multiple mode: the Nth media item belongs\n// only to the Nth letter, no cycling — a letter past the\n// end of the list (or an empty item) shows the plain\n// Letter Color. In Single mode every letter shares the\n// same one item, framed word-wide so its crop/zoom stays\n// identical (and, in Hover, visually continuous) across\n// letters — only Hover reaches this branch for Single\n// mode, since Always was fully handled above.\nconst item=isSingleMode?singleMedia:i<media.length?media[i]:undefined;const maskId=`vwm-mask-${uid}-${i}`;// Horizontal overlap between adjacent letters' boxes\n// (each is its own foreignObject/compositing surface,\n// and a real <video> inside one gets promoted to its\n// own GPU compositor layer) — abutting neighbors exactly\n// can leave a hairline seam where two separate\n// hardware-composited layers meet, worst with <video>\n// content. Confirmed via an isolated test that a small\n// overlap (1.5) doesn't fully hide it for real <video>\n// elements but a larger one (8) reliably does. The\n// per-letter mask still isolates the true glyph shape,\n// so overlapping the raw boxes can't reveal anything\n// beyond that shape; it only removes the seam.\nconst OVERLAP=8;const boxX=isSingleMode?0:letter.x-OVERLAP;// Tight ink box, not the line-height-padded one — the\n// video/photo's own object-fit:cover framing must stay\n// independent of `Line`, or the crop/zoom would visibly\n// drift every time someone adjusts line-height even\n// though the visible glyph itself hasn't changed size.\nconst boxY=renderMetrics.inkY;const boxW=isSingleMode?renderMetrics.width:Math.max(letter.width+OVERLAP*2,.01);const boxH=renderMetrics.inkHeight;const itemVideoSrc=resolveVideoSrc(item);const itemPhotoSrc=resolvePhotoSrc(item);const itemPosterSrc=resolvePosterSrc(item);let content=null;if(item&&!(isStatic&&isHoverMode)){if(item.kind===\"photo\"){if(itemPhotoSrc){content=/*#__PURE__*/_jsx(\"img\",{src:itemPhotoSrc,alt:\"\",style:fillStyle});}}else if(itemVideoSrc){if(isStatic){// See the matching comment in the Single\n// media mode branch above.\ncontent=itemPosterSrc?/*#__PURE__*/_jsx(\"img\",{src:itemPosterSrc,alt:\"\",style:fillStyle}):/*#__PURE__*/_jsx(\"video\",{src:itemVideoSrc,muted:true,playsInline:true,preload:\"auto\",style:fillStyle});}else{content=/*#__PURE__*/_jsx(\"video\",{ref:el=>{videoRefs.current[i]=el;},src:itemVideoSrc,// See the matching comment in the\n// Single media mode branch above.\nposter:hoverToPlayActive?undefined:itemPosterSrc,muted:true,playsInline:true,disablePictureInPicture:true,loop:loop,preload:inView?\"auto\":\"metadata\",style:fillStyle});}}}const isHovered=isLetterRevealed(i);// Stroke: the resting/idle letter renders as a real\n// stroked SVG glyph (true text-stroke, not a filled\n// shape) instead of the usual solid-color masked fill —\n// an unmasked <text> since a stroke outline needs no\n// clipping of its own. Only affects the idle state; the\n// revealed media is untouched either way. The `Stroke`\n// control is always shown in the panel regardless of\n// `Reveal` (better UX — no need to switch to On Hover\n// just to find/set it up), but it only ever has a\n// visible effect in Hover mode, since Always mode has no\n// idle/resting state to stroke — gating on `isHoverMode`\n// here (code-only, not a panel `hidden`) means Always\n// mode never pays for the extra stroked-text render.\nconst useOutline=isHoverMode&&letterOutline;return /*#__PURE__*/_jsxs(\"g\",{children:[!content&&useOutline&&/*#__PURE__*/_jsx(\"text\",{x:letter.startX,y:letter.startY,fill:\"none\",stroke:letterColor,strokeWidth:effectiveOutlineWidth,style:glyphStyle,children:letter.char}),!content&&!useOutline&&/*#__PURE__*/_jsx(\"rect\",{x:boxX,y:boxY,width:boxW,height:boxH,fill:letterColor,mask:`url(#${maskId})`}),content&&!isHoverMode&&/*#__PURE__*/_jsx(\"foreignObject\",{x:boxX,y:boxY,width:boxW,height:boxH,mask:`url(#${maskId})`,children:clipToGlyph(withOverlay(content,isLetterLiveHovered(i)),letter,boxY,boxH)}),content&&!isHoverMode&&letterOutline&&strokeOnMedia&&/*#__PURE__*/_jsx(\"text\",{x:letter.startX,y:letter.startY,fill:\"none\",stroke:letterColor,strokeWidth:effectiveOutlineWidth,style:glyphStyle,pointerEvents:\"none\",children:letter.char}),content&&isHoverMode&&useOutline&&!strokeOnMedia&&/*#__PURE__*/_jsx(\"text\",{x:letter.startX,y:letter.startY,fill:\"none\",stroke:letterColor,strokeWidth:effectiveOutlineWidth,style:{...glyphStyle,opacity:isHovered?0:1,transition:`opacity ${fadeDuration}ms ease`},children:letter.char}),content&&isHoverMode&&/*#__PURE__*/_jsx(\"foreignObject\",{x:boxX,y:boxY,width:boxW,height:boxH,mask:`url(#${maskId})`,children:clipToGlyph(/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",height:\"100%\"},children:[!useOutline&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,background:letterColor,opacity:isHovered?0:1,transition:`opacity ${fadeDuration}ms ease`}}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,opacity:isHovered?1:0,transition:`opacity ${fadeDuration}ms ease`},children:withOverlay(content,isLetterLiveHovered(i))})]}),letter,boxY,boxH)}),content&&isHoverMode&&useOutline&&strokeOnMedia&&/*#__PURE__*/_jsx(\"text\",{x:letter.startX,y:letter.startY,fill:\"none\",stroke:letterColor,strokeWidth:effectiveOutlineWidth,style:glyphStyle,pointerEvents:\"none\",children:letter.char})]},`letter-${i}`);})]})]})});}const mediaItemControls={kind:{type:ControlType.Enum,title:\"Type\",options:[\"video\",\"photo\"],optionTitles:[\"Video\",\"Photo\"],defaultValue:\"video\",displaySegmentedControl:true},videoSource:{type:ControlType.Enum,title:\"Source\",options:[\"upload\",\"url\"],optionTitles:[\"Upload\",\"URL\"],defaultValue:\"upload\",displaySegmentedControl:true,hidden:item=>item.kind!==\"video\"},video:{type:ControlType.File,title:\"Video\",allowedFileTypes:[\"mp4\",\"webm\",\"mov\"],hidden:item=>item.kind!==\"video\"||item.videoSource===\"url\"},videoUrl:{type:ControlType.String,title:\"Video URL\",placeholder:\"https://example.com/video.mp4\",hidden:item=>item.kind!==\"video\"||item.videoSource!==\"url\"},poster:{type:ControlType.ResponsiveImage,title:\"Poster\",// Follows the Video `Source` toggle above — not a separate choice\n// of its own, since a Poster is conceptually paired with its Video\n// (an uploaded clip gets an uploaded poster; a linked external clip\n// gets a linked poster).\nhidden:item=>item.kind!==\"video\"||item.videoSource===\"url\"},posterUrl:{type:ControlType.String,title:\"Poster URL\",placeholder:\"https://example.com/poster.jpg\",hidden:item=>item.kind!==\"video\"||item.videoSource!==\"url\"},photoSource:{type:ControlType.Enum,title:\"Source\",options:[\"upload\",\"url\"],optionTitles:[\"Upload\",\"URL\"],defaultValue:\"upload\",displaySegmentedControl:true,hidden:item=>item.kind!==\"photo\"},photo:{type:ControlType.ResponsiveImage,title:\"Photo\",hidden:item=>item.kind!==\"photo\"||item.photoSource===\"url\"},photoUrl:{type:ControlType.String,title:\"Photo URL\",placeholder:\"https://example.com/photo.jpg\",hidden:item=>item.kind!==\"photo\"||item.photoSource!==\"url\"}};addPropertyControls(VideoWordMask,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"WORKS\"},uppercase:{type:ControlType.Boolean,title:\"Uppercase\",defaultValue:true},tag:{type:ControlType.Enum,title:\"Tag\",options:[\"h1\",\"h2\",\"h3\",\"p\",\"span\"],optionTitles:[\"h1\",\"h2\",\"h3\",\"p\",\"span\"],defaultValue:\"h1\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:160,variant:\"Black\",letterSpacing:\"-0.02em\",lineHeight:\"0.9em\",textAlign:\"center\"}},fitWidth:{type:ControlType.Boolean,title:\"Fit Width\",description:\"Scales the font size to exactly fill the available width, overriding the Font control's own Size. Set this layer to Fixed or Fill width for it to have an effect.\",defaultValue:false},letterColor:{type:ControlType.Color,title:\"Letter Color\",description:\"Shown before media loads, wherever a letter has no media set, and as the resting color of each letter in Hover reveal mode.\",defaultValue:\"#000000\"},stroke:{type:ControlType.Object,title:\"Stroke\",controls:{enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:false},width:{type:ControlType.Number,title:\"Width\",defaultValue:2,min:.5,max:20,step:.5,unit:\"px\",hidden:item=>!item.enabled},keepOnMedia:{type:ControlType.Boolean,title:\"Keep on Media\",description:\"Stroke stays drawn on top of the video/photo once revealed. Turn off to fade it away instead.\",defaultValue:true,hidden:item=>!item.enabled}}},shadow:{type:ControlType.BoxShadow,title:\"Shadow\"},mediaMode:{type:ControlType.Enum,title:\"Media Mode\",options:[\"multiple\",\"single\"],optionTitles:[\"Multiple\",\"Single\"],defaultValue:\"multiple\",displaySegmentedControl:true},media:{type:ControlType.Array,title:\"Media\",description:\"Matched to letters 1-for-1 in order. Letters beyond the list show the plain Letter Color.\",control:{type:ControlType.Object,controls:mediaItemControls},defaultValue:[{kind:\"video\"}],maxCount:26,hidden:props=>props.mediaMode!==\"multiple\"},singleMedia:{type:ControlType.Object,title:\"Media\",description:\"Covers the whole word, behind every letter.\",controls:mediaItemControls,hidden:props=>props.mediaMode!==\"single\"},revealMode:{type:ControlType.Enum,title:\"Reveal\",options:[\"always\",\"hover\"],optionTitles:[\"Always Visible\",\"On Hover\"],defaultValue:\"always\",displaySegmentedControl:true},stickyReveal:{type:ControlType.Boolean,title:\"Sticky\",description:\"Once a letter is hovered, its media stays revealed instead of hiding again when the pointer leaves.\",defaultValue:false,hidden:props=>props.revealMode!==\"hover\"},singleHoverTrigger:{type:ControlType.Enum,title:\"Hover Trigger\",description:\"Single media mode only: reveal just the hovered letter, or the whole word together — more coherent since it's all one video.\",options:[\"perLetter\",\"wholeWord\"],optionTitles:[\"Per Letter\",\"Whole Word\"],defaultValue:\"perLetter\",displaySegmentedControl:true,hidden:props=>props.revealMode!==\"hover\"||props.mediaMode!==\"single\"},fadeDuration:{type:ControlType.Number,title:\"Fade\",defaultValue:250,min:0,max:1e3,step:10,unit:\"ms\",hidden:props=>props.revealMode!==\"hover\"},autoplay:{type:ControlType.Boolean,title:\"Autoplay\",description:\"Always Visible only — in On Hover mode, revealing a letter always plays its video.\",defaultValue:true,hidden:props=>props.revealMode===\"hover\"},hoverToPlay:{type:ControlType.Boolean,title:\"Play on Hover\",description:\"With Autoplay off, videos stay visible but paused until the pointer is over that letter.\",defaultValue:false,hidden:props=>props.revealMode!==\"always\"||props.autoplay},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true},overlay:{type:ControlType.Object,title:\"Overlay\",icon:\"effect\",controls:{enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:false},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"rgba(0,0,0,0.35)\",hidden:item=>!item.enabled},fadeOnHover:{type:ControlType.Boolean,title:\"Fade on Hover\",description:\"Veils fade out on the hovered letter and fade back in when the pointer leaves.\",defaultValue:true,hidden:item=>!item.enabled},blendMode:{type:ControlType.Enum,title:\"Blend Mode\",options:[\"normal\",\"multiply\",\"screen\",\"overlay\",\"darken\",\"lighten\",\"color-dodge\",\"color-burn\",\"hard-light\",\"soft-light\",\"difference\",\"exclusion\",\"hue\",\"saturation\",\"color\",\"luminosity\"],optionTitles:[\"Normal\",\"Multiply\",\"Screen\",\"Overlay\",\"Darken\",\"Lighten\",\"Color Dodge\",\"Color Burn\",\"Hard Light\",\"Soft Light\",\"Difference\",\"Exclusion\",\"Hue\",\"Saturation\",\"Color\",\"Luminosity\"],defaultValue:\"normal\",hidden:item=>!item.enabled}}}});VideoWordMask.displayName=\"Video Word Mask\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"VideoWordMask\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./VideoWordMask.map","// Generated by Framer (25dfa11)\nexport default function metadata(params,activeLocale){return{robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/lQTaFeAhzPggFEG7d35LyH06Kw.jpg\",title:\"Video Word Mask\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"wZAC6B,EAAC,GAAU,UAAU,CAAC,CAAC,EAAe,EAAM,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,CAAC,EAAe,EAAI,CAAC,oSAAoS,EAAe,EAAU,kBCAwL,SAAS,EAAqB,EAAU,GAAG,EAAS,CAAC,IAAM,EAAc,CAAC,EAAuF,OAArF,GAAU,QAAQ,GAAS,GAAS,OAAO,OAAO,EAAc,EAAU,EAAQ,CAAC,EAAS,CAAc,uCAA9uB,IAAiK,IAAkE,IAA4B,IAAmJ,EAAO,GAAW,CAAC,YAAY,WAAW,EAAQ,GAAkB,eAAqB,EAAkB,CAAC,UAAU,kBAAkB,UAAU,kBAAkB,EAA+L,EAAY,CAAC,OAAO,GAAG,MAAM,EAAE,SAAS,GAAG,KAAK,QAAQ,EAAQ,GAAY,CAAC,QAAM,cAAY,CAAC,IAAM,EAAOA,EAAiB,CAAmB,EAAQ,EAAW,GAAO,EAAO,WAAiB,EAAaC,OAAmB,CAAC,GAAG,EAAO,YAAU,GAAG,CAAC,KAAK,UAAU,CAAU,CAAC,CAAC,EAAE,OAAoB,EAAK,EAAoB,SAAS,CAAC,MAAM,EAAsB,UAAQ,CAAC,CAAE,EAAQ,EAAwB,CAAC,QAAQ,YAAY,MAAM,WAAW,EAAQ,EAAS,EAAO,OAAOC,CAAc,EAAQ,GAAU,CAAC,SAAO,KAAG,QAAM,GAAG,MAAgB,CAAC,GAAG,EAAM,QAAQ,EAAwB,EAAM,UAAU,EAAM,SAAS,WAAW,GAAU,GAAwB,EAAM,IAAe,EAAM,iBAAwB,EAAS,KAAK,GAAG,EAAE,EAAM,iBAAwB,EAAS,KAAK,GAAG,EAU/iD,EAAgB,EAVgkDC,EAAiB,SAAS,EAAM,EAAI,CAAC,IAAM,EAAYC,EAAO,IAAI,EAAQ,EAAW,GAAK,EAAkB,EAAgBC,EAAY,EAAO,CAAC,eAAa,aAAW,EAAc,EAA0B,EAAqB,EAAE,GAAK,CAAC,QAAM,UAAA,EAAU,WAAS,UAAQ,GAAG,GAAW,EAAS,CAAK,EAAO,CAAC,cAAY,aAAW,uBAAoB,mBAAgB,iBAAe,YAAU,kBAAgB,aAAW,YAAU,GAAgB,CAAC,cAAW,eAAe,YAAY,IAAI,EAAW,UAAQ,mBAAiB,CAAC,EAAQ,EAAiB,EAAuB,EAAM,CAAQ,EAA4D,EAAkB,EAAG,GAAlDC,CAA4F,EAAE,OAAoB,EAAK,GAAY,CAAC,GAAG,GAAU,EAAgB,SAAsB,EAAK,EAAS,CAAC,QAAQ,EAAS,QAAQ,GAAM,SAAsB,EAAK,EAAW,CAAC,MAAM,EAAY,SAAsB,EAAM,EAAO,IAAI,CAAC,GAAG,EAAU,GAAG,GAAgB,UAAU,EAAG,EAAkB,gBAAgBC,EAAU,CAAU,EAAE,mBAAmB,UAA2B,mBAAiB,SAAS,YAAY,IAAI,EAAW,MAAM,CAAC,gBAAgB,kBAAkB,uBAAuB,IAAI,wBAAwB,IAAI,oBAAoB,IAAI,qBAAqB,IAAI,GAAG,CAAK,EAAE,GAAG,EAAqB,CAAC,UAAU,CAAC,mBAAmB,OAAO,CAAC,EAAE,EAAY,CAAc,EAAE,SAAS,CAAc,EAAK,EAAO,IAAI,CAAC,UAAU,iBAAkC,mBAAiB,SAAS,YAAY,MAAM,CAAC,uBAAuB,IAAI,wBAAwB,IAAI,oBAAoB,IAAI,qBAAqB,GAAG,EAAE,SAAsB,EAAKC,EAAS,CAAC,sBAAsB,GAAK,SAAsB,EAAKN,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,IAAI,OAAO,MAAM,CAAC,kBAAkB,uBAAuB,qBAAqB,OAAO,uBAAuB,MAAM,sBAAsB,mDAAmD,EAAE,SAAsB,EAAK,EAAK,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,YAAY,GAAK,OAAO,YAAY,aAAa,GAAM,UAAU,CAAC,EAAE,QAAQ,YAAY,aAAa,GAAM,SAAsB,EAAK,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,iBAAiB,MAAM,CAAC,gBAAgB,EAAmB,mBAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,0BAA0B,EAAE,kBAAkB,MAAM,mBAAmB,GAAK,GAAG,EAAqB,CAAC,UAAU,CAAC,SAAsB,EAAKA,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,IAAI,OAAO,MAAM,CAAC,kBAAkB,uBAAuB,qBAAqB,OAAO,uBAAuB,MAAM,sBAAsB,mDAAmD,EAAE,SAAsB,EAAK,EAAK,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,YAAY,GAAK,OAAO,YAAY,aAAa,GAAM,UAAU,CAAC,EAAE,QAAQ,YAAY,aAAa,GAAM,SAAsB,EAAK,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAY,CAAc,CAAC,CAAC,CAAC,CAAC,EAAe,EAAK,EAAO,IAAI,CAAC,UAAU,iBAAkC,mBAAiB,SAAS,YAAY,MAAM,CAAC,uBAAuB,IAAI,wBAAwB,IAAI,oBAAoB,IAAI,qBAAqB,GAAG,EAAE,SAAsB,EAAKM,EAAS,CAAC,sBAAsB,GAAK,SAAsB,EAAKN,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,IAAI,OAAO,MAAM,CAAC,kBAAkB,uBAAuB,qBAAqB,OAAO,uBAAuB,MAAM,sBAAsB,mDAAmD,EAAE,SAAsB,EAAK,EAAK,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,YAAY,GAAK,OAAO,YAAY,aAAa,GAAM,UAAU,CAAC,EAAE,QAAQ,YAAY,aAAa,GAAM,SAAsB,EAAK,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,iBAAiB,MAAM,CAAC,gBAAgB,EAAmB,mBAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,0BAA0B,EAAE,kBAAkB,MAAM,mBAAmB,GAAK,GAAG,EAAqB,CAAC,UAAU,CAAC,SAAsB,EAAKA,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,IAAI,OAAO,MAAM,CAAC,kBAAkB,uBAAuB,qBAAqB,OAAO,uBAAuB,MAAM,sBAAsB,mDAAmD,EAAE,SAAsB,EAAK,EAAK,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,YAAY,GAAK,OAAO,YAAY,aAAa,GAAM,UAAU,CAAC,EAAE,QAAQ,YAAY,aAAa,GAAM,SAAsB,EAAK,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAY,CAAc,CAAC,CAAC,CAAC,CAAC,EAAe,EAAK,EAAO,IAAI,CAAC,UAAU,iBAAkC,mBAAiB,SAAS,YAAY,MAAM,CAAC,uBAAuB,IAAI,wBAAwB,IAAI,oBAAoB,IAAI,qBAAqB,GAAG,EAAE,SAAsB,EAAKM,EAAS,CAAC,sBAAsB,GAAK,SAAsB,EAAKN,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,IAAI,OAAO,MAAM,CAAC,kBAAkB,uBAAuB,qBAAqB,OAAO,uBAAuB,MAAM,sBAAsB,mDAAmD,EAAE,SAAsB,EAAK,EAAK,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,YAAY,GAAK,OAAO,YAAY,aAAa,GAAM,UAAU,CAAC,EAAE,QAAQ,YAAY,aAAa,GAAM,SAAsB,EAAK,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,gBAAgB,MAAM,CAAC,gBAAgB,EAAmB,mBAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,0BAA0B,EAAE,kBAAkB,MAAM,mBAAmB,GAAK,GAAG,EAAqB,CAAC,UAAU,CAAC,SAAsB,EAAKA,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,IAAI,OAAO,MAAM,CAAC,kBAAkB,uBAAuB,qBAAqB,OAAO,uBAAuB,MAAM,sBAAsB,mDAAmD,EAAE,SAAsB,EAAK,EAAK,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,YAAY,GAAK,OAAO,YAAY,aAAa,GAAM,UAAU,CAAC,EAAE,QAAQ,YAAY,aAAa,GAAM,SAAsB,EAAK,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAY,CAAc,CAAC,CAAC,CAAC,CAAC,EAAe,EAAK,EAAO,IAAI,CAAC,UAAU,iBAAkC,mBAAiB,SAAS,YAAY,MAAM,CAAC,uBAAuB,IAAI,wBAAwB,IAAI,oBAAoB,IAAI,qBAAqB,GAAG,EAAE,SAAsB,EAAKM,EAAS,CAAC,sBAAsB,GAAK,SAAsB,EAAKN,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,IAAI,OAAO,MAAM,CAAC,kBAAkB,uBAAuB,qBAAqB,OAAO,uBAAuB,MAAM,sBAAsB,mDAAmD,EAAE,SAAsB,EAAK,EAAK,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,YAAY,GAAK,OAAO,YAAY,aAAa,GAAM,UAAU,CAAC,EAAE,QAAQ,YAAY,aAAa,GAAM,SAAsB,EAAK,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,gBAAgB,MAAM,CAAC,gBAAgB,EAAmB,mBAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,0BAA0B,EAAE,kBAAkB,MAAM,mBAAmB,GAAK,GAAG,EAAqB,CAAC,UAAU,CAAC,SAAsB,EAAKA,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,IAAI,OAAO,MAAM,CAAC,kBAAkB,uBAAuB,qBAAqB,OAAO,uBAAuB,MAAM,sBAAsB,mDAAmD,EAAE,SAAsB,EAAK,EAAK,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,YAAY,GAAK,OAAO,YAAY,aAAa,GAAM,UAAU,CAAC,EAAE,QAAQ,YAAY,aAAa,GAAM,SAAsB,EAAK,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAY,CAAc,CAAC,CAAC,CAAC,CAAC,EAAe,EAAK,EAAO,IAAI,CAAC,UAAU,iBAAkC,mBAAiB,SAAS,YAAY,MAAM,CAAC,uBAAuB,IAAI,wBAAwB,IAAI,oBAAoB,IAAI,qBAAqB,GAAG,EAAE,SAAsB,EAAKM,EAAS,CAAC,sBAAsB,GAAK,SAAsB,EAAKN,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,IAAI,OAAO,MAAM,CAAC,kBAAkB,uBAAuB,qBAAqB,OAAO,uBAAuB,MAAM,sBAAsB,mDAAmD,EAAE,SAAsB,EAAK,EAAK,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,YAAY,GAAK,OAAO,YAAY,aAAa,GAAM,UAAU,CAAC,EAAE,QAAQ,YAAY,aAAa,GAAM,SAAsB,EAAK,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,iBAAiB,MAAM,CAAC,gBAAgB,EAAmB,mBAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,0BAA0B,EAAE,kBAAkB,MAAM,mBAAmB,GAAK,GAAG,EAAqB,CAAC,UAAU,CAAC,SAAsB,EAAKA,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,IAAI,OAAO,MAAM,CAAC,kBAAkB,uBAAuB,qBAAqB,OAAO,uBAAuB,MAAM,sBAAsB,mDAAmD,EAAE,SAAsB,EAAK,EAAK,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,YAAY,GAAK,OAAO,YAAY,aAAa,GAAM,UAAU,CAAC,EAAE,QAAQ,YAAY,aAAa,GAAM,SAAsB,EAAK,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAY,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAUt1W,EAAE,CAVk2W,kFAAkF,uPAAuP,2YAA2Y,2OAA2O,mIAAmI,iRAAiR,GAAGO,CAUtrZ,EAAE,cAAc,EAAiC,EAAgB,YAAY,WAAW,EAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,GAAG,EAAE,EAAoB,EAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,WAAW,EAAE,aAAa,CAAC,UAAU,OAAO,EAAE,MAAM,UAAU,KAAK,EAAY,IAAI,CAAC,CAAC,EAAE,EAAS,EAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,0EAA0E,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,wDAAwD,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,cAAc,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,cAAc,IAAI,uEAAuE,OAAO,KAAK,EAAE,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,uGAAuG,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,uLAAuL,IAAI,uEAAuE,OAAO,KAAK,EAAE,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,oGAAoG,IAAI,yEAAyE,OAAO,KAAK,CAAC,CAAC,EAAE,GAAG,EAAwBC,CAAiB,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,KCL5tE,SAAS,EAAgB,EAAK,CAAK,KAAsB,OAAO,EAAK,cAAc,MAAM,EAAK,SAAS,EAAK,KAAM,CAAC,SAAS,EAAgB,EAAK,CAAK,KAAsB,OAAO,EAAK,cAAc,MAAM,EAAK,SAAS,EAAK,OAAO,GAAI,CAAC,SAAS,GAAiB,EAAK,CAAK,KAAsB,OAAO,EAAK,cAAc,MAAM,EAAK,UAAU,EAAK,QAAQ,GAAI,CAIrW,SAAS,GAA0B,EAAW,EAAW,CAAC,GAAG,GAAY,KAAK,MAAO,KAAI,GAAG,OAAO,GAAa,SAAS,OAAO,EAAW,IAAM,EAAI,EAAW,KAAK,EAAE,GAAG,EAAI,SAAS,GAAG,EAAE,OAAO,OAAO,WAAW,CAAG,EAAE,IAAI,GAAG,EAAI,SAAS,IAAI,EAAE,OAAO,OAAO,WAAW,CAAG,GAAG,GAAY,GAAG,GAAG,EAAI,SAAS,IAAI,EAAE,OAAO,OAAO,WAAW,CAAG,EAAE,IAAM,EAAI,OAAO,WAAW,CAAG,EAAE,OAAO,OAAO,SAAS,CAAG,EAAE,EAAI,GAAI,CAS3Z,SAAS,GAA4B,EAAM,CAAC,GAAG,CAAC,EAAM,OAAiB,IAAM,EAAO,EAAM,MAAM,cAAc,CAAC,CAC9G,IAAI,GAAO,CAAC,IAAM,EAAO,EAAM,KAAK,CAAC,CAAC,MAAM,6BAA6B,EAAyB,GAApB,CAAC,GAAsB,EAAO,SAAS,OAAO,EAAE,OAAO,KAAK,IAAM,EAAK,EAAO,OAAO,GAAG,CAAC,OAAO,MAAM,WAAW,CAAC,CAAC,CAAC,EAAQ,EAAM,EAAO,KAAK,GAAG,OAAO,MAAM,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAK,OAAO,GAAG,CAAC,EAAM,OAAO,KAAK,GAAK,CAAC,EAAE,EAAE,GAAM,EAAK,MAAM,eAAe,EAAE,GAAG,EAAE,GAAG,EAAK,GAAG,EAAM,EAAG,CAAC,CAAC,CAAC,OAAO,GAAG,EAAQ,CAAE,EAAE,OAAO,EAAO,OAAO,EAAO,KAAK,GAAG,EAAE,IAAA,EAAU,CAa7a,SAAwB,EAAc,EAAM,CAAC,GAAK,CAAC,OAAK,QAAQ,MAAI,KAAK,YAAU,GAAK,OAAK,CAAC,SAAS,IAAI,QAAQ,QAAQ,cAAc,UAAU,WAAW,QAAQ,UAAU,QAAQ,EAAE,cAAY,UAAU,WAAS,GAAM,YAAU,WAAW,SAAM,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,cAAY,CAAC,KAAK,OAAO,EAAE,aAAW,SAAS,eAAa,GAAM,qBAAmB,YAAY,eAAa,IAAI,SAAO,CAAC,QAAQ,GAAM,MAAM,EAAE,YAAY,EAAI,EAAE,UAAO,WAAS,GAAK,eAAY,GAAM,OAAK,GAAK,UAAQ,CAAC,QAAQ,GAAM,MAAM,mBAAmB,YAAY,GAAK,UAAU,QAAQ,EAAE,SAAO,EAAY,EAAY,EAAU,EAAK,YAAY,EAAE,EAK5mB,EAAc,EAAO,QAAc,EAAmB,EAAO,MAAY,EAAc,EAAO,YAAkB,EAAY,IAAa,QAAc,EAAa,IAAY,SAIhL,EAAkB,CAAC,GAAa,CAAC,GAAU,GAAsC,EAAdC,EAAsB,CAAC,CAAC,QAAQ,gBAAgB,EAAE,EAAQ,GAAO,YAAY,IAAY,GAASC,EAAO,IAAI,EAAQ,EAAaA,EAAO,IAAI,EAAQ,EAAOA,EAAO,IAAI,EAAQ,EAAQA,EAAO,IAAI,EAAQ,EAAUA,EAAO,IAAI,EAAQ,EAAUA,EAAO,CAAC,CAAC,EAAQ,EAAaA,EAAO,IAAI,EAAO,CAAC,EAAQ,GAAYC,EAAS,IAAI,EAAO,CAAC,EAAe,GAAmBA,EAAS,IAAI,EAAO,CAAC,EAAO,IAAWA,EAAS,EAAI,EAAO,CAAC,EAAa,IAAiBA,EAAS,EAAE,EAAO,CAAC,GAAgB,IAAoBA,MAAa,IAAI,GAAG,EAAQ,EAAS,GAAoB,EAK1nB,GAAgB,GAAc,GAAa,IAAqB,YAAY,SAAS,GAAiB,EAAE,CAAiF,OAA7E,GAAwB,EAAa,GAAgB,KAAK,EAAE,GAAc,EAAU,EAAa,GAAgB,IAAI,CAAC,EAAE,IAAe,CAAE,CAK3P,SAAS,GAAoB,EAAE,CAA2C,OAAvC,GAAuB,GAAc,EAAS,IAAe,CAAE,CAAC,MAAc,CAAC,IAAI,EAAU,GAAM,eAAe,GAAS,CAAC,GAAG,OAAO,SAAW,IAAY,OAAO,IAAM,EAAK,OAAO,EAAK,UAAW,SAAS,EAAK,SAAS,OAAO,WAAW,OAAO,EAAK,QAAQ,CAAC,GAAG,GAG1S,GAAG,SAAS,MAAM,CAAC,IAAM,EAAO,EAAK,YAAY,IAAU,EAAU,EAAK,WAAW,SAAe,EAAO,EAAK,YAAY,aAAa,GAAG,CAAC,MAAM,SAAS,MAAM,KAAK,GAAG,EAAU,GAAG,EAAO,GAAG,EAAK,KAAK,IAAS,CAAW,CAAE,MAAM,CACvO,CAAC,GAAG,CAAC,MAAM,SAAS,MAAM,KAAM,MAAM,CACtC,CAAC,CAAC,GAAG,EAAU,OAAO,IAAM,EAAO,EAAQ,QAAc,EAAS,EAAU,QAAW,MAAC,GAAQ,CAAC,GAAgB,GAAG,CAAC,IAAM,EAAK,EAAO,QAAQ,EAAQ,EAAI,EAAO,iBAAiB,EAAQ,EAAQ,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAI,IAAI,CAAC,IAAM,EAAK,EAAY,GAAG,GAAG,CAAC,GAAM,KAAK,KAAK,CAAI,EAAE,SAAS,IAAM,EAAM,EAAO,uBAAuB,CAAC,EASrU,EAAS,YAAY,EAAK,IAAM,EAAW,EAAS,gBAAgB,CAAC,EAO/D,EAAS,EAAS,QAAQ,EAAE,EAAQ,KAAK,CAAC,OAAK,EAAE,EAAM,EAAE,EAAW,EAAE,MAAM,EAAW,MAAM,OAAO,EAAM,EAAE,OAAO,EAAM,EAAE,OAAO,EAAM,EAAE,EAAS,EAAE,YAAY,EAAS,MAAM,CAAC,CAAE,CAAC,GAAG,CAAC,EAAU,CAUxM,IAAM,EAAqB,GAA0B,EAAK,WAAW,CAAI,EAAQ,EAAY,KAAK,IAAI,EAAK,OAAO,EAAK,CAAoB,EAAQ,EAAW,EAAY,EAAK,OAAO,EAAW,CAAC,EAAE,EAAK,EAAE,EAAW,EAAE,OAAO,EAAY,KAAK,EAAK,EAAE,UAAU,EAAK,OAAO,MAAM,EAAK,MAAM,SAAO,CAAC,CAAE,CAAC,MAAM,CAAK,GAAU,EAAW,IAAI,CAAE,CAAC,CAA4B,OAA3B,EAAW,IAAI,EAAE,EAAQ,MAAY,CAAC,EAAU,EAAK,CAAE,EAAE,CAAC,EAAY,EAAK,WAAW,EAAK,WAAW,EAAK,UAAU,EAAK,SAAS,EAAK,cAAc,EAAK,UAAU,CAAC,EAAE,MAAc,CAAC,GAAG,GAAiB,IAAS,OAAY,OAAO,IAAM,EAAG,EAAa,QAAQ,GAAG,CAAC,EAAG,OAAO,IAAM,EAAS,IAAI,qBAAqB,GAAS,GAAU,EAAQ,EAAE,EAAE,gBAAgB,EAAI,EAAE,CAAC,UAAU,GAAG,CAAC,EAAuB,OAArB,EAAS,QAAQ,CAAE,MAAY,EAAS,WAAW,CAAE,EAAE,CAAC,CAAQ,CAAC,EAKnxB,MAAc,CAAC,GAAG,CAAC,GAAiB,IAAS,OAAY,OAAO,IAAM,EAAG,GAAS,QAAQ,GAAG,CAAC,EAAG,OAQjG,IAAM,EAAa,EAAG,sBAAsB,CAAC,CAAC,MAAS,GAAa,EAAkB,CAAY,EAAE,IAAM,EAAS,IAAI,eAAe,GAAS,CAAC,IAAM,EAAM,EAAQ,EAAE,EAAE,YAAY,MAAS,GAAM,EAAkB,CAAK,CAAE,CAAC,EAAE,EAAS,QAAQ,CAAE,EAKlP,IAAM,EAAQ,EAAO,eAAe,EAAkB,GAAG,GAAU,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,EAAS,WAAW,EAAE,EAAO,aAAa,CAAO,CAAE,CAAE,EAAE,CAAC,CAAQ,CAAC,EAOvJ,IAAM,EAAS,GAAU,GAAS,GAAgB,EAAQ,MAAM,EAAE,EAAe,EAAQ,MAAM,EAAQ,EAAcC,MAAiB,EAAuB,IAAW,EAAS,EAAc,CAAC,EAAE,EAAQ,EAAE,EAAS,MAAM,EAAQ,MAAM,EAAS,OAAO,EAAQ,OAAO,EAAS,KAAK,EAAQ,KAAK,EAAS,UAAU,EAAQ,UAAU,EAAS,QAAQ,EAAQ,QAAQ,IAAI,IAAS,CAAC,KAAK,EAAO,KAAK,EAAE,EAAO,EAAE,EAAS,MAAM,EAAO,MAAM,EAAS,OAAO,EAAO,OAAO,EAAS,OAAO,EAAO,OAAO,EAAS,OAAO,EAAO,OAAO,EAAS,YAAY,EAAO,YAAY,CAAQ,EAAE,CAAC,EAAva,KAA2a,CAAC,EAAQ,CAAQ,CAAC,EAa5kB,GAAa,EAAQ,IAAiB,CAAC,GAAU,GAAgB,MAAM,GAMvE,GAAkB,IAAW,EAAE,EAAK,UAAU,OAAO,EAAK,UAAW,SAAS,EAAK,SAAS,OAAO,WAAW,OAAO,EAAK,QAAQ,CAAC,GAAG,IAAI,EAG1I,EAAsB,IAAW,EAAE,EAAmB,EAAmB,EAAe,GAAa,GAA4B,EAAM,EAgB7I,MAAc,CAAC,GAAG,GAAU,EAAE,GAAa,IAAoB,CAAC,GAAsB,IAAS,OAAY,OAAO,IAAM,EAAG,EAAa,QAAc,EAAM,EAAO,QAAQ,GAAG,CAAC,GAAI,CAAC,EAAM,OAAO,SAAS,EAAW,EAAE,CAAC,IAAM,EAAI,EAAM,aAAa,EAAE,GAAG,CAAC,EAAI,OAAO,IAAM,EAAG,EAAM,eAAe,EAAE,EAAG,EAAE,EAAE,QAAQ,EAAG,EAAE,EAAE,QAAQ,IAAM,EAAK,EAAG,gBAAgB,EAAI,QAAQ,CAAC,EAG/W,GAAG,EAAK,EAAE,EAAc,MAAM,EAAK,EAAE,EAAc,KAAK,EAAc,UAAU,CAAC,GAAgB,EAAE,EAAE,MAAO,CAAC,IAAM,EAAI,EAAc,QAAQ,UAAU,GAAQ,EAAK,GAAG,EAAO,GAAG,EAAK,GAAG,EAAO,EAAE,EAAO,KAAK,EAAE,GAAgB,CAAG,CAAE,CAAC,SAAS,GAAa,CAAC,GAAgB,EAAE,CAAE,CAA+F,OAA9F,EAAG,iBAAiB,cAAc,CAAU,EAAE,EAAG,iBAAiB,eAAe,CAAW,MAAY,CAAC,EAAG,oBAAoB,cAAc,CAAU,EAAE,EAAG,oBAAoB,eAAe,CAAW,CAAE,CAAE,EAAE,CAAC,EAAS,EAAY,EAAkB,CAAa,CAAC,EAEzhB,MAAc,CAAI,CAAC,GAAc,EAAa,GAAS,GAAmB,GAAM,EAAK,IAAI,CAAY,EAAE,EAAK,IAAI,IAAI,CAAI,CAAC,CAAC,IAAI,CAAY,CAAC,CAAE,EAAE,CAAC,EAAa,CAAY,CAAC,EAC1K,MAAc,CAAC,GAAmB,IAAI,GAAG,CAAE,EAAE,CAAC,CAAO,CAAC,EAItD,MAAc,CAAC,GAAG,GAAU,EAAY,OAAO,IAAM,GAAe,EAAQ,IAAa,CAAK,IAAkB,GAAQ,EAAW,EAAQ,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,EAAO,EAAQ,MAAM,EAAE,EAAE,GAAG,EAAa,CAAC,IAAM,EAAW,GAAU,GAAmB,GAAc,EAAE,EAAc,EAAa,QAAQ,CAAU,CAAE,MAAM,EAAU,QAAQ,SAAS,EAAQ,IAAI,CAAgE,EAAc,EAA5D,GAAU,GAAmB,IAAe,CAAkC,CAAE,CAAC,CAAG,EAAE,CAAC,EAAO,EAAS,EAAkB,EAAa,EAAQ,EAAS,EAAY,CAAY,CAAC,EAOpiB,MAAc,CAAI,GAAU,CAAC,GAAmB,EAAU,QAAQ,SAAS,EAAQ,IAAI,CAAC,GAAG,CAAC,EAAQ,OAAO,IAAM,EAAW,GAAiB,CAAC,EAAK,GAAQ,EAAY,EAAQ,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,EAAY,EAAwD,EAAQ,MAAM,GAA1D,EAAQ,MAAM,EAAE,EAAQ,YAAY,EAAyB,CAAC,CAAE,EAAE,CAAC,EAAO,EAAQ,EAAS,EAAY,EAAa,EAAa,GAAgB,EAAa,CAAkB,CAAC,EAAE,IAAM,GAAQ,EAAU,EAAU,CAAC,MAAM,OAAO,OAAO,OAAO,UAAU,QAAQ,QAAQ,OAAO,EAWte,GAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAK,WAAW,WAAW,EAAK,WAAW,UAAU,EAAK,UAAU,SAAS,EAAK,SAAS,cAAc,EAAK,cAAc,WAAW,IAAI,UAAU,EAAK,SAAS,EAI5M,EAAW,CAAC,WAAW,EAAK,WAAW,WAAW,EAAK,WAAW,UAAU,EAAK,UAAU,SAAS,EAAiB,EAQ3H,SAAS,GAAY,EAAK,EAAU,GAAM,CAAwC,MAApC,CAAC,GAAM,CAAC,EAAQ,QAAe,EAAyB,EAAM,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,OAAO,OAAO,MAAM,EAAE,SAAS,CAAC,EAAkB,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,WAAW,EAAQ,MAAM,cAAc,OAAO,QAAQ,EAAQ,aAAa,EAAU,EAAE,EAAE,WAAW,qBAAqB,aAAa,EAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CA4BnZ,SAAS,GAAU,EAAK,EAAK,EAAU,EAAY,EAAY,CAAC,IAA2B,EAAO,EAAK,EAAY,EAAmB,EAAQ,KAAK,MAAM,KAAK,IAAI,EAAE,KAAK,IAAI,EAAO,CAAW,CAAC,CAAC,EAAkG,OAAoB,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,KAAK,EAAE,IAAI,EAAQ,MAAM,OAAO,OAA1K,KAAK,MAAM,KAAK,IAAI,EAAE,KAAK,IAAI,EAAY,EAAQ,EAAU,CAAc,CAAC,CAA8G,EAAE,SAAS,QAAQ,EAAE,SAAsB,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,KAAK,EAAE,IAAI,CAAC,EAAQ,MAAM,OAAO,OAAO,KAAK,MAAM,CAAW,CAAC,EAAE,SAAS,CAAI,CAAC,CAAC,CAAC,CAAE,CACnjB,SAAS,GAAY,EAAK,EAAO,EAAY,EAAY,CAAC,OAAO,GAAU,EAAK,EAAO,OAAO,EAAO,YAAY,EAAY,CAAW,CAAE,CAK1I,SAAS,GAAW,EAAK,EAAY,EAAY,CAAC,OAAO,GAAU,EAAK,EAAY,EAAY,EAAY,CAAW,CAAE,CAAC,OAAoB,EAAK,MAAM,CAAC,IAAI,GAAS,MAAM,CAAC,SAAS,WAUvL,QAAQ,OAAO,WAAW,SAW1B,GAAG,EAAS,CAAC,MAAM,MAAM,EAAE,CAAC,MAAM,aAAa,EAAE,GAAG,CAAK,EAAE,SAAsB,EAAM,MAAM,CAAC,IAAI,EAAa,MAAM,CAAC,SAAS,WAAW,QAAQ,eAAe,MAAM,EAAc,EAAc,MAAM,cAAc,OAAO,EAAc,EAAc,OAAO,IAAA,EAAS,EAAE,SAAS,CAAc,EAAK,GAAQ,CAAC,MAAM,CAAC,GAAG,GAAU,MAAM,EAAY,WAAW,SAAS,WAAW,OAgBtX,GAAG,GAAe,EAAS,CAAC,SAAS,WAAW,MAAM,EAAE,QAAQ,EAAE,cAAc,MAAM,EAAE,CAAC,CAAC,EAAE,SAAS,CAAW,CAAC,EAAE,IAAc,GAA4B,EAAK,MAAM,CAAC,cAAc,OAAO,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,MAAM,OAAO,OAAO,OAAO,cAAc,OAAO,SAAS,UAAU,OAAO,EAAY,EAAE,QAAQ,KAAK,EAAc,EAAE,GAAG,EAAc,MAAM,GAAG,EAAc,SAAS,SAAS,EAAc,QAAQ,KAAK,EAAO,IAAiB,EAAK,OAAO,CAAC,EAAE,EAAO,OAAO,EAAE,EAAO,OAAO,KAAK,EAAY,MAAM,EAAW,SAAS,EAAO,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,EAAe,EAAM,MAAM,CAAC,IAAI,EAAO,cAAc,OAAO,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,MAAM,OAAO,OAAO,OAAO,cAAc,OAUhsB,SAAS,SAAS,QAAQ,MAK1B,WAAW,EAAS,IAAA,GAAU,oBAAoB,EAAE,QAAQ,EAAc,KAAK,EAAc,EAAE,GAAG,EAAc,MAAM,GAAG,EAAc,SAAS,IAAA,GAAU,SAAS,CAAc,EAAK,OAAO,CAAC,GAAG,GAAO,IAAI,EAAQ,EAAE,EAAE,EAAE,EAAE,cAAc,OAAO,MAAM,CAAC,WAAW,EAAK,WAAW,WAAW,EAAK,WAAW,UAAU,EAAK,UAAU,SAAS,EAAK,SAAS,cAAc,EAAK,cAAc,QAAQ,EAAE,cAAc,MAAM,EAAE,SAAS,CAAW,CAAC,EAAe,EAAK,OAAO,CAAC,IAAI,EAAU,EAAE,EAAE,EAAE,EAAE,cAAc,OAAO,MAAM,CAAC,WAAW,EAAK,WAAW,WAAW,EAAK,WAAW,UAAU,EAAK,UAAU,SAAS,EAAK,SAAS,QAAQ,EAAE,cAAc,MAAM,CAAC,CAAC,EAAe,EAAM,OAAO,CAAC,SAAS,CAAC,GAAe,QAAQ,KAAK,EAAO,IAAiB,EAAK,OAAO,CAAC,GAAG,YAAY,EAAI,GAAG,IAAI,UAAU,iBAShxB,EAAE,EAAE,EAAE,EAAc,EAAE,MAAM,EAAc,MAAM,OAAO,EAAc,OAAO,SAAsB,EAAK,OAAO,CAAC,EAAE,EAAO,OAAO,EAAE,EAAO,OAAO,KAAK,OAAO,MAAM,EAAW,SAAS,EAAO,IAAI,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAa,GAAc,GAA4B,EAAK,OAAO,CAAC,GAAG,gBAAgB,IAAM,UAAU,iBAAiB,EAAE,EAAE,EAAE,EAAc,EAAE,MAAM,EAAc,MAAM,OAAO,EAAc,OAAO,SAAS,EAAc,QAAQ,KAAK,EAAO,IAAiB,EAAK,OAAO,CAAC,EAAE,EAAO,OAAO,EAAE,EAAO,OAAO,KAAK,OAAO,MAAM,EAAW,SAAS,EAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAGrkB,GAAG,GAAa,CAAC,GAAc,CAAC,EAAc,OAAO,KAAK,IAAM,EAAK,EAAkB,EAAS,EAAgB,CAAI,EAAQ,EAAS,EAAgB,CAAI,EAAQ,EAAU,GAAiB,CAAI,EAAM,EAAY,KAsBhB,OAtBwB,IAAS,EAAK,OAAO,QAAY,IAAU,EAAyB,EAAK,MAAM,CAAC,IAAI,EAAS,IAAI,GAAG,MAAM,CAAS,CAAC,GAAY,IAAU,AAgBnK,EAhBsK,EAgB3V,EAAuB,EAAK,MAAM,CAAC,IAAI,EAAU,IAAI,GAAG,MAAM,CAAS,CAAC,EAAe,EAAK,QAAQ,CAAC,IAAI,EAAS,MAAM,GAAK,YAAY,GAAK,QAAQ,OAAO,MAAM,CAAS,CAAC,EAAiC,EAAK,QAAQ,CAAC,IAAI,GAAI,CAAC,EAAa,QAAQ,CAAG,EAAE,IAAI,EAM/Q,OAAO,EAAkB,IAAA,GAAU,EAAU,MAAM,GAAK,YAAY,GAAK,wBAAwB,GAAU,OAAK,QAAQ,EAAO,OAAO,WAAW,MAAM,CAAS,CAAC,IAAS,EAA4C,EAAK,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAc,KAAK,MAAM,EAAc,MAAM,OAAO,EAAc,UAAU,KAAK,qBAAqB,EAAI,GAAG,SAAS,GAAW,GAAY,EAAY,GAAc,CAAC,EAAE,EAAc,KAAK,EAAc,SAAS,CAAC,CAAC,EAA3Q,IAA6Q,EAAA,CAAG,EAAE,CAAC,GAAa,GAAc,GAAe,GAAe,GAAe,GAAQ,GAAa,OAAO,QAAQ,EAAgB,CAAW,EAAE,EAAgB,CAAW,IAAI,EAAc,QAAQ,KAAK,EAAO,IAAiB,EAAK,OAAO,CAAC,EAAE,EAAO,OAAO,EAAE,EAAO,OAAO,KAAK,OAAO,OAAO,EAAY,YAAY,EAAsB,MAAM,EAAW,cAAc,OAAO,SAAS,EAAO,IAAI,EAAE,eAAe,GAAG,CAAC,EAAE,GAAe,QAAQ,KAAK,EAAO,IAAI,CAO5vB,GAA3H,CAAC,GAAa,IAAsB,GAAa,OAAO,QAAQ,EAAgB,CAAW,EAAE,EAAgB,CAAW,GAA0B,OAAO,KAQnL,IAAM,EAAK,EAAa,EAAY,EAAE,GAAM,OAAO,GAAM,GAAG,IAAA,GAAgB,EAAO,YAAY,EAAI,GAAG,IAYhF,EAAK,EAAa,EAAE,EAAO,EAAE,EAK7C,EAAK,EAAc,KAAW,EAAK,EAAa,EAAc,MAAM,KAAK,IAAI,EAAO,MAAM,GAAU,GAAG,EAAQ,EAAK,EAAc,UAAgB,EAAa,EAAgB,CAAI,EAAQ,EAAa,EAAgB,CAAI,EAAQ,EAAc,GAAiB,CAAI,EAAM,EAAQ,KAAQ,GAAM,EAAE,GAAU,KAAiB,EAAK,OAAO,QAAY,IAAc,EAAqB,EAAK,MAAM,CAAC,IAAI,EAAa,IAAI,GAAG,MAAM,CAAS,CAAC,GAAY,IAAc,AAEtQ,EAFyQ,EAE1c,EAA2B,EAAK,MAAM,CAAC,IAAI,EAAc,IAAI,GAAG,MAAM,CAAS,CAAC,EAAe,EAAK,QAAQ,CAAC,IAAI,EAAa,MAAM,GAAK,YAAY,GAAK,QAAQ,OAAO,MAAM,CAAS,CAAC,EAA6B,EAAK,QAAQ,CAAC,IAAI,GAAI,CAAC,EAAU,QAAQ,GAAG,CAAG,EAAE,IAAI,EAEnR,OAAO,EAAkB,IAAA,GAAU,EAAc,MAAM,GAAK,YAAY,GAAK,wBAAwB,GAAU,OAAK,QAAQ,EAAO,OAAO,WAAW,MAAM,CAAS,CAAC,IAAK,IAAM,EAAU,GAAiB,CAAC,EAatM,EAAW,GAAa,EAAc,OAAoB,EAAM,IAAI,CAAC,SAAS,CAAC,CAAC,GAAS,GAAyB,EAAK,OAAO,CAAC,EAAE,EAAO,OAAO,EAAE,EAAO,OAAO,KAAK,OAAO,OAAO,EAAY,YAAY,EAAsB,MAAM,EAAW,SAAS,EAAO,IAAI,CAAC,EAAE,CAAC,GAAS,CAAC,GAAyB,EAAK,OAAO,CAAC,EAAE,EAAK,EAAE,EAAK,MAAM,EAAK,OAAO,EAAK,KAAK,EAAY,KAAK,QAAQ,EAAO,EAAE,CAAC,EAAE,GAAS,CAAC,GAA0B,EAAK,gBAAgB,CAAC,EAAE,EAAK,EAAE,EAAK,MAAM,EAAK,OAAO,EAAK,KAAK,QAAQ,EAAO,GAAG,SAAS,GAAY,GAAY,EAAQ,GAAoB,CAAC,CAAC,EAAE,EAAO,EAAK,CAAI,CAAC,CAAC,EAAE,GAAS,CAAC,GAAa,GAAe,GAA4B,EAAK,OAAO,CAAC,EAAE,EAAO,OAAO,EAAE,EAAO,OAAO,KAAK,OAAO,OAAO,EAAY,YAAY,EAAsB,MAAM,EAAW,cAAc,OAAO,SAAS,EAAO,IAAI,CAAC,EAAE,GAAS,GAAa,GAAY,CAAC,GAA4B,EAAK,OAAO,CAAC,EAAE,EAAO,OAAO,EAAE,EAAO,OAAO,KAAK,OAAO,OAAO,EAAY,YAAY,EAAsB,MAAM,CAAC,GAAG,EAAW,QAAQ,IAAc,WAAW,WAAW,EAAa,QAAQ,EAAE,SAAS,EAAO,IAAI,CAAC,EAAE,GAAS,GAA0B,EAAK,gBAAgB,CAAC,EAAE,EAAK,EAAE,EAAK,MAAM,EAAK,OAAO,EAAK,KAAK,QAAQ,EAAO,GAAG,SAAS,GAAyB,EAAM,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,OAAO,OAAO,MAAM,EAAE,SAAS,CAAC,CAAC,GAAyB,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,WAAW,EAAY,QAAQ,IAAc,WAAW,WAAW,EAAa,QAAQ,CAAC,CAAC,EAAe,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,QAAQ,KAAc,WAAW,WAAW,EAAa,QAAQ,EAAE,SAAS,GAAY,EAAQ,GAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAO,EAAK,CAAI,CAAC,CAAC,EAAE,GAAS,GAAa,GAAY,GAA4B,EAAK,OAAO,CAAC,EAAE,EAAO,OAAO,EAAE,EAAO,OAAO,KAAK,OAAO,OAAO,EAAY,YAAY,EAAsB,MAAM,EAAW,cAAc,OAAO,SAAS,EAAO,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,wBAnWt4D,IAA2D,IAAwE,EAmW0wD,EAAkB,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,QAAQ,OAAO,EAAE,aAAa,CAAC,QAAQ,OAAO,EAAE,aAAa,QAAQ,wBAAwB,EAAI,EAAE,YAAY,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,SAAS,KAAK,EAAE,aAAa,CAAC,SAAS,KAAK,EAAE,aAAa,SAAS,wBAAwB,GAAK,OAAO,GAAM,EAAK,OAAO,OAAO,EAAE,MAAM,CAAC,KAAK,EAAY,KAAK,MAAM,QAAQ,iBAAiB,CAAC,MAAM,OAAO,KAAK,EAAE,OAAO,GAAM,EAAK,OAAO,SAAS,EAAK,cAAc,KAAK,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,YAAY,gCAAgC,OAAO,GAAM,EAAK,OAAO,SAAS,EAAK,cAAc,KAAK,EAAE,OAAO,CAAC,KAAK,EAAY,gBAAgB,MAAM,SAInoF,OAAO,GAAM,EAAK,OAAO,SAAS,EAAK,cAAc,KAAK,EAAE,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,YAAY,iCAAiC,OAAO,GAAM,EAAK,OAAO,SAAS,EAAK,cAAc,KAAK,EAAE,YAAY,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,SAAS,KAAK,EAAE,aAAa,CAAC,SAAS,KAAK,EAAE,aAAa,SAAS,wBAAwB,GAAK,OAAO,GAAM,EAAK,OAAO,OAAO,EAAE,MAAM,CAAC,KAAK,EAAY,gBAAgB,MAAM,QAAQ,OAAO,GAAM,EAAK,OAAO,SAAS,EAAK,cAAc,KAAK,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,YAAY,gCAAgC,OAAO,GAAM,EAAK,OAAO,SAAS,EAAK,cAAc,KAAK,CAAC,EAAE,EAAoB,EAAc,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,OAAO,EAAE,UAAU,CAAC,KAAK,EAAY,QAAQ,MAAM,YAAY,aAAa,EAAI,EAAE,IAAI,CAAC,KAAK,EAAY,KAAK,MAAM,MAAM,QAAQ,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,EAAE,aAAa,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,EAAE,aAAa,IAAI,EAAE,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,gBAAgB,aAAa,aAAa,CAAC,SAAS,IAAI,QAAQ,QAAQ,cAAc,UAAU,WAAW,QAAQ,UAAU,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,EAAY,QAAQ,MAAM,YAAY,YAAY,oKAAoK,aAAa,EAAK,EAAE,YAAY,CAAC,KAAK,EAAY,MAAM,MAAM,eAAe,YAAY,8HAA8H,aAAa,SAAS,EAAE,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAY,QAAQ,MAAM,UAAU,aAAa,EAAK,EAAE,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,KAAK,OAAO,GAAM,CAAC,EAAK,OAAO,EAAE,YAAY,CAAC,KAAK,EAAY,QAAQ,MAAM,gBAAgB,YAAY,gGAAgG,aAAa,GAAK,OAAO,GAAM,CAAC,EAAK,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,EAAY,UAAU,MAAM,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAY,KAAK,MAAM,aAAa,QAAQ,CAAC,WAAW,QAAQ,EAAE,aAAa,CAAC,WAAW,QAAQ,EAAE,aAAa,WAAW,wBAAwB,EAAI,EAAE,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,YAAY,4FAA4F,QAAQ,CAAC,KAAK,EAAY,OAAO,SAAS,CAAiB,EAAE,aAAa,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAO,EAAM,YAAY,UAAU,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,YAAY,8CAA8C,SAAS,EAAkB,OAAO,GAAO,EAAM,YAAY,QAAQ,EAAE,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,SAAS,OAAO,EAAE,aAAa,CAAC,iBAAiB,UAAU,EAAE,aAAa,SAAS,wBAAwB,EAAI,EAAE,aAAa,CAAC,KAAK,EAAY,QAAQ,MAAM,SAAS,YAAY,sGAAsG,aAAa,GAAM,OAAO,GAAO,EAAM,aAAa,OAAO,EAAE,mBAAmB,CAAC,KAAK,EAAY,KAAK,MAAM,gBAAgB,YAAY,+HAA+H,QAAQ,CAAC,YAAY,WAAW,EAAE,aAAa,CAAC,aAAa,YAAY,EAAE,aAAa,YAAY,wBAAwB,GAAK,OAAO,GAAO,EAAM,aAAa,SAAS,EAAM,YAAY,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,KAAK,KAAK,OAAO,GAAO,EAAM,aAAa,OAAO,EAAE,SAAS,CAAC,KAAK,EAAY,QAAQ,MAAM,WAAW,YAAY,qFAAqF,aAAa,GAAK,OAAO,GAAO,EAAM,aAAa,OAAO,EAAE,YAAY,CAAC,KAAK,EAAY,QAAQ,MAAM,gBAAgB,YAAY,2FAA2F,aAAa,GAAM,OAAO,GAAO,EAAM,aAAa,UAAU,EAAM,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAY,QAAQ,MAAM,OAAO,aAAa,EAAI,EAAE,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,UAAU,KAAK,SAAS,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAY,QAAQ,MAAM,UAAU,aAAa,EAAK,EAAE,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,mBAAmB,OAAO,GAAM,CAAC,EAAK,OAAO,EAAE,YAAY,CAAC,KAAK,EAAY,QAAQ,MAAM,gBAAgB,YAAY,iFAAiF,aAAa,GAAK,OAAO,GAAM,CAAC,EAAK,OAAO,EAAE,UAAU,CAAC,KAAK,EAAY,KAAK,MAAM,aAAa,QAAQ,CAAC,SAAS,WAAW,SAAS,UAAU,SAAS,UAAU,cAAc,aAAa,aAAa,aAAa,aAAa,YAAY,MAAM,aAAa,QAAQ,YAAY,EAAE,aAAa,CAAC,SAAS,WAAW,SAAS,UAAU,SAAS,UAAU,cAAc,aAAa,aAAa,aAAa,aAAa,YAAY,MAAM,aAAa,QAAQ,YAAY,EAAE,aAAa,SAAS,OAAO,GAAM,CAAC,EAAK,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAc,YAAY,qBCtWvmK,SAAwB,EAAS,EAAO,EAAa,CAAC,MAAM,CAAC,OAAO,0BAA0B,YAAY,sEAAsE,MAAM,iBAAiB,CAAE"}