{"version":3,"file":"ParallaxImage_prod.BusAP-WA.mjs","names":["useRef","__esmMin","init_ssg_sandbox_shims","init_npm_react_18_3_1","ce","p","c","init_jsx_runtime","de","window","useReducedMotion","init_framer_motion_DhsWWWsN","addPropertyControls","RenderTarget","init_framer_BWFVvmND","ControlType","radiusValue","radius","clamp","max","min","value","sharedTick","needsContinuous","instance","sharedInstances","requestSharedUpdate","sharedFrameId","handleSharedVisibility","attachSharedListeners","sharedListenersAttached","detachSharedListenersIfEmpty","ImageParallax","DEFAULT_IMAGE","DEFAULT_RADIUS","props","containerRef","imageRef","isCanvas","reducedMotion","container","imageElement","lastX","lastY","lastLeft","sleepTimer","wantsContinuous","horizontalParallaxAmount","clearSleepTimer","armSleepProbe","rect","verticalProgress","layoutWidth","layoutHeight","maxY","verticalParallaxAmount","y","x","horizontalProgress","maxX","TRANSFORM_EPSILON","setWillChange","on","intersectionObserver","entry","resizeObserver","imageSrc","imageAttributes","image","imagePosition","positionX","positionY","borderRadius","style","boxShadow","COVER_BLEED_PX","border","init_ParallaxImage_prod","\"defaultValue\""],"sources":["https:/framerusercontent.com/modules/zxcGfQb3lPhoJOWc1HTU/UJ2Vbt1b9eAYHpiaBd65/ParallaxImage_prod.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useRef}from\"react\";import{useReducedMotion}from\"framer-motion\";const DEFAULT_IMAGE={src:\"https://framerusercontent.com/images/oHxPQbqbgpU7CA0wduhfDb4izBY.png\",alt:\"\"};const DEFAULT_RADIUS={top:0,right:0,bottom:0,left:0};function radiusValue(radius){if(typeof radius===\"number\"||typeof radius===\"string\")return radius;return`${radius?.top??0}px ${radius?.right??0}px ${radius?.bottom??0}px ${radius?.left??0}px`;}/** Skip style writes when transform delta is below this many pixels. */const TRANSFORM_EPSILON=.5;/** Extra px of image on every side, absorbing subpixel rounding at max shift. */const COVER_BLEED_PX=1;function clamp(value,min,max){return Math.min(max,Math.max(min,value));}const sharedInstances=new Set;let sharedFrameId=null;let sharedListenersAttached=false;function sharedTick(){sharedFrameId=null;if(document.hidden)return;let needsContinuous=false;for(const instance of sharedInstances){if(!instance.active||!instance.intersecting)continue;instance.update();if(instance.continuous)needsContinuous=true;}if(needsContinuous){sharedFrameId=requestAnimationFrame(sharedTick);}}function requestSharedUpdate(){if(sharedFrameId===null&&!document.hidden&&sharedInstances.size>0){sharedFrameId=requestAnimationFrame(sharedTick);}}function handleSharedVisibility(){if(document.hidden){if(sharedFrameId!==null){cancelAnimationFrame(sharedFrameId);sharedFrameId=null;}}else{requestSharedUpdate();}}function attachSharedListeners(){if(sharedListenersAttached)return;sharedListenersAttached=true;window.addEventListener(\"scroll\",requestSharedUpdate,{passive:true});window.addEventListener(\"resize\",requestSharedUpdate,{passive:true});document.addEventListener(\"visibilitychange\",handleSharedVisibility);}function detachSharedListenersIfEmpty(){if(sharedInstances.size>0)return;if(!sharedListenersAttached)return;sharedListenersAttached=false;window.removeEventListener(\"scroll\",requestSharedUpdate);window.removeEventListener(\"resize\",requestSharedUpdate);document.removeEventListener(\"visibilitychange\",handleSharedVisibility);if(sharedFrameId!==null){cancelAnimationFrame(sharedFrameId);sharedFrameId=null;}}/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 300\n * @framerDisableUnlink\n */export default function ImageParallax(props){const{verticalParallaxAmount=30,horizontalParallaxAmount=0,image=DEFAULT_IMAGE,style,borderRadius=DEFAULT_RADIUS,border,boxShadow}=props;const containerRef=useRef(null);const imageRef=useRef(null);const isCanvas=RenderTarget.current()===RenderTarget.canvas;const reducedMotion=useReducedMotion();useEffect(()=>{if(isCanvas)return;if(reducedMotion){if(imageRef.current){imageRef.current.style.transform=\"translate3d(0, 0, 0)\";imageRef.current.style.willChange=\"auto\";}return;}const container=containerRef.current?.isConnected?containerRef.current:null;const imageElement=imageRef.current;if(!container||!imageElement)return;let lastX=Number.NaN;let lastY=Number.NaN;let lastLeft=Number.NaN;let sleepTimer=null;const wantsContinuous=horizontalParallaxAmount!==0;/** While X≠0 is intersecting but stationary, poll this often so looping parents still wake without a window scroll. */const CONTINUOUS_SLEEP_MS=120;const clearSleepTimer=()=>{if(sleepTimer!==null){window.clearTimeout(sleepTimer);sleepTimer=null;}};const armSleepProbe=()=>{if(sleepTimer!==null)return;if(!instance.active||!instance.intersecting||document.hidden)return;sleepTimer=window.setTimeout(()=>{sleepTimer=null;// Force movement re-check on the next shared tick\nlastLeft=Number.NaN;requestSharedUpdate();},CONTINUOUS_SLEEP_MS);};const instance={active:true,intersecting:true,continuous:false,update:()=>{if(!instance.active||!instance.intersecting||document.hidden){instance.continuous=false;clearSleepTimer();return;}const rect=container.getBoundingClientRect();if(rect.width<=0||rect.height<=0){instance.continuous=false;clearSleepTimer();return;}const verticalProgress=Math.max(0,Math.min(1,(window.innerHeight-rect.top)/(window.innerHeight+rect.height)));// Shift in layout px (offset size ignores ancestor transforms\n// like hover scale), then clamp to the overscan so the image\n// always covers the box: overscan per side = |amount|/2 %.\nconst layoutWidth=container.offsetWidth||rect.width;const layoutHeight=container.offsetHeight||rect.height;const maxY=Math.abs(verticalParallaxAmount)/200*layoutHeight;const y=clamp((verticalProgress-.5)*(verticalParallaxAmount/100)*layoutHeight,-maxY,maxY);let x=0;if(wantsContinuous){// Clamped to ±0.5 so off-screen / looping positions saturate\n// instead of sliding past the overscan.\nconst horizontalProgress=clamp((rect.left+rect.width/2-window.innerWidth/2)/window.innerWidth,-.5,.5);const maxX=Math.abs(horizontalParallaxAmount)/200*layoutWidth;x=clamp(horizontalProgress*(horizontalParallaxAmount/100)*layoutWidth,-maxX,maxX);// Sleep continuous rAF when stationary; probe infrequently\n// so looping parents that later move rect.left still wake.\n// Default X=0 never enters this branch.\nif(Number.isNaN(lastLeft)||Math.abs(rect.left-lastLeft)>=TRANSFORM_EPSILON){instance.continuous=true;lastLeft=rect.left;clearSleepTimer();}else{instance.continuous=false;armSleepProbe();}}else{instance.continuous=false;clearSleepTimer();}if(Number.isNaN(lastX)||Number.isNaN(lastY)||Math.abs(x-lastX)>=TRANSFORM_EPSILON||Math.abs(y-lastY)>=TRANSFORM_EPSILON){lastX=x;lastY=y;imageElement.style.transform=`translate3d(${x}px, ${y}px, 0)`;}}};const setWillChange=on=>{imageElement.style.willChange=on?\"transform\":\"auto\";};const intersectionObserver=new IntersectionObserver(([entry])=>{instance.intersecting=entry?entry.isIntersecting:true;if(instance.intersecting){setWillChange(true);// Wake from sleep when re-entering view\nlastLeft=Number.NaN;clearSleepTimer();requestSharedUpdate();}else{instance.continuous=false;clearSleepTimer();setWillChange(false);}},{rootMargin:\"100px\"});const resizeObserver=new ResizeObserver(()=>{// Size changes can move rect.left without a window scroll\nlastLeft=Number.NaN;// ResizeObserver runs after layout, before paint: re-clamp now so\n// the first frame at the new size never shows a stale shift.\ninstance.update();requestSharedUpdate();});sharedInstances.add(instance);attachSharedListeners();setWillChange(true);intersectionObserver.observe(container);resizeObserver.observe(container);requestSharedUpdate();return()=>{instance.active=false;instance.continuous=false;clearSleepTimer();sharedInstances.delete(instance);detachSharedListenersIfEmpty();intersectionObserver.disconnect();resizeObserver.disconnect();imageElement.style.willChange=\"auto\";};},[verticalParallaxAmount,horizontalParallaxAmount,isCanvas,reducedMotion]);const{src:imageSrc,positionX,positionY,...imageAttributes}=typeof image===\"string\"?{src:image,positionX:undefined,positionY:undefined}:image;const imagePosition=positionX&&positionY?`${positionX} ${positionY}`:\"center\";const radius=radiusValue(borderRadius);return /*#__PURE__*/_jsxs(\"div\",{\"data-build\":\"parallax-image-prod-20261006-01\",ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",...style,overflow:\"hidden\",borderRadius:radius,boxShadow:boxShadow||undefined},children:[isCanvas?/*#__PURE__*/_jsx(\"img\",{...imageAttributes,src:imageSrc,alt:imageAttributes.alt??\"\",draggable:false,style:{width:\"100%\",height:\"100%\",display:\"block\",objectFit:\"cover\",objectPosition:imagePosition,borderRadius:radius,userSelect:\"none\",pointerEvents:\"none\"}}):/*#__PURE__*/_jsx(\"img\",{...imageAttributes,ref:imageRef,src:imageSrc,alt:imageAttributes.alt??\"\",draggable:false,style:{position:\"absolute\",top:`calc(-${Math.abs(verticalParallaxAmount)/2}% - ${COVER_BLEED_PX}px)`,left:`calc(-${Math.abs(horizontalParallaxAmount)/2}% - ${COVER_BLEED_PX}px)`,width:`calc(100% + ${Math.abs(horizontalParallaxAmount)}% + ${2*COVER_BLEED_PX}px)`,height:`calc(100% + ${Math.abs(verticalParallaxAmount)}% + ${2*COVER_BLEED_PX}px)`,maxWidth:\"none\",maxHeight:\"none\",objectFit:\"cover\",objectPosition:imagePosition,// No radius on the moving image: the container clips it,\n// so shifted image corners can never expose background.\n// will-change set/cleared via IntersectionObserver\nbackfaceVisibility:\"hidden\",userSelect:\"none\",pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,zIndex:1,boxSizing:\"border-box\",borderRadius:radius,pointerEvents:\"none\",...border||{}}})]});}addPropertyControls(ImageParallax,{image:{type:ControlType.ResponsiveImage,title:\"Image\",[\"defaultValue\"]:DEFAULT_IMAGE},verticalParallaxAmount:{type:ControlType.Number,title:\"Parallax Y\",defaultValue:30,step:5,max:100,min:-100,unit:\"%\"},horizontalParallaxAmount:{type:ControlType.Number,title:\"Parallax X\",defaultValue:0,step:5,max:100,min:-100,unit:\"%\"},border:{type:ControlType.Border,title:\"Border\",optional:true},borderRadius:{type:ControlType.BorderRadius,title:\"Radius\",defaultValue:DEFAULT_RADIUS,min:0,max:100,step:1,unit:\"px\"},boxShadow:{type:ControlType.BoxShadow,title:\"Shadow\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});ImageParallax.displayName=\"Image Parallax\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ImageParallax\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"300\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicWidth\":\"400\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ParallaxImage_prod.map"],"mappings":"A,+PAAuW,SAASgB,EAAY,EAAO,CAAqE,OAAjE,OAAOC,GAAS,UAAU,OAAOA,GAAS,SAAgBA,EAAa,GAAGA,GAAQ,KAAK,EAAE,KAAKA,GAAQ,OAAO,EAAE,KAAKA,GAAQ,QAAQ,EAAE,KAAKA,GAAQ,MAAM,EAAE,GAAI,CAA4M,SAASC,EAAM,EAAM,EAAI,EAAI,CAAC,OAAO,KAAK,IAAIC,EAAI,KAAK,IAAIC,EAAIC,CAAK,CAAC,CAAE,CAAwF,SAASC,GAAY,CAAoB,GAAnB,EAAc,KAAQ,SAAS,OAAO,OAAO,IAAIC,EAAgB,GAAM,IAAI,IAAMC,KAAYC,EAAqBD,EAAS,QAASA,EAAS,eAAsBA,EAAS,OAAO,EAAKA,EAAS,aAAW,EAAgB,KAASD,IAAiB,EAAc,sBAAsBD,CAAU,EAAG,CAAC,SAASI,GAAqB,CAAIC,IAAgB,MAAM,CAAC,SAAS,QAAQF,EAAgB,KAAK,IAAG,EAAc,sBAAsBH,CAAU,EAAG,CAAC,SAASM,GAAwB,CAAI,SAAS,OAAWD,IAAgB,OAAM,qBAAqBA,CAAa,EAAE,EAAc,MAAYD,EAAoB,CAAG,CAAC,SAASG,GAAuB,CAAIC,IAA+B,EAAwB,GAAKrB,EAAO,iBAAiB,SAASiB,EAAoB,CAAC,QAAQ,EAAI,CAAC,EAAEjB,EAAO,iBAAiB,SAASiB,EAAoB,CAAC,QAAQ,EAAI,CAAC,EAAE,SAAS,iBAAiB,mBAAmBE,CAAsB,EAAE,CAAC,SAASG,GAA8B,CAAIN,EAAgB,KAAK,GAAaK,IAA+B,EAAwB,GAAMrB,EAAO,oBAAoB,SAASiB,CAAmB,EAAEjB,EAAO,oBAAoB,SAASiB,CAAmB,EAAE,SAAS,oBAAoB,mBAAmBE,CAAsB,EAAKD,IAAgB,OAAM,qBAAqBA,CAAa,EAAE,EAAc,MAAM,CAM1sE,SAAwBK,EAAc,EAAM,CAAC,GAAK,CAAC,yBAAuB,GAAG,2BAAyB,EAAE,QAAMC,EAAc,QAAM,eAAaC,EAAe,SAAO,aAAWC,EAAYC,EAAapC,EAAO,IAAI,EAAQqC,EAASrC,EAAO,IAAI,EAAQsC,EAASzB,EAAa,QAAQ,IAAIA,EAAa,OAAa0B,EAAc7B,EAAiB,EAAEN,MAAc,CAAC,GAAGkC,EAAS,OAAO,GAAGC,EAAc,CAAIF,EAAS,UAAS,EAAS,QAAQ,MAAM,UAAU,uBAAuB,EAAS,QAAQ,MAAM,WAAW,QAAQ,MAAO,CAAC,IAAMG,EAAUJ,EAAa,SAAS,YAAYA,EAAa,QAAQ,KAAWK,EAAaJ,EAAS,QAAQ,GAAG,CAACG,GAAW,CAACC,EAAa,OAAO,IAAIC,EAAM,IAAeC,EAAM,IAAeC,EAAS,IAAeC,EAAW,KAAWC,EAAgBC,IAA2B,EAA6JC,MAAoB,CAAIH,IAAa,OAAMpC,EAAO,aAAaoC,CAAU,EAAE,EAAW,KAAM,EAAQI,MAAkB,CAAIJ,IAAa,MAAgBrB,EAAS,QAASA,EAAS,cAAc,UAAS,SAAc,EAAWf,EAAO,eAAe,CAAC,EAAW,KACvsC,EAAS,IAAWiB,EAAoB,CAAE,EAAE,GAAmB,EAAE,EAAQF,EAAS,CAAC,OAAO,GAAK,aAAa,GAAK,WAAW,GAAM,WAAW,CAAC,GAAG,CAACA,EAAS,QAAQ,CAACA,EAAS,cAAc,SAAS,OAAO,CAAC,EAAS,WAAW,GAAMwB,EAAgB,EAAE,MAAO,CAAC,IAAME,EAAKV,EAAU,sBAAsB,EAAE,GAAGU,EAAK,OAAO,GAAGA,EAAK,QAAQ,EAAE,CAAC,EAAS,WAAW,GAAMF,EAAgB,EAAE,MAAO,CAAC,IAAMG,EAAiB,KAAK,IAAI,EAAE,KAAK,IAAI,GAAG1C,EAAO,YAAYyC,EAAK,MAAMzC,EAAO,YAAYyC,EAAK,OAAO,CAAC,EAGzeE,EAAYZ,EAAU,aAAaU,EAAK,MAAYG,EAAab,EAAU,cAAcU,EAAK,OAAaI,EAAK,KAAK,IAAIC,CAAsB,EAAE,IAAIF,EAAmBG,EAAEtC,GAAOiC,EAAiB,KAAKI,EAAuB,KAAKF,EAAa,CAACC,EAAKA,CAAI,EAAMG,EAAE,EAAE,GAAGX,EAAgB,CAE7R,IAAMY,EAAmBxC,GAAOgC,EAAK,KAAKA,EAAK,MAAM,EAAEzC,EAAO,WAAW,GAAGA,EAAO,WAAW,IAAI,EAAE,EAAQkD,EAAK,KAAK,IAAIZ,CAAwB,EAAE,IAAIK,EAAY,EAAElC,EAA0B6B,EAAyB,IAA7CW,EAAkDN,EAAY,CAACO,EAAKA,CAAI,EAGjP,OAAO,MAAMf,CAAQ,GAAG,KAAK,IAAIM,EAAK,KAAKN,CAAQ,GAAGgB,GAAmB,EAAS,WAAW,GAAK,EAASV,EAAK,KAAKF,EAAgB,IAAQ,EAAS,WAAW,GAAMC,EAAc,EAAG,KAAM,GAAS,WAAW,GAAMD,EAAgB,GAAM,OAAO,MAAMN,CAAK,GAAG,OAAO,MAAMC,CAAK,GAAG,KAAK,IAAIc,EAAEf,CAAK,GAAGkB,GAAmB,KAAK,IAAIJ,EAAEb,CAAK,GAAGiB,KAAmB,EAAMH,EAAE,EAAMD,EAAE,EAAa,MAAM,UAAU,eAAeC,EAAE,MAAMD,EAAE,QAAS,CAAC,EAAQK,EAAc,GAAI,CAAC,EAAa,MAAM,WAAWC,EAAG,YAAY,MAAO,EAAQC,EAAqB,IAAI,sBAAsB,CAACC,KAAS,CAAC,EAAS,aAAa,IAAMA,EAAM,eAAuBxC,EAAS,cAAcqC,EAAc,EAAI,EAC1qB,EAAS,IAAWb,EAAgB,EAAEtB,EAAoB,IAAQ,EAAS,WAAW,GAAMsB,EAAgB,EAAEa,EAAc,EAAK,EAAG,EAAE,CAAC,WAAW,OAAO,CAAC,EAAQI,EAAe,IAAI,mBAAmB,CACxM,EAAS,IAETzC,EAAS,OAAO,EAAEE,EAAoB,CAAE,CAAC,EAA4K,OAA1KD,EAAgB,IAAID,CAAQ,EAAEK,EAAsB,EAAEgC,EAAc,EAAI,EAAEE,EAAqB,QAAQvB,CAAS,EAAEyB,EAAe,QAAQzB,CAAS,EAAEd,EAAoB,MAAY,CAAC,EAAS,OAAO,GAAM,EAAS,WAAW,GAAMsB,EAAgB,EAAEvB,EAAgB,OAAOD,CAAQ,EAAEO,EAA6B,EAAEgC,EAAqB,WAAW,EAAEE,EAAe,WAAW,EAAE,EAAa,MAAM,WAAW,MAAO,CAAE,EAAE,CAACV,EAAuBR,EAAyBT,EAASC,CAAa,CAAC,EAAE,GAAK,CAAC,IAAI2B,EAAS,YAAU,YAAU,GAAGC,GAAiB,OAAOC,GAAQ,SAAS,CAAC,IAAIA,EAAM,UAAU,IAAA,GAAU,UAAU,IAAA,EAAS,EAAEA,EAAYC,EAAcC,GAAWC,EAAU,GAAGD,EAAU,GAAGC,IAAY,SAAetD,EAAOD,EAAYwD,CAAY,EAAE,MAAoB,gBAAM,MAAM,CAAC,aAAa,kCAAkC,IAAIpC,EAAa,MAAM,CAAC,SAAS,WAAW,MAAM,OAAO,OAAO,OAAO,GAAGqC,EAAM,SAAS,SAAS,aAAaxD,EAAO,UAAUyD,GAAW,IAAA,EAAS,EAAE,SAAS,CAACpC,EAAsB,gBAAK,MAAM,CAAC,GAAG6B,EAAgB,IAAID,EAAS,IAAIC,EAAgB,KAAK,GAAG,UAAU,GAAM,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,QAAQ,QAAQ,UAAU,QAAQ,eAAeE,EAAc,aAAapD,EAAO,WAAW,OAAO,cAAc,MAAM,CAAC,CAAC,EAAe,gBAAK,MAAM,CAAC,GAAGkD,EAAgB,IAAI9B,EAAS,IAAI6B,EAAS,IAAIC,EAAgB,KAAK,GAAG,UAAU,GAAM,MAAM,CAAC,SAAS,WAAW,IAAI,SAAS,KAAK,IAAIZ,CAAsB,EAAE,EAAE,MAAMoB,EAAe,KAAK,KAAK,SAAS,KAAK,IAAI5B,CAAwB,EAAE,EAAE,MAAM4B,EAAe,KAAK,MAAM,eAAe,KAAK,IAAI5B,CAAwB,EAAE,UAA4B,OAAO,eAAe,KAAK,IAAIQ,CAAsB,EAAE,UAA4B,SAAS,OAAO,UAAU,OAAO,UAAU,QAAQ,eAAec,EAG/xD,mBAAmB,SAAS,WAAW,OAAO,cAAc,MAAM,CAAC,CAAC,EAAe,gBAAK,MAAM,CAAC,cAAc,OAAO,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,OAAO,EAAE,UAAU,aAAa,aAAapD,EAAO,cAAc,OAAO,GAAG2D,GAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,C,oEAtBpC,EAAc,CAAC,IAAI,uEAAuE,IAAI,EAAE,EAAQ,EAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAgR,EAAkB,GAA0F,EAAe,EAAgF,kBAAgB,IAAI,IAAQ,EAAc,KAAS,EAAwB,GAsBtpBhE,EAAoBoB,EAAc,CAAC,MAAM,CAAC,KAAKjB,EAAY,gBAAgB,MAAM,QAAS+D,aAAgB7C,CAAa,EAAE,uBAAuB,CAAC,KAAKlB,EAAY,OAAO,MAAM,aAAa,aAAa,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,yBAAyB,CAAC,KAAKA,EAAY,OAAO,MAAM,aAAa,aAAa,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,OAAO,CAAC,KAAKA,EAAY,OAAO,MAAM,SAAS,SAAS,EAAI,EAAE,aAAa,CAAC,KAAKA,EAAY,aAAa,MAAM,SAAS,aAAamB,EAAe,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,EAAE,UAAU,CAAC,KAAKnB,EAAY,UAAU,MAAM,SAAS,YAAY,oEAAoE,CAAC,CAAC,EAAE,EAAc,YAAY,gB"}