=S&&x=S&&x=S&&(o=m)}if(s.initialized&&o!==f&&(!s.allowSlideNext&&(h?d>s.translate&&d>s.minTranslate():ds.translate&&d>s.maxTranslate()&&(f||0)!==o))return!1;o!==(c||0)&&n&&s.emit("beforeSlideChangeStart"),s.updateProgress(d);let p;if(o>f?p="next":o0?(s._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{y[m?"scrollLeft":"scrollTop"]=x})):y[m?"scrollLeft":"scrollTop"]=x,S&&requestAnimationFrame(()=>{s.wrapperEl.style.scrollSnapType="",s._immediateVirtual=!1})}else{if(!s.support.smoothScroll)return Uv({swiper:s,targetPosition:x,side:m?"left":"top"}),!0;y.scrollTo({[m?"left":"top"]:x,behavior:"smooth"})}return!0}return s.setTransition(t),s.setTranslate(d),s.updateActiveIndex(o),s.updateSlidesClasses(),s.emit("beforeTransitionStart",t,r),s.transitionStart(n,p),t===0?s.transitionEnd(n,p):s.animating||(s.animating=!0,s.onSlideToWrapperTransitionEnd||(s.onSlideToWrapperTransitionEnd=function(x){!s||s.destroyed||x.target===this&&(s.wrapperEl.removeEventListener("transitionend",s.onSlideToWrapperTransitionEnd),s.onSlideToWrapperTransitionEnd=null,delete s.onSlideToWrapperTransitionEnd,s.transitionEnd(n,p))}),s.wrapperEl.addEventListener("transitionend",s.onSlideToWrapperTransitionEnd)),!0}function Fk(e,t,n,r){e===void 0&&(e=0),n===void 0&&(n=!0),typeof e=="string"&&(e=parseInt(e,10));const i=this;if(i.destroyed)return;typeof t>"u"&&(t=i.params.speed);const s=i.grid&&i.params.grid&&i.params.grid.rows>1;let o=e;if(i.params.loop)if(i.virtual&&i.params.virtual.enabled)o=o+i.virtual.slidesBefore;else{let a;if(s){const h=o*i.params.grid.rows;a=i.slides.filter(y=>y.getAttribute("data-swiper-slide-index")*1===h)[0].column}else a=i.getSlideIndexByData(o);const l=s?Math.ceil(i.slides.length/i.params.grid.rows):i.slides.length,{centeredSlides:u}=i.params;let c=i.params.slidesPerView;c==="auto"?c=i.slidesPerViewDynamic():(c=Math.ceil(parseFloat(i.params.slidesPerView,10)),u&&c%2===0&&(c=c+1));let f=l-ay.getAttribute("data-swiper-slide-index")*1===h)[0].column}else o=i.getSlideIndexByData(o)}return requestAnimationFrame(()=>{i.slideTo(o,t,n,r)}),i}function Yk(e,t,n){t===void 0&&(t=!0);const r=this,{enabled:i,params:s,animating:o}=r;if(!i||r.destroyed)return r;typeof e>"u"&&(e=r.params.speed);let a=s.slidesPerGroup;s.slidesPerView==="auto"&&s.slidesPerGroup===1&&s.slidesPerGroupAuto&&(a=Math.max(r.slidesPerViewDynamic("current",!0),1));const l=r.activeIndex{r.slideTo(r.activeIndex+l,e,t,n)}),!0}return s.rewind&&r.isEnd?r.slideTo(0,e,t,n):r.slideTo(r.activeIndex+l,e,t,n)}function Uk(e,t,n){t===void 0&&(t=!0);const r=this,{params:i,snapGrid:s,slidesGrid:o,rtlTranslate:a,enabled:l,animating:u}=r;if(!l||r.destroyed)return r;typeof e>"u"&&(e=r.params.speed);const c=r.virtual&&i.virtual.enabled;if(i.loop){if(u&&!c&&i.loopPreventsSliding)return!1;r.loopFix({direction:"prev"}),r._clientLeft=r.wrapperEl.clientLeft}const f=a?r.translate:-r.translate;function h(d){return d<0?-Math.floor(Math.abs(d)):Math.floor(d)}const y=h(f),w=s.map(d=>h(d));let g=s[w.indexOf(y)-1];if(typeof g>"u"&&i.cssMode){let d;s.forEach((p,m)=>{y>=p&&(d=m)}),typeof d<"u"&&(g=s[d>0?d-1:d])}let k=0;if(typeof g<"u"&&(k=o.indexOf(g),k<0&&(k=r.activeIndex-1),i.slidesPerView==="auto"&&i.slidesPerGroup===1&&i.slidesPerGroupAuto&&(k=k-r.slidesPerViewDynamic("previous",!0)+1,k=Math.max(k,0))),i.rewind&&r.isBeginning){const d=r.params.virtual&&r.params.virtual.enabled&&r.virtual?r.virtual.slides.length-1:r.slides.length-1;return r.slideTo(d,e,t,n)}else if(i.loop&&r.activeIndex===0&&i.cssMode)return requestAnimationFrame(()=>{r.slideTo(k,e,t,n)}),!0;return r.slideTo(k,e,t,n)}function Bk(e,t,n){t===void 0&&(t=!0);const r=this;if(!r.destroyed)return typeof e>"u"&&(e=r.params.speed),r.slideTo(r.activeIndex,e,t,n)}function Wk(e,t,n,r){t===void 0&&(t=!0),r===void 0&&(r=.5);const i=this;if(i.destroyed)return;typeof e>"u"&&(e=i.params.speed);let s=i.activeIndex;const o=Math.min(i.params.slidesPerGroupSkip,s),a=o+Math.floor((s-o)/i.params.slidesPerGroup),l=i.rtlTranslate?i.translate:-i.translate;if(l>=i.snapGrid[a]){const u=i.snapGrid[a],c=i.snapGrid[a+1];l-u>(c-u)*r&&(s+=i.params.slidesPerGroup)}else{const u=i.snapGrid[a-1],c=i.snapGrid[a];l-u<=(c-u)*r&&(s-=i.params.slidesPerGroup)}return s=Math.max(s,0),s=Math.min(s,i.slidesGrid.length-1),i.slideTo(s,e,t,n)}function Hk(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:n}=e,r=t.slidesPerView==="auto"?e.slidesPerViewDynamic():t.slidesPerView;let i=e.clickedIndex,s;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;s=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ie.slides.length-e.loopedSlides+r/2?(e.loopFix(),i=e.getSlideIndex(wn(n,`${o}[data-swiper-slide-index="${s}"]`)[0]),Ra(()=>{e.slideTo(i)})):e.slideTo(i):i>e.slides.length-r?(e.loopFix(),i=e.getSlideIndex(wn(n,`${o}[data-swiper-slide-index="${s}"]`)[0]),Ra(()=>{e.slideTo(i)})):e.slideTo(i)}else e.slideTo(i)}var Vk={slideTo:Nk,slideToLoop:Fk,slideNext:Yk,slidePrev:Uk,slideReset:Bk,slideToClosest:Wk,slideToClickedSlide:Hk};function Gk(e){const t=this,{params:n,slidesEl:r}=t;if(!n.loop||t.virtual&&t.params.virtual.enabled)return;const i=()=>{wn(r,`.${n.slideClass}, swiper-slide`).forEach((f,h)=>{f.setAttribute("data-swiper-slide-index",h)})},s=t.grid&&n.grid&&n.grid.rows>1,o=n.slidesPerGroup*(s?n.grid.rows:1),a=t.slides.length%o!==0,l=s&&t.slides.length%n.grid.rows!==0,u=c=>{for(let f=0;f1;u.length"u"?s=l.getSlideIndex(u.filter(D=>D.classList.contains(y.slideActiveClass))[0]):S=s;const P=r==="next"||!r,_=r==="prev"||!r;let b=0,j=0;const A=p?Math.ceil(u.length/y.grid.rows):u.length,T=(p?u[s].column:s)+(w&&typeof i>"u"?-g/2+.5:0);if(T=0;re-=1)u[re].column===B&&m.push(re)}else m.push(A-L-1)}}else if(T+g>A-d){j=Math.max(T-(A-d*2),k);for(let D=0;D{B.column===L&&x.push(re)}):x.push(L)}}if(l.__preventObserver__=!0,requestAnimationFrame(()=>{l.__preventObserver__=!1}),_&&m.forEach(D=>{u[D].swiperLoopMoveDOM=!0,h.prepend(u[D]),u[D].swiperLoopMoveDOM=!1}),P&&x.forEach(D=>{u[D].swiperLoopMoveDOM=!0,h.append(u[D]),u[D].swiperLoopMoveDOM=!1}),l.recalcSlides(),y.slidesPerView==="auto"?l.updateSlides():p&&(m.length>0&&_||x.length>0&&P)&&l.slides.forEach((D,L)=>{l.grid.updateSlide(L,D,l.slides)}),y.watchSlidesProgress&&l.updateSlidesOffset(),n){if(m.length>0&&_){if(typeof t>"u"){const D=l.slidesGrid[S],B=l.slidesGrid[S+b]-D;a?l.setTranslate(l.translate-B):(l.slideTo(S+Math.ceil(b),0,!1,!0),i&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-B,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-B))}else if(i){const D=p?m.length/y.grid.rows:m.length;l.slideTo(l.activeIndex+D,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(x.length>0&&P)if(typeof t>"u"){const D=l.slidesGrid[S],B=l.slidesGrid[S-j]-D;a?l.setTranslate(l.translate-B):(l.slideTo(S-j,0,!1,!0),i&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-B,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-B))}else{const D=p?x.length/y.grid.rows:x.length;l.slideTo(l.activeIndex-D,0,!1,!0)}}if(l.allowSlidePrev=c,l.allowSlideNext=f,l.controller&&l.controller.control&&!o){const D={slideRealIndex:t,direction:r,setTranslate:i,activeSlideIndex:s,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach(L=>{!L.destroyed&&L.params.loop&&L.loopFix({...D,slideTo:L.params.slidesPerView===y.slidesPerView?n:!1})}):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...D,slideTo:l.controller.control.params.slidesPerView===y.slidesPerView?n:!1})}l.emit("loopFix")}function Qk(){const e=this,{params:t,slidesEl:n}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const r=[];e.slides.forEach(i=>{const s=typeof i.swiperSlideIndex>"u"?i.getAttribute("data-swiper-slide-index")*1:i.swiperSlideIndex;r[s]=i}),e.slides.forEach(i=>{i.removeAttribute("data-swiper-slide-index")}),r.forEach(i=>{n.append(i)}),e.recalcSlides(),e.slideTo(e.realIndex,0)}var Xk={loopCreate:Gk,loopFix:$k,loopDestroy:Qk};function Kk(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const n=t.params.touchEventsTarget==="container"?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),n.style.cursor="move",n.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1})}function Zk(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e[e.params.touchEventsTarget==="container"?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1}))}var Jk={setGrabCursor:Kk,unsetGrabCursor:Zk};function qk(e,t){t===void 0&&(t=this);function n(r){if(!r||r===kr()||r===Dt())return null;r.assignedSlot&&(r=r.assignedSlot);const i=r.closest(e);return!i&&!r.getRootNode?null:i||n(r.getRootNode().host)}return n(t)}function kh(e,t,n){const r=Dt(),{params:i}=e,s=i.edgeSwipeDetection,o=i.edgeSwipeThreshold;return s&&(n<=o||n>=r.innerWidth-o)?s==="prevent"?(t.preventDefault(),!0):!1:!0}function eC(e){const t=this,n=kr();let r=e;r.originalEvent&&(r=r.originalEvent);const i=t.touchEventsData;if(r.type==="pointerdown"){if(i.pointerId!==null&&i.pointerId!==r.pointerId)return;i.pointerId=r.pointerId}else r.type==="touchstart"&&r.targetTouches.length===1&&(i.touchId=r.targetTouches[0].identifier);if(r.type==="touchstart"){kh(t,r,r.targetTouches[0].pageX);return}const{params:s,touches:o,enabled:a}=t;if(!a||!s.simulateTouch&&r.pointerType==="mouse"||t.animating&&s.preventInteractionOnTransition)return;!t.animating&&s.cssMode&&s.loop&&t.loopFix();let l=r.target;if(s.touchEventsTarget==="wrapper"&&!t.wrapperEl.contains(l)||"which"in r&&r.which===3||"button"in r&&r.button>0||i.isTouched&&i.isMoved)return;const u=!!s.noSwipingClass&&s.noSwipingClass!=="",c=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&c&&(l=c[0]);const f=s.noSwipingSelector?s.noSwipingSelector:`.${s.noSwipingClass}`,h=!!(r.target&&r.target.shadowRoot);if(s.noSwiping&&(h?qk(f,l):l.closest(f))){t.allowClick=!0;return}if(s.swipeHandler&&!l.closest(s.swipeHandler))return;o.currentX=r.pageX,o.currentY=r.pageY;const y=o.currentX,w=o.currentY;if(!kh(t,r,y))return;Object.assign(i,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=y,o.startY=w,i.touchStartTime=La(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,s.threshold>0&&(i.allowThresholdMove=!1);let g=!0;l.matches(i.focusableElements)&&(g=!1,l.nodeName==="SELECT"&&(i.isTouched=!1)),n.activeElement&&n.activeElement.matches(i.focusableElements)&&n.activeElement!==l&&n.activeElement.blur();const k=g&&t.allowTouchMove&&s.touchStartPreventDefault;(s.touchStartForcePreventDefault||k)&&!l.isContentEditable&&r.preventDefault(),s.freeMode&&s.freeMode.enabled&&t.freeMode&&t.animating&&!s.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function tC(e){const t=kr(),n=this,r=n.touchEventsData,{params:i,touches:s,rtlTranslate:o,enabled:a}=n;if(!a||!i.simulateTouch&&e.pointerType==="mouse")return;let l=e;if(l.originalEvent&&(l=l.originalEvent),l.type==="pointermove"&&(r.touchId!==null||l.pointerId!==r.pointerId))return;let u;if(l.type==="touchmove"){if(u=[...l.changedTouches].filter(P=>P.identifier===r.touchId)[0],!u||u.identifier!==r.touchId)return}else u=l;if(!r.isTouched){r.startMoving&&r.isScrolling&&n.emit("touchMoveOpposite",l);return}const c=u.pageX,f=u.pageY;if(l.preventedByNestedSwiper){s.startX=c,s.startY=f;return}if(!n.allowTouchMove){l.target.matches(r.focusableElements)||(n.allowClick=!1),r.isTouched&&(Object.assign(s,{startX:c,startY:f,currentX:c,currentY:f}),r.touchStartTime=La());return}if(i.touchReleaseOnEdges&&!i.loop){if(n.isVertical()){if(fs.startY&&n.translate>=n.minTranslate()){r.isTouched=!1,r.isMoved=!1;return}}else if(cs.startX&&n.translate>=n.minTranslate())return}if(t.activeElement&&l.target===t.activeElement&&l.target.matches(r.focusableElements)){r.isMoved=!0,n.allowClick=!1;return}r.allowTouchCallbacks&&n.emit("touchMove",l),s.previousX=s.currentX,s.previousY=s.currentY,s.currentX=c,s.currentY=f;const h=s.currentX-s.startX,y=s.currentY-s.startY;if(n.params.threshold&&Math.sqrt(h**2+y**2)"u"){let P;n.isHorizontal()&&s.currentY===s.startY||n.isVertical()&&s.currentX===s.startX?r.isScrolling=!1:h*h+y*y>=25&&(P=Math.atan2(Math.abs(y),Math.abs(h))*180/Math.PI,r.isScrolling=n.isHorizontal()?P>i.touchAngle:90-P>i.touchAngle)}if(r.isScrolling&&n.emit("touchMoveOpposite",l),typeof r.startMoving>"u"&&(s.currentX!==s.startX||s.currentY!==s.startY)&&(r.startMoving=!0),r.isScrolling||l.type==="touchmove"&&r.preventTouchMoveFromPointerMove){r.isTouched=!1;return}if(!r.startMoving)return;n.allowClick=!1,!i.cssMode&&l.cancelable&&l.preventDefault(),i.touchMoveStopPropagation&&!i.nested&&l.stopPropagation();let w=n.isHorizontal()?h:y,g=n.isHorizontal()?s.currentX-s.previousX:s.currentY-s.previousY;i.oneWayMovement&&(w=Math.abs(w)*(o?1:-1),g=Math.abs(g)*(o?1:-1)),s.diff=w,w*=i.touchRatio,o&&(w=-w,g=-g);const k=n.touchesDirection;n.swipeDirection=w>0?"prev":"next",n.touchesDirection=g>0?"prev":"next";const d=n.params.loop&&!i.cssMode,p=n.touchesDirection==="next"&&n.allowSlideNext||n.touchesDirection==="prev"&&n.allowSlidePrev;if(!r.isMoved){if(d&&p&&n.loopFix({direction:n.swipeDirection}),r.startTranslate=n.getTranslate(),n.setTransition(0),n.animating){const P=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});n.wrapperEl.dispatchEvent(P)}r.allowMomentumBounce=!1,i.grabCursor&&(n.allowSlideNext===!0||n.allowSlidePrev===!0)&&n.setGrabCursor(!0),n.emit("sliderFirstMove",l)}let m;if(new Date().getTime(),r.isMoved&&r.allowThresholdMove&&k!==n.touchesDirection&&d&&p&&Math.abs(w)>=1){Object.assign(s,{startX:c,startY:f,currentX:c,currentY:f,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,r.startTranslate=r.currentTranslate;return}n.emit("sliderMove",l),r.isMoved=!0,r.currentTranslate=w+r.startTranslate;let x=!0,S=i.resistanceRatio;if(i.touchReleaseOnEdges&&(S=0),w>0?(d&&p&&!m&&r.allowThresholdMove&&r.currentTranslate>(i.centeredSlides?n.minTranslate()-n.slidesSizesGrid[n.activeIndex+1]:n.minTranslate())&&n.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>n.minTranslate()&&(x=!1,i.resistance&&(r.currentTranslate=n.minTranslate()-1+(-n.minTranslate()+r.startTranslate+w)**S))):w<0&&(d&&p&&!m&&r.allowThresholdMove&&r.currentTranslate<(i.centeredSlides?n.maxTranslate()+n.slidesSizesGrid[n.slidesSizesGrid.length-1]:n.maxTranslate())&&n.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:n.slides.length-(i.slidesPerView==="auto"?n.slidesPerViewDynamic():Math.ceil(parseFloat(i.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),!n.allowSlidePrev&&!n.allowSlideNext&&(r.currentTranslate=r.startTranslate),i.threshold>0)if(Math.abs(w)>i.threshold||r.allowThresholdMove){if(!r.allowThresholdMove){r.allowThresholdMove=!0,s.startX=s.currentX,s.startY=s.currentY,r.currentTranslate=r.startTranslate,s.diff=n.isHorizontal()?s.currentX-s.startX:s.currentY-s.startY;return}}else{r.currentTranslate=r.startTranslate;return}!i.followFinger||i.cssMode||((i.freeMode&&i.freeMode.enabled&&n.freeMode||i.watchSlidesProgress)&&(n.updateActiveIndex(),n.updateSlidesClasses()),i.freeMode&&i.freeMode.enabled&&n.freeMode&&n.freeMode.onTouchMove(),n.updateProgress(r.currentTranslate),n.setTranslate(r.currentTranslate))}function nC(e){const t=this,n=t.touchEventsData;let r=e;r.originalEvent&&(r=r.originalEvent);let i;if(r.type==="touchend"||r.type==="touchcancel"){if(i=[...r.changedTouches].filter(S=>S.identifier===n.touchId)[0],!i||i.identifier!==n.touchId)return}else{if(n.touchId!==null||r.pointerId!==n.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)&&!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return;n.pointerId=null,n.touchId=null;const{params:o,touches:a,rtlTranslate:l,slidesGrid:u,enabled:c}=t;if(!c||!o.simulateTouch&&r.pointerType==="mouse")return;if(n.allowTouchCallbacks&&t.emit("touchEnd",r),n.allowTouchCallbacks=!1,!n.isTouched){n.isMoved&&o.grabCursor&&t.setGrabCursor(!1),n.isMoved=!1,n.startMoving=!1;return}o.grabCursor&&n.isMoved&&n.isTouched&&(t.allowSlideNext===!0||t.allowSlidePrev===!0)&&t.setGrabCursor(!1);const f=La(),h=f-n.touchStartTime;if(t.allowClick){const S=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(S&&S[0]||r.target,S),t.emit("tap click",r),h<300&&f-n.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(n.lastClickTime=La(),Ra(()=>{t.destroyed||(t.allowClick=!0)}),!n.isTouched||!n.isMoved||!t.swipeDirection||a.diff===0&&!n.loopSwapReset||n.currentTranslate===n.startTranslate&&!n.loopSwapReset){n.isTouched=!1,n.isMoved=!1,n.startMoving=!1;return}n.isTouched=!1,n.isMoved=!1,n.startMoving=!1;let y;if(o.followFinger?y=l?t.translate:-t.translate:y=-n.currentTranslate,o.cssMode)return;if(o.freeMode&&o.freeMode.enabled){t.freeMode.onTouchEnd({currentPos:y});return}const w=y>=-t.maxTranslate()&&!t.params.loop;let g=0,k=t.slidesSizesGrid[0];for(let S=0;S=u[S]&&y=u[S])&&(g=S,k=u[u.length-1]-u[u.length-2])}let d=null,p=null;o.rewind&&(t.isBeginning?p=o.virtual&&o.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(d=0));const m=(y-u[g])/k,x=go.longSwipesMs){if(!o.longSwipes){t.slideTo(t.activeIndex);return}t.swipeDirection==="next"&&(m>=o.longSwipesRatio?t.slideTo(o.rewind&&t.isEnd?d:g+x):t.slideTo(g)),t.swipeDirection==="prev"&&(m>1-o.longSwipesRatio?t.slideTo(g+x):p!==null&&m<0&&Math.abs(m)>o.longSwipesRatio?t.slideTo(p):t.slideTo(g))}else{if(!o.shortSwipes){t.slideTo(t.activeIndex);return}t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(g+x):t.slideTo(g):(t.swipeDirection==="next"&&t.slideTo(d!==null?d:g+x),t.swipeDirection==="prev"&&t.slideTo(p!==null?p:g))}}function Ch(){const e=this,{params:t,el:n}=e;if(n&&n.offsetWidth===0)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:r,allowSlidePrev:i,snapGrid:s}=e,o=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const a=o&&t.loop;(t.slidesPerView==="auto"||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides&&!a?e.slideTo(e.slides.length-1,0,!1,!0):e.params.loop&&!o?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout(()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()},500)),e.allowSlidePrev=i,e.allowSlideNext=r,e.params.watchOverflow&&s!==e.snapGrid&&e.checkOverflow()}function rC(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function iC(){const e=this,{wrapperEl:t,rtlTranslate:n,enabled:r}=e;if(!r)return;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,e.translate===0&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();let i;const s=e.maxTranslate()-e.minTranslate();s===0?i=0:i=(e.translate-e.minTranslate())/s,i!==e.progress&&e.updateProgress(n?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function sC(e){const t=this;qo(t,e.target),!(t.params.cssMode||t.params.slidesPerView!=="auto"&&!t.params.autoHeight)&&t.update()}function oC(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const Gv=(e,t)=>{const n=kr(),{params:r,el:i,wrapperEl:s,device:o}=e,a=!!r.nested,l=t==="on"?"addEventListener":"removeEventListener",u=t;n[l]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:a}),i[l]("touchstart",e.onTouchStart,{passive:!1}),i[l]("pointerdown",e.onTouchStart,{passive:!1}),n[l]("touchmove",e.onTouchMove,{passive:!1,capture:a}),n[l]("pointermove",e.onTouchMove,{passive:!1,capture:a}),n[l]("touchend",e.onTouchEnd,{passive:!0}),n[l]("pointerup",e.onTouchEnd,{passive:!0}),n[l]("pointercancel",e.onTouchEnd,{passive:!0}),n[l]("touchcancel",e.onTouchEnd,{passive:!0}),n[l]("pointerout",e.onTouchEnd,{passive:!0}),n[l]("pointerleave",e.onTouchEnd,{passive:!0}),n[l]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&i[l]("click",e.onClick,!0),r.cssMode&&s[l]("scroll",e.onScroll),r.updateOnWindowResize?e[u](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",Ch,!0):e[u]("observerUpdate",Ch,!0),i[l]("load",e.onLoad,{capture:!0})};function aC(){const e=this,{params:t}=e;e.onTouchStart=eC.bind(e),e.onTouchMove=tC.bind(e),e.onTouchEnd=nC.bind(e),e.onDocumentTouchStart=oC.bind(e),t.cssMode&&(e.onScroll=iC.bind(e)),e.onClick=rC.bind(e),e.onLoad=sC.bind(e),Gv(e,"on")}function lC(){Gv(this,"off")}var uC={attachEvents:aC,detachEvents:lC};const Eh=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;function cC(){const e=this,{realIndex:t,initialized:n,params:r,el:i}=e,s=r.breakpoints;if(!s||s&&Object.keys(s).length===0)return;const o=e.getBreakpoint(s,e.params.breakpointsBase,e.el);if(!o||e.currentBreakpoint===o)return;const l=(o in s?s[o]:void 0)||e.originalParams,u=Eh(e,r),c=Eh(e,l),f=e.params.grabCursor,h=l.grabCursor,y=r.enabled;u&&!c?(i.classList.remove(`${r.containerModifierClass}grid`,`${r.containerModifierClass}grid-column`),e.emitContainerClasses()):!u&&c&&(i.classList.add(`${r.containerModifierClass}grid`),(l.grid.fill&&l.grid.fill==="column"||!l.grid.fill&&r.grid.fill==="column")&&i.classList.add(`${r.containerModifierClass}grid-column`),e.emitContainerClasses()),f&&!h?e.unsetGrabCursor():!f&&h&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(m=>{if(typeof l[m]>"u")return;const x=r[m]&&r[m].enabled,S=l[m]&&l[m].enabled;x&&!S&&e[m].disable(),!x&&S&&e[m].enable()});const w=l.direction&&l.direction!==r.direction,g=r.loop&&(l.slidesPerView!==r.slidesPerView||w),k=r.loop;w&&n&&e.changeDirection(),Ot(e.params,l);const d=e.params.enabled,p=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),y&&!d?e.disable():!y&&d&&e.enable(),e.currentBreakpoint=o,e.emit("_beforeBreakpoint",l),n&&(g?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!k&&p?(e.loopCreate(t),e.updateSlides()):k&&!p&&e.loopDestroy()),e.emit("breakpoint",l)}function dC(e,t,n){if(t===void 0&&(t="window"),!e||t==="container"&&!n)return;let r=!1;const i=Dt(),s=t==="window"?i.innerHeight:n.clientHeight,o=Object.keys(e).map(a=>{if(typeof a=="string"&&a.indexOf("@")===0){const l=parseFloat(a.substr(1));return{value:s*l,point:a}}return{value:a,point:a}});o.sort((a,l)=>parseInt(a.value,10)-parseInt(l.value,10));for(let a=0;a{typeof r=="object"?Object.keys(r).forEach(i=>{r[i]&&n.push(t+i)}):typeof r=="string"&&n.push(t+r)}),n}function hC(){const e=this,{classNames:t,params:n,rtl:r,el:i,device:s}=e,o=pC(["initialized",n.direction,{"free-mode":e.params.freeMode&&n.freeMode.enabled},{autoheight:n.autoHeight},{rtl:r},{grid:n.grid&&n.grid.rows>1},{"grid-column":n.grid&&n.grid.rows>1&&n.grid.fill==="column"},{android:s.android},{ios:s.ios},{"css-mode":n.cssMode},{centered:n.cssMode&&n.centeredSlides},{"watch-progress":n.watchSlidesProgress}],n.containerModifierClass);t.push(...o),i.classList.add(...t),e.emitContainerClasses()}function mC(){const e=this,{el:t,classNames:n}=e;t.classList.remove(...n),e.emitContainerClasses()}var gC={addClasses:hC,removeClasses:mC};function vC(){const e=this,{isLocked:t,params:n}=e,{slidesOffsetBefore:r}=n;if(r){const i=e.slides.length-1,s=e.slidesGrid[i]+e.slidesSizesGrid[i]+r*2;e.isLocked=e.size>s}else e.isLocked=e.snapGrid.length===1;n.allowSlideNext===!0&&(e.allowSlideNext=!e.isLocked),n.allowSlidePrev===!0&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}var yC={checkOverflow:vC},Xc={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function wC(e,t){return function(r){r===void 0&&(r={});const i=Object.keys(r)[0],s=r[i];if(typeof s!="object"||s===null){Ot(t,r);return}if(e[i]===!0&&(e[i]={enabled:!0}),i==="navigation"&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),!(i in e&&"enabled"in s)){Ot(t,r);return}typeof e[i]=="object"&&!("enabled"in e[i])&&(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),Ot(t,r)}}const Au={eventsEmitter:gk,update:Ak,translate:Rk,transition:zk,slide:Vk,loop:Xk,grabCursor:Jk,events:uC,breakpoints:fC,checkOverflow:yC,classes:gC},Pu={};let hf=class Mn{constructor(){let t,n;for(var r=arguments.length,i=new Array(r),s=0;s1){const c=[];return o.querySelectorAll(n.el).forEach(f=>{const h=Ot({},n,{el:f});c.push(new Mn(h))}),c}const a=this;a.__swiper__=!0,a.support=Wv(),a.device=Hv({userAgent:n.userAgent}),a.browser=pk(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],n.modules&&Array.isArray(n.modules)&&a.modules.push(...n.modules);const l={};a.modules.forEach(c=>{c({params:n,swiper:a,extendParams:wC(n,l),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})});const u=Ot({},Xc,l);return a.params=Ot({},u,Pu,n),a.originalParams=Ot({},a.params),a.passedParams=Ot({},n),a.params&&a.params.on&&Object.keys(a.params.on).forEach(c=>{a.on(c,a.params.on[c])}),a.params&&a.params.onAny&&a.onAny(a.params.onAny),Object.assign(a,{enabled:a.params.enabled,el:t,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal(){return a.params.direction==="horizontal"},isVertical(){return a.params.direction==="vertical"},activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:a.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:a.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),a.emit("_swiper"),a.params.init&&a.init(),a}getDirectionLabel(t){return this.isHorizontal()?t:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[t]}getSlideIndex(t){const{slidesEl:n,params:r}=this,i=wn(n,`.${r.slideClass}, swiper-slide`),s=ja(i[0]);return ja(t)-s}getSlideIndexByData(t){return this.getSlideIndex(this.slides.filter(n=>n.getAttribute("data-swiper-slide-index")*1===t)[0])}recalcSlides(){const t=this,{slidesEl:n,params:r}=t;t.slides=wn(n,`.${r.slideClass}, swiper-slide`)}enable(){const t=this;t.enabled||(t.enabled=!0,t.params.grabCursor&&t.setGrabCursor(),t.emit("enable"))}disable(){const t=this;t.enabled&&(t.enabled=!1,t.params.grabCursor&&t.unsetGrabCursor(),t.emit("disable"))}setProgress(t,n){const r=this;t=Math.min(Math.max(t,0),1);const i=r.minTranslate(),o=(r.maxTranslate()-i)*t+i;r.translateTo(o,typeof n>"u"?0:n),r.updateActiveIndex(),r.updateSlidesClasses()}emitContainerClasses(){const t=this;if(!t.params._emitClasses||!t.el)return;const n=t.el.className.split(" ").filter(r=>r.indexOf("swiper")===0||r.indexOf(t.params.containerModifierClass)===0);t.emit("_containerClasses",n.join(" "))}getSlideClasses(t){const n=this;return n.destroyed?"":t.className.split(" ").filter(r=>r.indexOf("swiper-slide")===0||r.indexOf(n.params.slideClass)===0).join(" ")}emitSlidesClasses(){const t=this;if(!t.params._emitClasses||!t.el)return;const n=[];t.slides.forEach(r=>{const i=t.getSlideClasses(r);n.push({slideEl:r,classNames:i}),t.emit("_slideClass",r,i)}),t.emit("_slideClasses",n)}slidesPerViewDynamic(t,n){t===void 0&&(t="current"),n===void 0&&(n=!1);const r=this,{params:i,slides:s,slidesGrid:o,slidesSizesGrid:a,size:l,activeIndex:u}=r;let c=1;if(typeof i.slidesPerView=="number")return i.slidesPerView;if(i.centeredSlides){let f=s[u]?Math.ceil(s[u].swiperSlideSize):0,h;for(let y=u+1;yl&&(h=!0));for(let y=u-1;y>=0;y-=1)s[y]&&!h&&(f+=s[y].swiperSlideSize,c+=1,f>l&&(h=!0))}else if(t==="current")for(let f=u+1;f=0;f-=1)o[u]-o[f]{o.complete&&qo(t,o)}),t.updateSize(),t.updateSlides(),t.updateProgress(),t.updateSlidesClasses();function i(){const o=t.rtlTranslate?t.translate*-1:t.translate,a=Math.min(Math.max(o,t.maxTranslate()),t.minTranslate());t.setTranslate(a),t.updateActiveIndex(),t.updateSlidesClasses()}let s;if(r.freeMode&&r.freeMode.enabled&&!r.cssMode)i(),r.autoHeight&&t.updateAutoHeight();else{if((r.slidesPerView==="auto"||r.slidesPerView>1)&&t.isEnd&&!r.centeredSlides){const o=t.virtual&&r.virtual.enabled?t.virtual.slides:t.slides;s=t.slideTo(o.length-1,0,!1,!0)}else s=t.slideTo(t.activeIndex,0,!1,!0);s||i()}r.watchOverflow&&n!==t.snapGrid&&t.checkOverflow(),t.emit("update")}changeDirection(t,n){n===void 0&&(n=!0);const r=this,i=r.params.direction;return t||(t=i==="horizontal"?"vertical":"horizontal"),t===i||t!=="horizontal"&&t!=="vertical"||(r.el.classList.remove(`${r.params.containerModifierClass}${i}`),r.el.classList.add(`${r.params.containerModifierClass}${t}`),r.emitContainerClasses(),r.params.direction=t,r.slides.forEach(s=>{t==="vertical"?s.style.width="":s.style.height=""}),r.emit("changeDirection"),n&&r.update()),r}changeLanguageDirection(t){const n=this;n.rtl&&t==="rtl"||!n.rtl&&t==="ltr"||(n.rtl=t==="rtl",n.rtlTranslate=n.params.direction==="horizontal"&&n.rtl,n.rtl?(n.el.classList.add(`${n.params.containerModifierClass}rtl`),n.el.dir="rtl"):(n.el.classList.remove(`${n.params.containerModifierClass}rtl`),n.el.dir="ltr"),n.update())}mount(t){const n=this;if(n.mounted)return!0;let r=t||n.params.el;if(typeof r=="string"&&(r=document.querySelector(r)),!r)return!1;r.swiper=n,r.parentNode&&r.parentNode.host&&r.parentNode.host.nodeName===n.params.swiperElementNodeName.toUpperCase()&&(n.isElement=!0);const i=()=>`.${(n.params.wrapperClass||"").trim().split(" ").join(".")}`;let o=(()=>r&&r.shadowRoot&&r.shadowRoot.querySelector?r.shadowRoot.querySelector(i()):wn(r,i())[0])();return!o&&n.params.createElements&&(o=Hs("div",n.params.wrapperClass),r.append(o),wn(r,`.${n.params.slideClass}`).forEach(a=>{o.append(a)})),Object.assign(n,{el:r,wrapperEl:o,slidesEl:n.isElement&&!r.parentNode.host.slideSlots?r.parentNode.host:o,hostEl:n.isElement?r.parentNode.host:r,mounted:!0,rtl:r.dir.toLowerCase()==="rtl"||rr(r,"direction")==="rtl",rtlTranslate:n.params.direction==="horizontal"&&(r.dir.toLowerCase()==="rtl"||rr(r,"direction")==="rtl"),wrongRTL:rr(o,"display")==="-webkit-box"}),!0}init(t){const n=this;if(n.initialized||n.mount(t)===!1)return n;n.emit("beforeInit"),n.params.breakpoints&&n.setBreakpoint(),n.addClasses(),n.updateSize(),n.updateSlides(),n.params.watchOverflow&&n.checkOverflow(),n.params.grabCursor&&n.enabled&&n.setGrabCursor(),n.params.loop&&n.virtual&&n.params.virtual.enabled?n.slideTo(n.params.initialSlide+n.virtual.slidesBefore,0,n.params.runCallbacksOnInit,!1,!0):n.slideTo(n.params.initialSlide,0,n.params.runCallbacksOnInit,!1,!0),n.params.loop&&n.loopCreate(),n.attachEvents();const i=[...n.el.querySelectorAll('[loading="lazy"]')];return n.isElement&&i.push(...n.hostEl.querySelectorAll('[loading="lazy"]')),i.forEach(s=>{s.complete?qo(n,s):s.addEventListener("load",o=>{qo(n,o.target)})}),Qc(n),n.initialized=!0,Qc(n),n.emit("init"),n.emit("afterInit"),n}destroy(t,n){t===void 0&&(t=!0),n===void 0&&(n=!0);const r=this,{params:i,el:s,wrapperEl:o,slides:a}=r;return typeof r.params>"u"||r.destroyed||(r.emit("beforeDestroy"),r.initialized=!1,r.detachEvents(),i.loop&&r.loopDestroy(),n&&(r.removeClasses(),s.removeAttribute("style"),o.removeAttribute("style"),a&&a.length&&a.forEach(l=>{l.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),l.removeAttribute("style"),l.removeAttribute("data-swiper-slide-index")})),r.emit("destroy"),Object.keys(r.eventsListeners).forEach(l=>{r.off(l)}),t!==!1&&(r.el.swiper=null,rk(r)),r.destroyed=!0),null}static extendDefaults(t){Ot(Pu,t)}static get extendedDefaults(){return Pu}static get defaults(){return Xc}static installModule(t){Mn.prototype.__modules__||(Mn.prototype.__modules__=[]);const n=Mn.prototype.__modules__;typeof t=="function"&&n.indexOf(t)<0&&n.push(t)}static use(t){return Array.isArray(t)?(t.forEach(n=>Mn.installModule(n)),Mn):(Mn.installModule(t),Mn)}};Object.keys(Au).forEach(e=>{Object.keys(Au[e]).forEach(t=>{hf.prototype[t]=Au[e][t]})});hf.use([hk,mk]);const $v=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function Vr(e){return typeof e=="object"&&e!==null&&e.constructor&&Object.prototype.toString.call(e).slice(8,-1)==="Object"&&!e.__swiper__}function Ai(e,t){const n=["__proto__","constructor","prototype"];Object.keys(t).filter(r=>n.indexOf(r)<0).forEach(r=>{typeof e[r]>"u"?e[r]=t[r]:Vr(t[r])&&Vr(e[r])&&Object.keys(t[r]).length>0?t[r].__swiper__?e[r]=t[r]:Ai(e[r],t[r]):e[r]=t[r]})}function Qv(e){return e===void 0&&(e={}),e.navigation&&typeof e.navigation.nextEl>"u"&&typeof e.navigation.prevEl>"u"}function Xv(e){return e===void 0&&(e={}),e.pagination&&typeof e.pagination.el>"u"}function Kv(e){return e===void 0&&(e={}),e.scrollbar&&typeof e.scrollbar.el>"u"}function Zv(e){e===void 0&&(e="");const t=e.split(" ").map(r=>r.trim()).filter(r=>!!r),n=[];return t.forEach(r=>{n.indexOf(r)<0&&n.push(r)}),n.join(" ")}function xC(e){return e===void 0&&(e=""),e?e.includes("swiper-wrapper")?e:`swiper-wrapper ${e}`:"swiper-wrapper"}function SC(e){let{swiper:t,slides:n,passedParams:r,changedParams:i,nextEl:s,prevEl:o,scrollbarEl:a,paginationEl:l}=e;const u=i.filter(j=>j!=="children"&&j!=="direction"&&j!=="wrapperClass"),{params:c,pagination:f,navigation:h,scrollbar:y,virtual:w,thumbs:g}=t;let k,d,p,m,x,S,P,_;i.includes("thumbs")&&r.thumbs&&r.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(k=!0),i.includes("controller")&&r.controller&&r.controller.control&&c.controller&&!c.controller.control&&(d=!0),i.includes("pagination")&&r.pagination&&(r.pagination.el||l)&&(c.pagination||c.pagination===!1)&&f&&!f.el&&(p=!0),i.includes("scrollbar")&&r.scrollbar&&(r.scrollbar.el||a)&&(c.scrollbar||c.scrollbar===!1)&&y&&!y.el&&(m=!0),i.includes("navigation")&&r.navigation&&(r.navigation.prevEl||o)&&(r.navigation.nextEl||s)&&(c.navigation||c.navigation===!1)&&h&&!h.prevEl&&!h.nextEl&&(x=!0);const b=j=>{t[j]&&(t[j].destroy(),j==="navigation"?(t.isElement&&(t[j].prevEl.remove(),t[j].nextEl.remove()),c[j].prevEl=void 0,c[j].nextEl=void 0,t[j].prevEl=void 0,t[j].nextEl=void 0):(t.isElement&&t[j].el.remove(),c[j].el=void 0,t[j].el=void 0))};i.includes("loop")&&t.isElement&&(c.loop&&!r.loop?S=!0:!c.loop&&r.loop?P=!0:_=!0),u.forEach(j=>{if(Vr(c[j])&&Vr(r[j]))Object.assign(c[j],r[j]),(j==="navigation"||j==="pagination"||j==="scrollbar")&&"enabled"in r[j]&&!r[j].enabled&&b(j);else{const A=r[j];(A===!0||A===!1)&&(j==="navigation"||j==="pagination"||j==="scrollbar")?A===!1&&b(j):c[j]=r[j]}}),u.includes("controller")&&!d&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),i.includes("children")&&n&&w&&c.virtual.enabled?(w.slides=n,w.update(!0)):i.includes("virtual")&&w&&c.virtual.enabled&&(n&&(w.slides=n),w.update(!0)),i.includes("children")&&n&&c.loop&&(_=!0),k&&g.init()&&g.update(!0),d&&(t.controller.control=c.controller.control),p&&(t.isElement&&(!l||typeof l=="string")&&(l=document.createElement("div"),l.classList.add("swiper-pagination"),l.part.add("pagination"),t.el.appendChild(l)),l&&(c.pagination.el=l),f.init(),f.render(),f.update()),m&&(t.isElement&&(!a||typeof a=="string")&&(a=document.createElement("div"),a.classList.add("swiper-scrollbar"),a.part.add("scrollbar"),t.el.appendChild(a)),a&&(c.scrollbar.el=a),y.init(),y.updateSize(),y.setTranslate()),x&&(t.isElement&&((!s||typeof s=="string")&&(s=document.createElement("div"),s.classList.add("swiper-button-next"),s.innerHTML=t.hostEl.constructor.nextButtonSvg,s.part.add("button-next"),t.el.appendChild(s)),(!o||typeof o=="string")&&(o=document.createElement("div"),o.classList.add("swiper-button-prev"),o.innerHTML=t.hostEl.constructor.prevButtonSvg,o.part.add("button-prev"),t.el.appendChild(o))),s&&(c.navigation.nextEl=s),o&&(c.navigation.prevEl=o),h.init(),h.update()),i.includes("allowSlideNext")&&(t.allowSlideNext=r.allowSlideNext),i.includes("allowSlidePrev")&&(t.allowSlidePrev=r.allowSlidePrev),i.includes("direction")&&t.changeDirection(r.direction,!1),(S||_)&&t.loopDestroy(),(P||_)&&t.loopCreate(),t.update()}function kC(e,t){e===void 0&&(e={}),t===void 0&&(t=!0);const n={on:{}},r={},i={};Ai(n,Xc),n._emitClasses=!0,n.init=!1;const s={},o=$v.map(l=>l.replace(/_/,"")),a=Object.assign({},e);return Object.keys(a).forEach(l=>{typeof e[l]>"u"||(o.indexOf(l)>=0?Vr(e[l])?(n[l]={},i[l]={},Ai(n[l],e[l]),Ai(i[l],e[l])):(n[l]=e[l],i[l]=e[l]):l.search(/on[A-Z]/)===0&&typeof e[l]=="function"?t?r[`${l[2].toLowerCase()}${l.substr(3)}`]=e[l]:n.on[`${l[2].toLowerCase()}${l.substr(3)}`]=e[l]:s[l]=e[l])}),["navigation","pagination","scrollbar"].forEach(l=>{n[l]===!0&&(n[l]={}),n[l]===!1&&delete n[l]}),{params:n,passedParams:i,rest:s,events:r}}function CC(e,t){let{el:n,nextEl:r,prevEl:i,paginationEl:s,scrollbarEl:o,swiper:a}=e;Qv(t)&&r&&i&&(a.params.navigation.nextEl=r,a.originalParams.navigation.nextEl=r,a.params.navigation.prevEl=i,a.originalParams.navigation.prevEl=i),Xv(t)&&s&&(a.params.pagination.el=s,a.originalParams.pagination.el=s),Kv(t)&&o&&(a.params.scrollbar.el=o,a.originalParams.scrollbar.el=o),a.init(n)}function EC(e,t,n,r,i){const s=[];if(!t)return s;const o=l=>{s.indexOf(l)<0&&s.push(l)};if(n&&r){const l=r.map(i),u=n.map(i);l.join("")!==u.join("")&&o("children"),r.length!==n.length&&o("children")}return $v.filter(l=>l[0]==="_").map(l=>l.replace(/_/,"")).forEach(l=>{if(l in e&&l in t)if(Vr(e[l])&&Vr(t[l])){const u=Object.keys(e[l]),c=Object.keys(t[l]);u.length!==c.length?o(l):(u.forEach(f=>{e[l][f]!==t[l][f]&&o(l)}),c.forEach(f=>{e[l][f]!==t[l][f]&&o(l)}))}else e[l]!==t[l]&&o(l)}),s}const bC=e=>{!e||e.destroyed||!e.params.virtual||e.params.virtual&&!e.params.virtual.enabled||(e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.parallax&&e.params.parallax&&e.params.parallax.enabled&&e.parallax.setTranslate())};function za(){return za=Object.assign?Object.assign.bind():function(e){for(var t=1;t{Jv(n)?t.push(n):n.props&&n.props.children&&qv(n.props.children).forEach(r=>t.push(r))}),t}function TC(e){const t=[],n={"container-start":[],"container-end":[],"wrapper-start":[],"wrapper-end":[]};return ke.Children.toArray(e).forEach(r=>{if(Jv(r))t.push(r);else if(r.props&&r.props.slot&&n[r.props.slot])n[r.props.slot].push(r);else if(r.props&&r.props.children){const i=qv(r.props.children);i.length>0?i.forEach(s=>t.push(s)):n["container-end"].push(r)}else n["container-end"].push(r)}),{slides:t,slots:n}}function AC(e,t,n){if(!n)return null;const r=c=>{let f=c;return c<0?f=t.length+c:f>=t.length&&(f=f-t.length),f},i=e.isHorizontal()?{[e.rtlTranslate?"right":"left"]:`${n.offset}px`}:{top:`${n.offset}px`},{from:s,to:o}=n,a=e.params.loop?-t.length:0,l=e.params.loop?t.length*2:t.length,u=[];for(let c=a;c=s&&c<=o&&u.push(t[r(c)]);return u.map((c,f)=>ke.cloneElement(c,{swiper:e,style:i,key:c.props.virtualIndex||c.key||`slide-${f}`}))}function ks(e,t){return typeof window>"u"?R.useEffect(e,t):R.useLayoutEffect(e,t)}const bh=R.createContext(null),PC=R.createContext(null),e0=R.forwardRef(function(e,t){let{className:n,tag:r="div",wrapperTag:i="div",children:s,onSwiper:o,...a}=e===void 0?{}:e,l=!1;const[u,c]=R.useState("swiper"),[f,h]=R.useState(null),[y,w]=R.useState(!1),g=R.useRef(!1),k=R.useRef(null),d=R.useRef(null),p=R.useRef(null),m=R.useRef(null),x=R.useRef(null),S=R.useRef(null),P=R.useRef(null),_=R.useRef(null),{params:b,passedParams:j,rest:A,events:U}=kC(a),{slides:T,slots:D}=TC(s),L=()=>{w(!y)};Object.assign(b.on,{_containerClasses(I,K){c(K)}});const B=()=>{Object.assign(b.on,U),l=!0;const I={...b};if(delete I.wrapperClass,d.current=new hf(I),d.current.virtual&&d.current.params.virtual.enabled){d.current.virtual.slides=T;const K={cache:!1,slides:T,renderExternal:h,renderExternalUpdate:!1};Ai(d.current.params.virtual,K),Ai(d.current.originalParams.virtual,K)}};k.current||B(),d.current&&d.current.on("_beforeBreakpoint",L);const re=()=>{l||!U||!d.current||Object.keys(U).forEach(I=>{d.current.on(I,U[I])})},ye=()=>{!U||!d.current||Object.keys(U).forEach(I=>{d.current.off(I,U[I])})};R.useEffect(()=>()=>{d.current&&d.current.off("_beforeBreakpoint",L)}),R.useEffect(()=>{!g.current&&d.current&&(d.current.emitSlidesClasses(),g.current=!0)}),ks(()=>{if(t&&(t.current=k.current),!!k.current)return d.current.destroyed&&B(),CC({el:k.current,nextEl:x.current,prevEl:S.current,paginationEl:P.current,scrollbarEl:_.current,swiper:d.current},b),o&&!d.current.destroyed&&o(d.current),()=>{d.current&&!d.current.destroyed&&d.current.destroy(!0,!1)}},[]),ks(()=>{re();const I=EC(j,p.current,T,m.current,K=>K.key);return p.current=j,m.current=T,I.length&&d.current&&!d.current.destroyed&&SC({swiper:d.current,slides:T,passedParams:j,changedParams:I,nextEl:x.current,prevEl:S.current,scrollbarEl:_.current,paginationEl:P.current}),()=>{ye()}}),ks(()=>{bC(d.current)},[f]);function N(){return b.virtual?AC(d.current,T,f):T.map((I,K)=>ke.cloneElement(I,{swiper:d.current,swiperSlideIndex:K}))}return ke.createElement(r,za({ref:k,className:Zv(`${u}${n?` ${n}`:""}`)},A),ke.createElement(PC.Provider,{value:d.current},D["container-start"],ke.createElement(i,{className:xC(b.wrapperClass)},D["wrapper-start"],N(),D["wrapper-end"]),Qv(b)&&ke.createElement(ke.Fragment,null,ke.createElement("div",{ref:S,className:"swiper-button-prev"}),ke.createElement("div",{ref:x,className:"swiper-button-next"})),Kv(b)&&ke.createElement("div",{ref:_,className:"swiper-scrollbar"}),Xv(b)&&ke.createElement("div",{ref:P,className:"swiper-pagination"}),D["container-end"]))});e0.displayName="Swiper";const t0=R.forwardRef(function(e,t){let{tag:n="div",children:r,className:i="",swiper:s,zoom:o,lazy:a,virtualIndex:l,swiperSlideIndex:u,...c}=e===void 0?{}:e;const f=R.useRef(null),[h,y]=R.useState("swiper-slide"),[w,g]=R.useState(!1);function k(x,S,P){S===f.current&&y(P)}ks(()=>{if(typeof u<"u"&&(f.current.swiperSlideIndex=u),t&&(t.current=f.current),!(!f.current||!s)){if(s.destroyed){h!=="swiper-slide"&&y("swiper-slide");return}return s.on("_slideClass",k),()=>{s&&s.off("_slideClass",k)}}}),ks(()=>{s&&f.current&&!s.destroyed&&y(s.getSlideClasses(f.current))},[s]);const d={isActive:h.indexOf("swiper-slide-active")>=0,isVisible:h.indexOf("swiper-slide-visible")>=0,isPrev:h.indexOf("swiper-slide-prev")>=0,isNext:h.indexOf("swiper-slide-next")>=0},p=()=>typeof r=="function"?r(d):r,m=()=>{g(!0)};return ke.createElement(n,za({ref:f,className:Zv(`${h}${i?` ${i}`:""}`),"data-swiper-slide-index":l,onLoad:m},c),o&&ke.createElement(bh.Provider,{value:d},ke.createElement("div",{className:"swiper-zoom-container","data-swiper-zoom":typeof o=="number"?o:void 0},p(),a&&!w&&ke.createElement("div",{className:"swiper-lazy-preloader"}))),!o&&ke.createElement(bh.Provider,{value:d},p(),a&&!w&&ke.createElement("div",{className:"swiper-lazy-preloader"})))});t0.displayName="SwiperSlide";function n0(e,t,n,r){return e.params.createElements&&Object.keys(r).forEach(i=>{if(!n[i]&&n.auto===!0){let s=wn(e.el,`.${r[i]}`)[0];s||(s=Hs("div",r[i]),s.className=r[i],e.el.append(s)),n[i]=s,t[i]=s}}),n}function ti(e){return e===void 0&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function MC(e){let{swiper:t,extendParams:n,on:r,emit:i}=e;const s="swiper-pagination";n({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:d=>d,formatFractionTotal:d=>d,bulletClass:`${s}-bullet`,bulletActiveClass:`${s}-bullet-active`,modifierClass:`${s}-`,currentClass:`${s}-current`,totalClass:`${s}-total`,hiddenClass:`${s}-hidden`,progressbarFillClass:`${s}-progressbar-fill`,progressbarOppositeClass:`${s}-progressbar-opposite`,clickableClass:`${s}-clickable`,lockClass:`${s}-lock`,horizontalClass:`${s}-horizontal`,verticalClass:`${s}-vertical`,paginationDisabledClass:`${s}-disabled`}}),t.pagination={el:null,bullets:[]};let o,a=0;function l(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&t.pagination.el.length===0}function u(d,p){const{bulletActiveClass:m}=t.params.pagination;d&&(d=d[`${p==="prev"?"previous":"next"}ElementSibling`],d&&(d.classList.add(`${m}-${p}`),d=d[`${p==="prev"?"previous":"next"}ElementSibling`],d&&d.classList.add(`${m}-${p}-${p}`)))}function c(d){const p=d.target.closest(ti(t.params.pagination.bulletClass));if(!p)return;d.preventDefault();const m=ja(p)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===m)return;t.slideToLoop(m)}else t.slideTo(m)}function f(){const d=t.rtl,p=t.params.pagination;if(l())return;let m=t.pagination.el;m=hn(m);let x,S;const P=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,_=t.params.loop?Math.ceil(P/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(S=t.previousRealIndex||0,x=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):typeof t.snapIndex<"u"?(x=t.snapIndex,S=t.previousSnapIndex):(S=t.previousIndex||0,x=t.activeIndex||0),p.type==="bullets"&&t.pagination.bullets&&t.pagination.bullets.length>0){const b=t.pagination.bullets;let j,A,U;if(p.dynamicBullets&&(o=$c(b[0],t.isHorizontal()?"width":"height",!0),m.forEach(T=>{T.style[t.isHorizontal()?"width":"height"]=`${o*(p.dynamicMainBullets+4)}px`}),p.dynamicMainBullets>1&&S!==void 0&&(a+=x-(S||0),a>p.dynamicMainBullets-1?a=p.dynamicMainBullets-1:a<0&&(a=0)),j=Math.max(x-a,0),A=j+(Math.min(b.length,p.dynamicMainBullets)-1),U=(A+j)/2),b.forEach(T=>{const D=[...["","-next","-next-next","-prev","-prev-prev","-main"].map(L=>`${p.bulletActiveClass}${L}`)].map(L=>typeof L=="string"&&L.includes(" ")?L.split(" "):L).flat();T.classList.remove(...D)}),m.length>1)b.forEach(T=>{const D=ja(T);D===x?T.classList.add(...p.bulletActiveClass.split(" ")):t.isElement&&T.setAttribute("part","bullet"),p.dynamicBullets&&(D>=j&&D<=A&&T.classList.add(...`${p.bulletActiveClass}-main`.split(" ")),D===j&&u(T,"prev"),D===A&&u(T,"next"))});else{const T=b[x];if(T&&T.classList.add(...p.bulletActiveClass.split(" ")),t.isElement&&b.forEach((D,L)=>{D.setAttribute("part",L===x?"bullet-active":"bullet")}),p.dynamicBullets){const D=b[j],L=b[A];for(let B=j;B<=A;B+=1)b[B]&&b[B].classList.add(...`${p.bulletActiveClass}-main`.split(" "));u(D,"prev"),u(L,"next")}}if(p.dynamicBullets){const T=Math.min(b.length,p.dynamicMainBullets+4),D=(o*T-o)/2-U*o,L=d?"right":"left";b.forEach(B=>{B.style[t.isHorizontal()?L:"top"]=`${D}px`})}}m.forEach((b,j)=>{if(p.type==="fraction"&&(b.querySelectorAll(ti(p.currentClass)).forEach(A=>{A.textContent=p.formatFractionCurrent(x+1)}),b.querySelectorAll(ti(p.totalClass)).forEach(A=>{A.textContent=p.formatFractionTotal(_)})),p.type==="progressbar"){let A;p.progressbarOpposite?A=t.isHorizontal()?"vertical":"horizontal":A=t.isHorizontal()?"horizontal":"vertical";const U=(x+1)/_;let T=1,D=1;A==="horizontal"?T=U:D=U,b.querySelectorAll(ti(p.progressbarFillClass)).forEach(L=>{L.style.transform=`translate3d(0,0,0) scaleX(${T}) scaleY(${D})`,L.style.transitionDuration=`${t.params.speed}ms`})}p.type==="custom"&&p.renderCustom?(b.innerHTML=p.renderCustom(t,x+1,_),j===0&&i("paginationRender",b)):(j===0&&i("paginationRender",b),i("paginationUpdate",b)),t.params.watchOverflow&&t.enabled&&b.classList[t.isLocked?"add":"remove"](p.lockClass)})}function h(){const d=t.params.pagination;if(l())return;const p=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let m=t.pagination.el;m=hn(m);let x="";if(d.type==="bullets"){let S=t.params.loop?Math.ceil(p/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&S>p&&(S=p);for(let P=0;P${d.bulletElement}>`}d.type==="fraction"&&(d.renderFraction?x=d.renderFraction.call(t,d.currentClass,d.totalClass):x=` / `),d.type==="progressbar"&&(d.renderProgressbar?x=d.renderProgressbar.call(t,d.progressbarFillClass):x=``),t.pagination.bullets=[],m.forEach(S=>{d.type!=="custom"&&(S.innerHTML=x||""),d.type==="bullets"&&t.pagination.bullets.push(...S.querySelectorAll(ti(d.bulletClass)))}),d.type!=="custom"&&i("paginationRender",m[0])}function y(){t.params.pagination=n0(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const d=t.params.pagination;if(!d.el)return;let p;typeof d.el=="string"&&t.isElement&&(p=t.el.querySelector(d.el)),!p&&typeof d.el=="string"&&(p=[...document.querySelectorAll(d.el)]),p||(p=d.el),!(!p||p.length===0)&&(t.params.uniqueNavElements&&typeof d.el=="string"&&Array.isArray(p)&&p.length>1&&(p=[...t.el.querySelectorAll(d.el)],p.length>1&&(p=p.filter(m=>Bv(m,".swiper")[0]===t.el)[0])),Array.isArray(p)&&p.length===1&&(p=p[0]),Object.assign(t.pagination,{el:p}),p=hn(p),p.forEach(m=>{d.type==="bullets"&&d.clickable&&m.classList.add(...(d.clickableClass||"").split(" ")),m.classList.add(d.modifierClass+d.type),m.classList.add(t.isHorizontal()?d.horizontalClass:d.verticalClass),d.type==="bullets"&&d.dynamicBullets&&(m.classList.add(`${d.modifierClass}${d.type}-dynamic`),a=0,d.dynamicMainBullets<1&&(d.dynamicMainBullets=1)),d.type==="progressbar"&&d.progressbarOpposite&&m.classList.add(d.progressbarOppositeClass),d.clickable&&m.addEventListener("click",c),t.enabled||m.classList.add(d.lockClass)}))}function w(){const d=t.params.pagination;if(l())return;let p=t.pagination.el;p&&(p=hn(p),p.forEach(m=>{m.classList.remove(d.hiddenClass),m.classList.remove(d.modifierClass+d.type),m.classList.remove(t.isHorizontal()?d.horizontalClass:d.verticalClass),d.clickable&&(m.classList.remove(...(d.clickableClass||"").split(" ")),m.removeEventListener("click",c))})),t.pagination.bullets&&t.pagination.bullets.forEach(m=>m.classList.remove(...d.bulletActiveClass.split(" ")))}r("changeDirection",()=>{if(!t.pagination||!t.pagination.el)return;const d=t.params.pagination;let{el:p}=t.pagination;p=hn(p),p.forEach(m=>{m.classList.remove(d.horizontalClass,d.verticalClass),m.classList.add(t.isHorizontal()?d.horizontalClass:d.verticalClass)})}),r("init",()=>{t.params.pagination.enabled===!1?k():(y(),h(),f())}),r("activeIndexChange",()=>{typeof t.snapIndex>"u"&&f()}),r("snapIndexChange",()=>{f()}),r("snapGridLengthChange",()=>{h(),f()}),r("destroy",()=>{w()}),r("enable disable",()=>{let{el:d}=t.pagination;d&&(d=hn(d),d.forEach(p=>p.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass)))}),r("lock unlock",()=>{f()}),r("click",(d,p)=>{const m=p.target,x=hn(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&x&&x.length>0&&!m.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&m===t.navigation.nextEl||t.navigation.prevEl&&m===t.navigation.prevEl))return;const S=x[0].classList.contains(t.params.pagination.hiddenClass);i(S===!0?"paginationShow":"paginationHide"),x.forEach(P=>P.classList.toggle(t.params.pagination.hiddenClass))}});const g=()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:d}=t.pagination;d&&(d=hn(d),d.forEach(p=>p.classList.remove(t.params.pagination.paginationDisabledClass))),y(),h(),f()},k=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:d}=t.pagination;d&&(d=hn(d),d.forEach(p=>p.classList.add(t.params.pagination.paginationDisabledClass))),w()};Object.assign(t.pagination,{enable:g,disable:k,render:h,update:f,init:y,destroy:w})}function DC(e){let{swiper:t,extendParams:n,on:r,emit:i}=e;const s=kr();let o=!1,a=null,l=null,u,c,f,h;n({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null};function y(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:T,rtlTranslate:D}=t,{dragEl:L,el:B}=T,re=t.params.scrollbar,ye=t.params.loop?t.progressLoop:t.progress;let N=c,I=(f-c)*ye;D?(I=-I,I>0?(N=c-I,I=0):-I+c>f&&(N=f+I)):I<0?(N=c+I,I=0):I+c>f&&(N=f-I),t.isHorizontal()?(L.style.transform=`translate3d(${I}px, 0, 0)`,L.style.width=`${N}px`):(L.style.transform=`translate3d(0px, ${I}px, 0)`,L.style.height=`${N}px`),re.hide&&(clearTimeout(a),B.style.opacity=1,a=setTimeout(()=>{B.style.opacity=0,B.style.transitionDuration="400ms"},1e3))}function w(T){!t.params.scrollbar.el||!t.scrollbar.el||(t.scrollbar.dragEl.style.transitionDuration=`${T}ms`)}function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:T}=t,{dragEl:D,el:L}=T;D.style.width="",D.style.height="",f=t.isHorizontal()?L.offsetWidth:L.offsetHeight,h=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),t.params.scrollbar.dragSize==="auto"?c=f*h:c=parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?D.style.width=`${c}px`:D.style.height=`${c}px`,h>=1?L.style.display="none":L.style.display="",t.params.scrollbar.hide&&(L.style.opacity=0),t.params.watchOverflow&&t.enabled&&T.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function k(T){return t.isHorizontal()?T.clientX:T.clientY}function d(T){const{scrollbar:D,rtlTranslate:L}=t,{el:B}=D;let re;re=(k(T)-ak(B)[t.isHorizontal()?"left":"top"]-(u!==null?u:c/2))/(f-c),re=Math.max(Math.min(re,1),0),L&&(re=1-re);const ye=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*re;t.updateProgress(ye),t.setTranslate(ye),t.updateActiveIndex(),t.updateSlidesClasses()}function p(T){const D=t.params.scrollbar,{scrollbar:L,wrapperEl:B}=t,{el:re,dragEl:ye}=L;o=!0,u=T.target===ye?k(T)-T.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,T.preventDefault(),T.stopPropagation(),B.style.transitionDuration="100ms",ye.style.transitionDuration="100ms",d(T),clearTimeout(l),re.style.transitionDuration="0ms",D.hide&&(re.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),i("scrollbarDragStart",T)}function m(T){const{scrollbar:D,wrapperEl:L}=t,{el:B,dragEl:re}=D;o&&(T.preventDefault&&T.cancelable?T.preventDefault():T.returnValue=!1,d(T),L.style.transitionDuration="0ms",B.style.transitionDuration="0ms",re.style.transitionDuration="0ms",i("scrollbarDragMove",T))}function x(T){const D=t.params.scrollbar,{scrollbar:L,wrapperEl:B}=t,{el:re}=L;o&&(o=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",B.style.transitionDuration=""),D.hide&&(clearTimeout(l),l=Ra(()=>{re.style.opacity=0,re.style.transitionDuration="400ms"},1e3)),i("scrollbarDragEnd",T),D.snapOnRelease&&t.slideToClosest())}function S(T){const{scrollbar:D,params:L}=t,B=D.el;if(!B)return;const re=B,ye=L.passiveListeners?{passive:!1,capture:!1}:!1,N=L.passiveListeners?{passive:!0,capture:!1}:!1;if(!re)return;const I=T==="on"?"addEventListener":"removeEventListener";re[I]("pointerdown",p,ye),s[I]("pointermove",m,ye),s[I]("pointerup",x,N)}function P(){!t.params.scrollbar.el||!t.scrollbar.el||S("on")}function _(){!t.params.scrollbar.el||!t.scrollbar.el||S("off")}function b(){const{scrollbar:T,el:D}=t;t.params.scrollbar=n0(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const L=t.params.scrollbar;if(!L.el)return;let B;if(typeof L.el=="string"&&t.isElement&&(B=t.el.querySelector(L.el)),!B&&typeof L.el=="string"){if(B=s.querySelectorAll(L.el),!B.length)return}else B||(B=L.el);t.params.uniqueNavElements&&typeof L.el=="string"&&B.length>1&&D.querySelectorAll(L.el).length===1&&(B=D.querySelector(L.el)),B.length>0&&(B=B[0]),B.classList.add(t.isHorizontal()?L.horizontalClass:L.verticalClass);let re;B&&(re=B.querySelector(ti(t.params.scrollbar.dragClass)),re||(re=Hs("div",t.params.scrollbar.dragClass),B.append(re))),Object.assign(T,{el:B,dragEl:re}),L.draggable&&P(),B&&B.classList[t.enabled?"remove":"add"](...Kn(t.params.scrollbar.lockClass))}function j(){const T=t.params.scrollbar,D=t.scrollbar.el;D&&D.classList.remove(...Kn(t.isHorizontal()?T.horizontalClass:T.verticalClass)),_()}r("changeDirection",()=>{if(!t.scrollbar||!t.scrollbar.el)return;const T=t.params.scrollbar;let{el:D}=t.scrollbar;D=hn(D),D.forEach(L=>{L.classList.remove(T.horizontalClass,T.verticalClass),L.classList.add(t.isHorizontal()?T.horizontalClass:T.verticalClass)})}),r("init",()=>{t.params.scrollbar.enabled===!1?U():(b(),g(),y())}),r("update resize observerUpdate lock unlock changeDirection",()=>{g()}),r("setTranslate",()=>{y()}),r("setTransition",(T,D)=>{w(D)}),r("enable disable",()=>{const{el:T}=t.scrollbar;T&&T.classList[t.enabled?"remove":"add"](...Kn(t.params.scrollbar.lockClass))}),r("destroy",()=>{j()});const A=()=>{t.el.classList.remove(...Kn(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...Kn(t.params.scrollbar.scrollbarDisabledClass)),b(),g(),y()},U=()=>{t.el.classList.add(...Kn(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...Kn(t.params.scrollbar.scrollbarDisabledClass)),j()};Object.assign(t.scrollbar,{enable:A,disable:U,updateSize:g,setTranslate:y,init:b,destroy:j})}const _C="/assets/cover1-55f5a95a.svg",OC="/assets/cover2-24b4960c.svg",RC="/assets/cover3-b5719c26.svg",LC="/assets/cover4-23df30ba.svg",IC=M.ul`
- display: flex;
- height: 100%;
- @media screen and (max-width: 768px) {
- display: none;
- }
-`,jC=M.li`
- position: relative;
- display: flex;
- align-items: center;
- padding-inline: 20px;
- /* color: #ffffff; */
- color: ${({isActive:e})=>e?"#7680DD":"inherit"};
- font-size: 16px;
- line-height: 1;
- text-transform: uppercase;
- white-space: nowrap;
- border-bottom: ${e=>e.isDropdown?"4px solid hsla(234, 60%, 66%, 1)":"none"};
- transition: all 0.05s;
- cursor: pointer;
- @media screen and (max-width: 1024px) {
- font-size: 14px;
- font-weight: 300;
- padding-inline: 16px;
- }
-`,zC=M.ul`
- z-index: 100;
- position: absolute;
- top: 86px;
- right: 0;
- display: ${e=>e.isDropdown?"block":"none"};
- padding: 16px 20px;
- background: ${({MyTheme:e})=>e==="dark"?"#fff":"rgb(36,31,56)"};
- border: 1px solid hsl(0, 0%, 50%);
- color: ${({MyTheme:e})=>e==="dark"?"#42424A":"#fff"};
- border-radius: 8px;
- transition: all 0s ease 0.1s;
- min-width: 150px;
-`,NC=M.li`
- display: block;
- padding-block: 8px;
- /* color: hsl(0, 0%, 88%); */
- font-weight: 400;
- font-size: 14px;
- text-transform: none;
- &:hover {
- color: hsl(234, 60%, 66%);
- }
-`,r0=(e,t)=>{t&&(t.startsWith("http")||t.startsWith("https")?window.location.href=t:e(t))},FC=({label:e,url:t})=>{const n=Xr();return v.jsx(NC,{onClick:()=>r0(n,t),children:e})},YC=({subNavItems:e,isDropdown:t,theme:n})=>v.jsx(zC,{isDropdown:t,MyTheme:n,children:e==null?void 0:e.map(({key:r,label:i,url:s})=>v.jsx(FC,{label:i,url:s},r))}),UC=({label:e,subNavItems:t,url:n,theme:r,id:i,activeId:s})=>{const o=Xr(),[a,l]=R.useState(!1);return v.jsxs(jC,{isDropdown:a,isActive:i===s,onMouseOver:()=>l(!0),onMouseOut:()=>l(!1),onClick:()=>r0(o,n),children:[e,t&&v.jsx(YC,{subNavItems:t,isDropdown:a,theme:r})]})},BC=({items:e,theme:t,activeId:n})=>v.jsx(IC,{children:e.map(({key:r,label:i,url:s,children:o})=>v.jsx(UC,{id:r,label:i,url:s,subNavItems:o,theme:t,activeId:n},r))}),WC="/assets/menu-459d13f5.svg",HC="/assets/dropIcon-525fd0e1.svg",VC="/assets/dropIconActive-9bdef1aa.svg",GC=M.img`
- display: none;
- margin-left: 12px;
- @media screen and (max-width: 768px) {
- display: block;
- }
-`,$C=M.ul`
- display: ${e=>e.isDropDown?"flex":"none"};
- flex-direction: column;
- position: absolute;
- top: 53px;
- left: 0;
- width: 100%;
- z-index: 1000;
- background: #111429;
- @media screen and (min-width: 768px) {
- display: none;
- }
-`,QC=M.li`
- display: flex;
- align-items: center;
- height: 42px;
- padding-inline: 20px;
-`,XC=M(QC)`
- /* background: #111429; */
- color: ${e=>e.isDropdown?"#7680DD":"#E0E0E0"};
- font-weight: 500;
- font-size: 16px;
- line-height: 1;
- text-transform: uppercase;
-`,KC=M.p`
- /* min-width: 100px; */
-`,ZC=M.ul`
- display: ${e=>e.isDropdown?"block":"none"};
- height: ${e=>e.isDropdown?"min-content":"0px"};
- transition: all 1s;
-`,JC=M.li`
- display: flex;
- align-items: center;
- height: 42px;
- padding-inline: 20px;
-`,qC=M(JC)`
- background: #242840;
- color: #e0e0e0;
- font-size: 16px;
- line-height: 1;
-`,Th=M.img`
- margin-left: 12px;
- height: 12px;
- width: 12px;
-`,i0=(e,t,n,r)=>{t?t.startsWith("http")||t.startsWith("https")?window.location.href=t:e(t):r&&r(!n)},eE=({label:e,url:t})=>{const n=Xr();return v.jsx(qC,{onClick:()=>i0(n,t),children:e})},tE=({isDropdown:e,subNavItems:t})=>v.jsx(ZC,{isDropdown:e,children:t==null?void 0:t.map(({key:n,label:r,url:i})=>v.jsx(eE,{label:r,url:i},n))}),nE=({label:e,url:t,subNavItems:n})=>{const r=Xr(),[i,s]=R.useState(!1);return v.jsxs(v.Fragment,{children:[v.jsxs(XC,{isDropdown:i,onClick:()=>i0(r,t,i,s),children:[v.jsx(KC,{children:e}),n&&v.jsx(v.Fragment,{children:i?v.jsx(Th,{src:VC}):v.jsx(Th,{src:HC})})]}),v.jsx(tE,{isDropdown:i,subNavItems:n})]})},rE=({items:e})=>{const[t,n]=R.useState(!1);return v.jsxs(v.Fragment,{children:[v.jsx(GC,{src:WC,onClick:()=>n(!t)}),v.jsx($C,{isDropDown:t,children:(e||[]).map(({key:r,label:i,url:s,children:o})=>v.jsx(nE,{label:i,url:s,subNavItems:o},r))})]})},iE="/assets/logo-46733c53.svg",sE="/assets/logo-text-dark-f3978d3a.svg",oE="/assets/logo-text-light-40cbbdf3.svg",Kc=[{key:"products",label:"products",children:[{key:"cloud-service",label:"DatenLord cloud Service",url:"/products/cloud-service"},{key:"appliance",label:"DatenLord Appliance",url:"/products/appliance"}]},{key:"solution",label:"solution",children:[{key:"inference",label:"AI Inference",url:"/solution"},{key:"storage",label:"High Performance Storage",url:"/solution"},{key:"network",label:"High Performance Network",url:"/solution"}]},{key:"resources",label:"resources",children:[{key:"tech-talk",label:"Tech Talk",url:"/resources/tech-talk"},{key:"blog",label:"Blog",url:"/resources/blog"},{key:"events",label:"Events",url:"https://www.youtube.com/@datenlord"}]},{key:"community",label:"Community",children:[{key:"community",label:"Open Source community",url:""},{key:"project",label:"Open Source Project",url:"/community/project"}]},{key:"company",label:"Company",children:[{key:"intro",label:"Company intro",url:"/company"},{key:"join-us",label:"Join Us",url:"/company"},{key:"follow-us",label:"follow-us",url:"/company"}]}],aE=M.header`
- position: absolute;
- top: 0;
- left: 0;
- height: 86px;
- width: 100%;
- background-color: ${e=>e.bg};
- z-index: 1000;
- color: ${e=>e.headerTheme==="dark"?"#000":"#fff"};
- @media screen and (max-width: 1024px) {
- height: 69px;
- }
- @media screen and (max-width: 768px) {
- height: 53px;
- }
-`,lE=M.div`
- position: relative;
- display: flex;
- align-items: center;
- height: inherit;
- width: 100%;
- max-width: 1440px;
- margin-inline: auto;
- padding-inline: 72px;
- @media screen and (max-width: 1024px) {
- padding-inline: 64px;
- }
- @media screen and (max-width: 768px) {
- padding-inline: 20px;
- background: #111429;
- }
-`,uE=M.img`
- height: 50%;
- margin-right: 16px;
- @media screen and (max-width: 1024px) {
- margin-right: 12px;
- }
- @media screen and (max-width: 768px) {
- margin-right: 8px;
- }
-`,Ah=M.img`
- height: 16px;
- @media screen and (max-width: 1024px) {
- height: 12px;
- }
- @media screen and (max-width: 768px) {
- height: 8px;
- }
-`,cE=M.div`
- flex: 1;
- min-width: 32px;
- @media screen and (max-width: 1024px) {
- min-width: 16px;
- }
-`,qs=({theme:e,bg:t="#fff",activeId:n})=>{const r=Xr();return v.jsx(aE,{headerTheme:e,bg:t,children:v.jsxs(lE,{children:[v.jsx(uE,{src:iE,alt:"DatenLord",onClick:()=>r("/")}),e!=="dark"||window.innerWidth<768?v.jsx(Ah,{src:oE}):v.jsx(Ah,{src:sE}),v.jsx(cE,{}),v.jsx(BC,{items:Kc,theme:e,activeId:n}),v.jsx(rE,{items:Kc,theme:e})]})})},dE="data:image/png;base64,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",fE=M.footer`
- color: #fff;
- background-color: #0a061f;
-`,pE=M.div`
- max-width: 1440px;
- margin-inline: auto;
- padding-inline: 1.22rem;
- padding-block: 0.64rem;
-`,hE=M.img`
- height: 0.58rem;
- padding-inline: 0.16rem 0.16rem;
-`,mE=M.div`
- width: 100%;
- display: flex;
- flex-wrap: wrap;
- justify-content: space-around;
-`,gE=M.div`
- padding-inline: 0.16rem;
- padding-bottom: 0.64rem;
- color: white;
- /* width: 1.8rem; */
-`,vE=M.h2`
- padding-bottom: 0.16rem;
- margin-bottom: 0.24rem;
- font-weight: 500;
- font-size: 0.2rem;
- line-height: 0.4rem;
- text-transform: capitalize;
- border-bottom: 1px solid white;
- cursor: default;
-`,yE=M.ul``,wE=M.li`
- margin-bottom: 0.15rem;
- text-transform: capitalize;
- list-style-type: none;
- cursor: pointer;
-`,xE=M.div`
- display: flex;
- align-items: center;
- border-bottom: 1px solid #fff;
-`;M.div`
- padding-top: 0.14rem;
-`;const Ph=M.div`
- font-weight: 400;
- font-size: 0.18rem;
- line-height: 0.4rem;
-`,SE=()=>{const e=Xr();return v.jsx(v.Fragment,{children:v.jsx(fE,{children:v.jsxs(pE,{children:[v.jsxs(xE,{children:[v.jsx(hE,{src:dE}),v.jsx(mE,{children:Kc.map(({key:t,label:n,children:r})=>v.jsxs(gE,{children:[v.jsx(vE,{children:n}),v.jsx(yE,{children:(r||[]).map(({key:i,label:s,url:o})=>v.jsx(wE,{onClick:()=>{o&&e(o)},children:v.jsx(Ph,{children:s})},i))})]},t))})]}),v.jsx(Ph,{style:{textAlign:"center",paddingTop:"0.16rem"},children:"DatenLord Technology Co., Ltd. ©2024 All Rights Reserved."})]})})})},s0=R.createContext(null),kE=()=>{const[e,t]=R.useState("light");return v.jsxs(s0.Provider,{value:{setTheme:t},children:[v.jsx(qs,{activeId:"",theme:e,bg:"transparent"}),v.jsx(Qx,{}),v.jsx(SE,{})]})},CE=[{id:1,bgColor:"#0A061F",txtColor:"#FFFFFF",img:_C,title:"High-Performance AI+ Cloud Infrastructure Provider",desc:"By deeply integrating software and hardware, we offer high-performance storage and networking, delivering elastic, convenient, and cost-effective infrastructure services for AI+Cloud applications.",btn:""},{id:2,bgColor:"#D9DBEF",txtColor:"#42424A",img:OC,title:"High-Performance Cross-Cloud Distributed Storage",desc:"By deeply integrating software and hardware, we offer high-performance storage and networking, delivering elastic, convenient, and cost-effective infrastructure services for AI+Cloud applications.",btn:""},{id:3,bgColor:"#F8FAFF",txtColor:"#42424A",img:RC,title:"High-Performance RDMA Network",desc:"By deeply integrating software and hardware, we offer high-performance storage and networking, delivering elastic, convenient, and cost-effective infrastructure services for AI+Cloud applications.",btn:""},{id:4,bgColor:"#0A061F",txtColor:"#FFFFFF",img:LC,title:"Believe in the Power of Open Source",desc:"By deeply integrating software and hardware, we offer high-performance storage and networking, delivering elastic, convenient, and cost-effective infrastructure services for AI+Cloud applications.",btn:""}],EE=({setHeaderTheme:e})=>{const t=R.useContext(s0);return v.jsx(e0,{modules:[MC,DC],pagination:{clickable:!0},onActiveIndexChange:({activeIndex:n})=>{document.documentElement.style.setProperty("--swiper-pagination-bullet-inactive-color",n===1?"#FFFFFF":"#d9dbef"),t==null||t.setTheme(n===0||n===3?"light":"dark")},style:{height:"100vh"},children:CE.map(({id:n,title:r,desc:i,img:s,bgColor:o,txtColor:a})=>v.jsxs(t0,{style:{background:o,color:a,display:"flex",alignItems:"center",padding:"1.48rem 0.96rem 0.64rem"},children:[v.jsx("img",{src:s,style:{maxWidth:"5.8rem",maxHeight:"4.4rem",marginRight:"0.64rem"}}),v.jsxs("div",{children:[v.jsx("div",{role:"h2",style:{fontSize:"0.4rem",marginBottom:"0.44rem"},children:r}),v.jsx("div",{role:"p",style:{fontSize:"0.26rem",marginBottom:"0.44rem"},children:i}),v.jsx("div",{role:"button",style:{fontSize:"0.16rem",width:"min-content",whiteSpace:"nowrap",padding:"0.08rem 0.32rem",borderRadius:"0.24rem",background:"linear-gradient(90deg, #767EE5, #9966CC)",color:"#FFFFFF"},children:"Learn more"})]})]},n))})},bE="/assets/image6-50544149.png",TE="/assets/image7-f5096656.png",AE="/assets/image8-054471aa.png",PE="/assets/xline-74074173.png",Do=M.div`
- font-size: 0.4rem;
- line-height: 0.6rem;
- font-weight: 700;
- margin-inline: 1.64rem;
- text-align: center;
-`,Mu=M.div`
- font-size: 0.32rem;
- line-height: 0.38rem;
- font-weight: 600;
- color: #101828;
-`,ME=M.div`
- font-size: 0.26rem;
- line-height: 0.4rem;
- font-weight: 400;
-`,yi=M.div`
- font-size: 0.22rem;
- line-height: 0.4rem;
- font-weight: 400;
-`,_o=M(yi)`
- &::before {
- content: '';
- display: inline-block;
- width: 0.14rem;
- height: 0.14rem;
- border-radius: 50%;
- background: linear-gradient(90deg, #767ee5, #9966cc);
- transform: translateX(-0.16rem);
- }
- text-indent: -0.16rem;
-`,is=M(yi)`
- position: relative;
- padding-left: 0.36rem;
- &::before {
- content: '√';
- display: inline-block;
- position: absolute;
- top: 5px;
- left: 0;
- width: 0.28rem;
- height: 0.28rem;
- border-radius: 50%;
- color: #fff;
- background: #7680dd;
- text-align: center;
- line-height: 0.28rem;
- }
-`,Mh=M.div`
- border: 0.02rem solid #00000014;
- background: linear-gradient(90deg, rgb(243, 245, 255), rgb(225, 223, 244));
- padding: 0.6rem 0.7rem 0.7rem;
- border-radius: 0.2rem;
-`,Du=M.div`
- font-size: 0.16rem;
- width: min-content;
- white-space: nowrap;
- padding: 0.12rem 0.34rem;
- border-radius: 0.24rem;
- background: linear-gradient(90deg, #767ee5, #9966cc);
- color: #ffffff;
-`,DE=()=>{const[e,t]=R.useState("light");return v.jsxs(ke.Fragment,{children:[v.jsx(EE,{setHeaderTheme:t}),v.jsxs("div",{style:{color:"#42424A",padding:"1rem 1.48rem"},children:[v.jsxs("div",{style:{marginBottom:"1.28rem"},children:[v.jsx(Do,{style:{borderBottom:"0.01rem solid #D9DBEF",paddingBottom:"0.24rem",marginBottom:"0.2rem"},children:"DatenLord Integrates Storage and Network Solutions to Address the AI Computational Resource Challenges"}),v.jsx(ME,{style:{marginInline:"0.96rem"},children:"The Development of AI Lead to a Tight, Dispersed, and Expensive Situation Regarding Computational Resources."}),v.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"0.84rem",marginTop:"0.96rem"},children:[v.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"0.48rem"},children:[v.jsx(_o,{children:"The surge in demand for high-performance GPU computational resources, driven by AI large models, has resulted in a severe imbalance between supply and demand. This has further elevated the already high prices of GPU computational power, attributed to factors such as design and manufacturing costs and market monopolies."}),v.jsx(_o,{children:"GPU computational resources are primarily allocated to satisfy the demands of AI training scenarios, leading to a dispersed or fragmented nature of GPU computational resources for AI inference scenarios."})]}),v.jsx("img",{style:{width:"6.52rem"},src:bE})]})]}),v.jsxs("div",{style:{position:"relative",marginBottom:"1.28rem"},children:[v.jsx(Do,{style:{marginBottom:"1rem"},children:"The Dispersion and High Cost of AI Computational Resources Pose New Challenges for Cloud Computing"}),v.jsx("img",{style:{width:"100%"},src:TE}),v.jsx("div",{style:{position:"absolute",bottom:"0",left:"0",width:"2rem",height:"0.64rem",background:"#ffffff"}})]}),v.jsxs("div",{style:{marginBottom:"1.28rem"},children:[v.jsx(Do,{children:"DatenLord Integrates Storage and Network Solutions to Address the AI Computational Resource Challenges"}),v.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"0.84rem",marginTop:"0.96rem"},children:[v.jsx("img",{style:{width:"4.46rem"},src:AE}),v.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"0.48rem"},children:[v.jsx(_o,{children:"By optimizing caching technology, it achieves data preloading and asynchronous persistence, thereby enhancing data access performance."}),v.jsx(_o,{children:"The high-performance RDMA (Remote Direct Memory Access) facilitates multi-node memory sharing, accelerating the distribution of large models."})]})]})]})]}),v.jsxs("div",{style:{background:"#F8FAFF",padding:"1rem 1.48rem"},children:[v.jsx(Do,{style:{marginBottom:"1.5rem"},children:"Open Source Product"}),v.jsx(Mh,{style:{display:"flex",gap:"0.48rem",alignItems:"center",marginBottom:"0.5rem"},children:v.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"0.32rem"},children:[v.jsx(Mu,{children:"DatenLord"}),v.jsx(is,{children:"DatenLord is a cross-cloud, cross-data center storage solution designed to facilitate efficient storage access across clouds and data centers for enterprises."}),v.jsx(is,{children:"This solution offers users a versatile system architecture, including Posix file interface, KV interface, and object storage interface, allowing users to choose the most suitable method based on their specific needs."}),v.jsx(is,{children:"DatenLord utilizes a combination of software and hardware integration, harnessing the full potential of both to achieve unparalleled data transfer and read/write performance."}),v.jsx(Du,{style:{marginLeft:"0.36rem"},children:"Learn more"})]})}),v.jsxs("div",{style:{padding:"0.6rem 0.7rem 0.7rem",display:"flex",alignItems:"center",gap:"0.96rem",marginBottom:"0.5rem"},children:[v.jsx("img",{style:{height:"0.66rem"},src:PE}),v.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"0.32rem"},children:[v.jsx(Mu,{children:"Xline Open Source Distributed KV Storage System"}),v.jsx(yi,{children:"Ensures data consistency when accessed across data centers and clouds, facilitating multi-site, multi-center, active-active deployment for business systems.."}),v.jsx(Du,{children:"Learn more"})]})]}),v.jsxs(Mh,{style:{display:"flex",flexDirection:"column",gap:"0.48rem",marginBottom:"0.5rem"},children:[v.jsx(Mu,{children:"RDMA"}),v.jsx(yi,{children:"In cross-cloud scenarios, network performance has a significant impact on data access, and DatenLord leverages high-performance RDMA (Remote Direct Memory Access) to reduce latency and enhance bandwidth. We have several related open-source projects in the RDMA domain:"}),v.jsx("div",{style:{display:"flex",alignItems:"center",gap:"0.32rem"},children:v.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"0.24rem"},children:[v.jsx(is,{children:"async-rdma"}),v.jsx(yi,{style:{paddingLeft:"0.36rem"},children:"An RDMA asynchronous API library encapsulated in Rust, providing advanced abstractions and asynchronous API interfaces for developing RDMA applications."}),v.jsx(is,{children:"open-rdma"}),v.jsx(yi,{style:{paddingLeft:"0.36rem"},children:"An open-source hardware implementation of the RDMA protocol, implemented using Bluespec and SpinalHDL. Currently, it primarily supports the RoCEv2 protocol. Additionally, specific extensions have been incorporated to enhance the efficiency of RDMA transfers."}),v.jsx(Du,{style:{marginLeft:"0.36rem"},children:"Learn more"})]})})]})]})]})},_E="/assets/cover5-9f87f1dd.svg",OE="/assets/gitter-c3110784.svg",RE="/assets/github-dbd6884e.svg",LE=[{id:"WangHengyu",label:"Hengyu Wang"},{id:"LiHongyu",label:"Hongyu Li"}],IE=M.div`
- height: 100vh;
- padding-top: 84px;
- color: #42424a;
- @media screen and (max-width: 1024px) {
- padding-top: 69px;
- }
- @media screen and (max-width: 768px) {
- padding-top: 53px;
- }
-`,jE=M.div`
- align-items: center;
- max-width: 1440px;
- margin-inline: auto;
- padding-block: 64px;
- padding-inline: 128px;
- overflow: hidden;
- @media screen and (max-width: 1024px) {
- padding-block: 48px;
- padding-inline: 96px;
- }
- @media screen and (max-width: 768px) {
- padding-block: 32px;
- padding-inline: 64px;
- }
-`,zE=M.div`
- display: flex;
- align-items: center;
- margin-bottom: 96px;
- @media screen and (max-width: 1024px) {
- flex-direction: column;
- margin-bottom: 72px;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 48px;
- }
-`,NE=M.div`
- display: flex;
- justify-content: space-between;
- margin-bottom: 96px;
- @media screen and (max-width: 1024px) {
- flex-direction: column;
- align-items: center;
- margin-bottom: 72px;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 48px;
- }
-`,FE=M.div``,YE=M.div`
- display: flex;
- flex-direction: column;
- @media screen and (max-width: 1024px) {
- align-items: center;
- }
-`,UE=M.img`
- margin-right: 64px;
- width: 100%;
- @media screen and (max-width: 1024px) {
- margin-bottom: 48px;
- margin-right: 0;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 32px;
- margin-right: 0;
- }
-`,o0=M.div`
- margin-bottom: 32px;
- font-weight: 700;
- font-size: 30px;
- line-height: 1.1;
- @media screen and (max-width: 1024px) {
- margin-bottom: 24px;
- font-size: 22.5px;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 16px;
- font-size: 15px;
- }
-`,BE=M(o0)`
- padding-left: 24px;
- border-left: 24px solid #7680dd;
- margin-bottom: 48px;
- @media screen and (max-width: 1024px) {
- padding-left: 18px;
- border-width: 18px;
- margin-bottom: 36px;
- }
- @media screen and (max-width: 768px) {
- padding-left: 12px;
- border-width: 12px;
- margin-bottom: 24px;
- }
-`,a0=M.div`
- font-weight: 400;
- font-size: 15px;
- line-height: 1.5;
- @media screen and (max-width: 1024px) {
- font-size: 12px;
- }
-`,Dh=M.div`
- font-weight: 400;
- font-size: 13.5px;
- line-height: 1.65;
- margin-bottom: 27px;
- @media screen and (max-width: 1024px) {
- font-size: 12;
- margin-bottom: 20.25px;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 13.5px;
- }
-`,_h=M.div`
- padding: 28px;
- width: 48%;
- border-radius: 12px;
- box-shadow: 2px 5px 15px rgba(0, 0, 0, 0.15);
- @media screen and (max-width: 1024px) {
- width: 100%;
- margin-bottom: 32px;
- padding: 21px;
- border-radius: 9px;
- }
- @media screen and (max-width: 768px) {
- padding: 14px;
- border-radius: 6px;
- }
-`,Oh=M.div`
- display: flex;
- align-items: center;
- margin-bottom: 27px;
- @media screen and (max-width: 1024px) {
- margin-bottom: 20.25px;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 13.5px;
- }
-`,Rh=M.div`
- height: 100%;
- margin-right: 16px;
- padding-right: 16px;
- font-weight: 600;
- font-size: 18px;
- line-height: 0.9;
- border-right: 2px solid #000;
- @media screen and (max-width: 1024px) {
- margin-right: 12px;
- padding-right: 12px;
- font-size: 13.5px;
- border-width: 1.5px;
- }
- @media screen and (max-width: 768px) {
- margin-right: 8px;
- padding-right: 8px;
- font-size: 12px;
- border-width: 1px;
- }
-`,Lh=M.img`
- width: 14px;
- @media screen and (max-width: 1024px) {
- width: 10.5px;
- }
- @media screen and (max-width: 768px) {
- width: 7px;
- }
-`,Oo=M.div`
- width: fit-content;
- margin-inline: auto 16px;
- padding: 4px 32px;
- background: linear-gradient(90deg, #767ee5, #9966cc);
- color: white;
- font-weight: 400;
- font-size: 13.5px;
- line-height: 1.66;
- border-radius: 46.5px;
- cursor: pointer;
- @media screen and (max-width: 1024px) {
- margin-right: 12px;
- padding: 3px 24px;
- border-radius: 34.9px;
- }
- @media screen and (max-width: 768px) {
- margin-right: 8px;
- padding: 2px 16px;
- font-size: 12px;
- border-radius: 23.25px;
- }
-`,WE=M.div`
- border-radius: 16px;
- box-shadow: 2px 5px 15px rgba(0, 0, 0, 0.160784);
- overflow: hidden;
-`,HE=M.div`
- display: flex;
- /* height: 100%; */
- width: 100%;
- height: 80px;
- @media screen and (max-width: 1024px) {
- height: 60px;
- }
- @media screen and (max-width: 768px) {
- height: 40px;
- }
-`,VE=M.div`
- display: flex;
- justify-content: center;
- align-items: center;
- flex-grow: 1;
- color: ${({isActive:e})=>e?"white":"inherit"};
- font-weight: 600;
- font-size: 22.5px;
- line-height: 1.48;
- background: ${({isActive:e})=>e?"#7680DD":"white"};
- border-top-left-radius: 14px;
- border-top-right-radius: 14px;
- cursor: pointer;
- @media screen and (max-width: 1024px) {
- font-size: 16.875px;
- border-top-left-radius: 10.5;
- border-top-right-radius: 10.5px;
- }
- @media screen and (max-width: 768px) {
- font-size: 11.25px;
- border-top-left-radius: 7px;
- border-top-right-radius: 7px;
- }
-`,GE=M.div`
- padding: 64px;
- background: #d9dbef;
- @media screen and (max-width: 1024px) {
- padding: 48px;
- }
- @media screen and (max-width: 768px) {
- padding: 32px;
- }
-`,$E=M.div`
- display: flex;
- justify-content: space-between;
- margin-bottom: 32px;
- @media screen and (max-width: 1024px) {
- flex-direction: column;
- align-items: center;
- margin-bottom: 24px;
- }
- @media screen and (max-width: 768px) {
- margin: 16px;
- }
-`,Ih=M(a0)`
- width: 46%;
- @media screen and (max-width: 1024px) {
- width: 100%;
- margin-bottom: 32px;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 24px;
- }
-`,Ro={description:["Hengyu Wang is a graduate student majoring in computer science. He joined the async-rdma project because it happens to fit in his academic interest on integrating software and hardware. Guided by his community mentor, he grows with the development of the project and is invited to share his practical experience on using Rust to package RDMA on several hands-on workshops.","I am having unforgettable experience with the async-rdma project. The DatenLord community is friendly and my mentor is a seasoned engineer who encourages me to verify my ideas and assumptions about the project while pay attention to the engineering discipline, which shift my perspective from a student who merely focuses on running a program to a professional engineer who cares about its maintainability and stability as well."],id:"GTwhy",url:"https://github.com/GTwhy"},Lo={description:["Hongyu Li is passionate about open source community and Rust, and thus joined this particular project of DatenLord to add support for Rust to be merged in the Linux kernel. With the guidance of his community mentor, he honed his skills in Rust in the process of contributing code, writing document and replying revisions to the upstream.","Working with the Rust for Linux project in DatenLord is rewarding. The community is friendly and interactive. I was encouraged by my mentor to seriously weigh different options to revise even a small bug and go beyond just write code, but lines of ELEGANT codes. What I acquire in the community is not only conceptual, but practical."],id:"Richard Li",url:"https://github.com/Richardhongyu"},QE=()=>{const[e,t]=R.useState("WangHengyu");return v.jsxs(IE,{children:[v.jsx(qs,{theme:"dark",activeId:"resources"}),v.jsxs(jE,{children:[v.jsxs(zE,{children:[v.jsx(UE,{src:_E}),v.jsxs(YE,{children:[v.jsx(o0,{children:"Contributing is Thinking and Learning"}),v.jsx(a0,{children:"Open source is not merely about contributing code in Github. In Datenlord, however, we believe that giving is thinking and learning, and together with the received feedback from the virtual community are capable of framing trust and collaboration."})]})]}),v.jsxs(NE,{children:[v.jsxs(_h,{children:[v.jsxs(Oh,{children:[v.jsx(Rh,{children:"Join Conversation on Gitter"}),v.jsx(Lh,{src:OE})]}),v.jsx(Dh,{children:"Join our community of experts in building the next generation of cloud-native, geo-distributed storage system"}),v.jsx(Oo,{as:"a",href:"https://app.gitter.im/#/room/#datenlord_datenlord:gitter.im",children:"DatenLord Gitter Channel"})]}),v.jsxs(_h,{children:[v.jsxs(Oh,{children:[v.jsx(Rh,{children:"Become A Contributor"}),v.jsx(Lh,{src:RE})]}),v.jsx(Dh,{children:"Looking for the source code, or have an idea to contribute? Join our open source community on GitHub."}),v.jsx(Oo,{as:"a",href:"https://github.com/datenlord",children:"DatenLord on Github"})]})]}),v.jsxs(FE,{children:[v.jsx(BE,{children:"Story Spotlight"}),v.jsxs(WE,{children:[v.jsx(HE,{children:LE.map(({id:n,label:r})=>v.jsx(VE,{isActive:e===n,onClick:()=>t(n),children:r},n))}),v.jsxs(GE,{children:[v.jsxs($E,{children:[v.jsx(Ih,{children:e==="WangHengyu"?Ro.description[0]:Lo.description[0]}),v.jsx(Ih,{children:e==="WangHengyu"?Ro.description[1]:Lo.description[1]})]}),e==="WangHengyu"?v.jsxs(Oo,{as:"a",href:Ro.url,children:["Github ID: ",Ro.id]}):v.jsxs(Oo,{as:"a",href:Lo.url,children:["Github ID: ",Lo.id]})]})]})]})]})]})},XE="modulepreload",KE=function(e){return"/"+e},jh={},Na=function(t,n,r){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=KE(s),s in jh)return;jh[s]=!0;const o=s.endsWith(".css"),a=o?'[rel="stylesheet"]':"";if(!!r)for(let c=i.length-1;c>=0;c--){const f=i[c];if(f.href===s&&(!o||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${a}`))return;const u=document.createElement("link");if(u.rel=o?"stylesheet":XE,o||(u.as="script",u.crossOrigin=""),u.href=s,document.head.appendChild(u),o)return new Promise((c,f)=>{u.addEventListener("load",c),u.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};//! moment.js
-//! version : 2.29.4
-//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
-//! license : MIT
-//! momentjs.com
-var l0;function G(){return l0.apply(null,arguments)}function ZE(e){l0=e}function ln(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function Ir(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function Ce(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function mf(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;var t;for(t in e)if(Ce(e,t))return!1;return!0}function Et(e){return e===void 0}function Hn(e){return typeof e=="number"||Object.prototype.toString.call(e)==="[object Number]"}function eo(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function u0(e,t){var n=[],r,i=e.length;for(r=0;r>>0,r;for(r=0;r0)for(n=0;n=0;return(s?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}var wf=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Io=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ou={},Pi={};function ee(e,t,n,r){var i=r;typeof r=="string"&&(i=function(){return this[r]()}),e&&(Pi[e]=i),t&&(Pi[t[0]]=function(){return kn(i.apply(this,arguments),t[1],t[2])}),n&&(Pi[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function nb(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function rb(e){var t=e.match(wf),n,r;for(n=0,r=t.length;n=0&&Io.test(e);)e=e.replace(Io,r),Io.lastIndex=0,n-=1;return e}var ib={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function sb(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(wf).map(function(r){return r==="MMMM"||r==="MM"||r==="DD"||r==="dddd"?r.slice(1):r}).join(""),this._longDateFormat[e])}var ob="Invalid date";function ab(){return this._invalidDate}var lb="%d",ub=/\d{1,2}/;function cb(e){return this._ordinal.replace("%d",e)}var db={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function fb(e,t,n,r){var i=this._relativeTime[n];return bn(i)?i(e,t,n,r):i.replace(/%d/i,e)}function pb(e,t){var n=this._relativeTime[e>0?"future":"past"];return bn(n)?n(t):n.replace(/%s/i,t)}var Cs={};function gt(e,t){var n=e.toLowerCase();Cs[n]=Cs[n+"s"]=Cs[t]=e}function Kt(e){return typeof e=="string"?Cs[e]||Cs[e.toLowerCase()]:void 0}function xf(e){var t={},n,r;for(r in e)Ce(e,r)&&(n=Kt(r),n&&(t[n]=e[r]));return t}var p0={};function vt(e,t){p0[e]=t}function hb(e){var t=[],n;for(n in e)Ce(e,n)&&t.push({unit:n,priority:p0[n]});return t.sort(function(r,i){return r.priority-i.priority}),t}function _l(e){return e%4===0&&e%100!==0||e%400===0}function Wt(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function ce(e){var t=+e,n=0;return t!==0&&isFinite(t)&&(n=Wt(t)),n}function Hi(e,t){return function(n){return n!=null?(h0(this,e,n),G.updateOffset(this,t),this):Fa(this,e)}}function Fa(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function h0(e,t,n){e.isValid()&&!isNaN(n)&&(t==="FullYear"&&_l(e.year())&&e.month()===1&&e.date()===29?(n=ce(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),zl(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function mb(e){return e=Kt(e),bn(this[e])?this[e]():this}function gb(e,t){if(typeof e=="object"){e=xf(e);var n=hb(e),r,i=n.length;for(r=0;r68?1900:2e3)};var E0=Hi("FullYear",!0);function Ib(){return _l(this.year())}function jb(e,t,n,r,i,s,o){var a;return e<100&&e>=0?(a=new Date(e+400,t,n,r,i,s,o),isFinite(a.getFullYear())&&a.setFullYear(e)):a=new Date(e,t,n,r,i,s,o),a}function Vs(e){var t,n;return e<100&&e>=0?(n=Array.prototype.slice.call(arguments),n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Ua(e,t,n){var r=7+t-n,i=(7+Vs(e,0,r).getUTCDay()-t)%7;return-i+r-1}function b0(e,t,n,r,i){var s=(7+n-r)%7,o=Ua(e,r,i),a=1+7*(t-1)+s+o,l,u;return a<=0?(l=e-1,u=Es(l)+a):a>Es(e)?(l=e+1,u=a-Es(e)):(l=e,u=a),{year:l,dayOfYear:u}}function Gs(e,t,n){var r=Ua(e.year(),t,n),i=Math.floor((e.dayOfYear()-r-1)/7)+1,s,o;return i<1?(o=e.year()-1,s=i+Fn(o,t,n)):i>Fn(e.year(),t,n)?(s=i-Fn(e.year(),t,n),o=e.year()+1):(o=e.year(),s=i),{week:s,year:o}}function Fn(e,t,n){var r=Ua(e,t,n),i=Ua(e+1,t,n);return(Es(e)-r+i)/7}ee("w",["ww",2],"wo","week");ee("W",["WW",2],"Wo","isoWeek");gt("week","w");gt("isoWeek","W");vt("week",5);vt("isoWeek",5);Q("w",Le);Q("ww",Le,Yt);Q("W",Le);Q("WW",Le,Yt);ro(["w","ww","W","WW"],function(e,t,n,r){t[r.substr(0,1)]=ce(e)});function zb(e){return Gs(e,this._week.dow,this._week.doy).week}var Nb={dow:0,doy:6};function Fb(){return this._week.dow}function Yb(){return this._week.doy}function Ub(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function Bb(e){var t=Gs(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}ee("d",0,"do","day");ee("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)});ee("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)});ee("dddd",0,0,function(e){return this.localeData().weekdays(this,e)});ee("e",0,0,"weekday");ee("E",0,0,"isoWeekday");gt("day","d");gt("weekday","e");gt("isoWeekday","E");vt("day",11);vt("weekday",11);vt("isoWeekday",11);Q("d",Le);Q("e",Le);Q("E",Le);Q("dd",function(e,t){return t.weekdaysMinRegex(e)});Q("ddd",function(e,t){return t.weekdaysShortRegex(e)});Q("dddd",function(e,t){return t.weekdaysRegex(e)});ro(["dd","ddd","dddd"],function(e,t,n,r){var i=n._locale.weekdaysParse(e,r,n._strict);i!=null?t.d=i:ae(n).invalidWeekday=e});ro(["d","e","E"],function(e,t,n,r){t[r]=ce(e)});function Wb(e,t){return typeof e!="string"?e:isNaN(e)?(e=t.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function Hb(e,t){return typeof e=="string"?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Cf(e,t){return e.slice(t,7).concat(e.slice(0,t))}var Vb="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),T0="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Gb="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),$b=no,Qb=no,Xb=no;function Kb(e,t){var n=ln(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===!0?Cf(n,this._week.dow):e?n[e.day()]:n}function Zb(e){return e===!0?Cf(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Jb(e){return e===!0?Cf(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function qb(e,t,n){var r,i,s,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)s=En([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(s,"").toLocaleLowerCase();return n?t==="dddd"?(i=$e.call(this._weekdaysParse,o),i!==-1?i:null):t==="ddd"?(i=$e.call(this._shortWeekdaysParse,o),i!==-1?i:null):(i=$e.call(this._minWeekdaysParse,o),i!==-1?i:null):t==="dddd"?(i=$e.call(this._weekdaysParse,o),i!==-1||(i=$e.call(this._shortWeekdaysParse,o),i!==-1)?i:(i=$e.call(this._minWeekdaysParse,o),i!==-1?i:null)):t==="ddd"?(i=$e.call(this._shortWeekdaysParse,o),i!==-1||(i=$e.call(this._weekdaysParse,o),i!==-1)?i:(i=$e.call(this._minWeekdaysParse,o),i!==-1?i:null)):(i=$e.call(this._minWeekdaysParse,o),i!==-1||(i=$e.call(this._weekdaysParse,o),i!==-1)?i:(i=$e.call(this._shortWeekdaysParse,o),i!==-1?i:null))}function eT(e,t,n){var r,i,s;if(this._weekdaysParseExact)return qb.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(i=En([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[r]=new RegExp(s.replace(".",""),"i")),n&&t==="dddd"&&this._fullWeekdaysParse[r].test(e))return r;if(n&&t==="ddd"&&this._shortWeekdaysParse[r].test(e))return r;if(n&&t==="dd"&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}}function tT(e){if(!this.isValid())return e!=null?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return e!=null?(e=Wb(e,this.localeData()),this.add(e-t,"d")):t}function nT(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function rT(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=Hb(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function iT(e){return this._weekdaysParseExact?(Ce(this,"_weekdaysRegex")||Ef.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(Ce(this,"_weekdaysRegex")||(this._weekdaysRegex=$b),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function sT(e){return this._weekdaysParseExact?(Ce(this,"_weekdaysRegex")||Ef.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(Ce(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Qb),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function oT(e){return this._weekdaysParseExact?(Ce(this,"_weekdaysRegex")||Ef.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(Ce(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Xb),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Ef(){function e(c,f){return f.length-c.length}var t=[],n=[],r=[],i=[],s,o,a,l,u;for(s=0;s<7;s++)o=En([2e3,1]).day(s),a=Rt(this.weekdaysMin(o,"")),l=Rt(this.weekdaysShort(o,"")),u=Rt(this.weekdays(o,"")),t.push(a),n.push(l),r.push(u),i.push(a),i.push(l),i.push(u);t.sort(e),n.sort(e),r.sort(e),i.sort(e),this._weekdaysRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function bf(){return this.hours()%12||12}function aT(){return this.hours()||24}ee("H",["HH",2],0,"hour");ee("h",["hh",2],0,bf);ee("k",["kk",2],0,aT);ee("hmm",0,0,function(){return""+bf.apply(this)+kn(this.minutes(),2)});ee("hmmss",0,0,function(){return""+bf.apply(this)+kn(this.minutes(),2)+kn(this.seconds(),2)});ee("Hmm",0,0,function(){return""+this.hours()+kn(this.minutes(),2)});ee("Hmmss",0,0,function(){return""+this.hours()+kn(this.minutes(),2)+kn(this.seconds(),2)});function A0(e,t){ee(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}A0("a",!0);A0("A",!1);gt("hour","h");vt("hour",13);function P0(e,t){return t._meridiemParse}Q("a",P0);Q("A",P0);Q("H",Le);Q("h",Le);Q("k",Le);Q("HH",Le,Yt);Q("hh",Le,Yt);Q("kk",Le,Yt);Q("hmm",v0);Q("hmmss",y0);Q("Hmm",v0);Q("Hmmss",y0);Me(["H","HH"],tt);Me(["k","kk"],function(e,t,n){var r=ce(e);t[tt]=r===24?0:r});Me(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e});Me(["h","hh"],function(e,t,n){t[tt]=ce(e),ae(n).bigHour=!0});Me("hmm",function(e,t,n){var r=e.length-2;t[tt]=ce(e.substr(0,r)),t[rn]=ce(e.substr(r)),ae(n).bigHour=!0});Me("hmmss",function(e,t,n){var r=e.length-4,i=e.length-2;t[tt]=ce(e.substr(0,r)),t[rn]=ce(e.substr(r,2)),t[zn]=ce(e.substr(i)),ae(n).bigHour=!0});Me("Hmm",function(e,t,n){var r=e.length-2;t[tt]=ce(e.substr(0,r)),t[rn]=ce(e.substr(r))});Me("Hmmss",function(e,t,n){var r=e.length-4,i=e.length-2;t[tt]=ce(e.substr(0,r)),t[rn]=ce(e.substr(r,2)),t[zn]=ce(e.substr(i))});function lT(e){return(e+"").toLowerCase().charAt(0)==="p"}var uT=/[ap]\.?m?\.?/i,cT=Hi("Hours",!0);function dT(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}var M0={calendar:eb,longDateFormat:ib,invalidDate:ob,ordinal:lb,dayOfMonthOrdinalParse:ub,relativeTime:db,months:bb,monthsShort:w0,week:Nb,weekdays:Vb,weekdaysMin:Gb,weekdaysShort:T0,meridiemParse:uT},je={},ss={},$s;function fT(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n0;){if(i=Nl(s.slice(0,n).join("-")),i)return i;if(r&&r.length>=n&&fT(s,r)>=n-1)break;n--}t++}return $s}function hT(e){return e.match("^[^/\\\\]*$")!=null}function Nl(e){var t=null,n;if(je[e]===void 0&&typeof ra<"u"&&ra&&ra.exports&&hT(e))try{t=$s._abbr,n=require,n("./locale/"+e),gr(t)}catch{je[e]=null}return je[e]}function gr(e,t){var n;return e&&(Et(t)?n=Gn(e):n=Tf(e,t),n?$s=n:typeof console<"u"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),$s._abbr}function Tf(e,t){if(t!==null){var n,r=M0;if(t.abbr=e,je[e]!=null)d0("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=je[e]._config;else if(t.parentLocale!=null)if(je[t.parentLocale]!=null)r=je[t.parentLocale]._config;else if(n=Nl(t.parentLocale),n!=null)r=n._config;else return ss[t.parentLocale]||(ss[t.parentLocale]=[]),ss[t.parentLocale].push({name:e,config:t}),null;return je[e]=new yf(Jc(r,t)),ss[e]&&ss[e].forEach(function(i){Tf(i.name,i.config)}),gr(e),je[e]}else return delete je[e],null}function mT(e,t){if(t!=null){var n,r,i=M0;je[e]!=null&&je[e].parentLocale!=null?je[e].set(Jc(je[e]._config,t)):(r=Nl(e),r!=null&&(i=r._config),t=Jc(i,t),r==null&&(t.abbr=e),n=new yf(t),n.parentLocale=je[e],je[e]=n),gr(e)}else je[e]!=null&&(je[e].parentLocale!=null?(je[e]=je[e].parentLocale,e===gr()&&gr(e)):je[e]!=null&&delete je[e]);return je[e]}function Gn(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return $s;if(!ln(e)){if(t=Nl(e),t)return t;e=[e]}return pT(e)}function gT(){return qc(je)}function Af(e){var t,n=e._a;return n&&ae(e).overflow===-2&&(t=n[jn]<0||n[jn]>11?jn:n[yn]<1||n[yn]>zl(n[ht],n[jn])?yn:n[tt]<0||n[tt]>24||n[tt]===24&&(n[rn]!==0||n[zn]!==0||n[Or]!==0)?tt:n[rn]<0||n[rn]>59?rn:n[zn]<0||n[zn]>59?zn:n[Or]<0||n[Or]>999?Or:-1,ae(e)._overflowDayOfYear&&(tyn)&&(t=yn),ae(e)._overflowWeeks&&t===-1&&(t=kb),ae(e)._overflowWeekday&&t===-1&&(t=Cb),ae(e).overflow=t),e}var vT=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,yT=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,wT=/Z|[+-]\d\d(?::?\d\d)?/,jo=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Ru=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],xT=/^\/?Date\((-?\d+)/i,ST=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,kT={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function D0(e){var t,n,r=e._i,i=vT.exec(r)||yT.exec(r),s,o,a,l,u=jo.length,c=Ru.length;if(i){for(ae(e).iso=!0,t=0,n=u;tEs(o)||e._dayOfYear===0)&&(ae(e)._overflowDayOfYear=!0),n=Vs(o,0,e._dayOfYear),e._a[jn]=n.getUTCMonth(),e._a[yn]=n.getUTCDate()),t=0;t<3&&e._a[t]==null;++t)e._a[t]=r[t]=i[t];for(;t<7;t++)e._a[t]=r[t]=e._a[t]==null?t===2?1:0:e._a[t];e._a[tt]===24&&e._a[rn]===0&&e._a[zn]===0&&e._a[Or]===0&&(e._nextDay=!0,e._a[tt]=0),e._d=(e._useUTC?Vs:jb).apply(null,r),s=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[tt]=24),e._w&&typeof e._w.d<"u"&&e._w.d!==s&&(ae(e).weekdayMismatch=!0)}}function DT(e){var t,n,r,i,s,o,a,l,u;t=e._w,t.GG!=null||t.W!=null||t.E!=null?(s=1,o=4,n=ni(t.GG,e._a[ht],Gs(Re(),1,4).year),r=ni(t.W,1),i=ni(t.E,1),(i<1||i>7)&&(l=!0)):(s=e._locale._week.dow,o=e._locale._week.doy,u=Gs(Re(),s,o),n=ni(t.gg,e._a[ht],u.year),r=ni(t.w,u.week),t.d!=null?(i=t.d,(i<0||i>6)&&(l=!0)):t.e!=null?(i=t.e+s,(t.e<0||t.e>6)&&(l=!0)):i=s),r<1||r>Fn(n,s,o)?ae(e)._overflowWeeks=!0:l!=null?ae(e)._overflowWeekday=!0:(a=b0(n,r,i,s,o),e._a[ht]=a.year,e._dayOfYear=a.dayOfYear)}G.ISO_8601=function(){};G.RFC_2822=function(){};function Mf(e){if(e._f===G.ISO_8601){D0(e);return}if(e._f===G.RFC_2822){_0(e);return}e._a=[],ae(e).empty=!0;var t=""+e._i,n,r,i,s,o,a=t.length,l=0,u,c;for(i=f0(e._f,e._locale).match(wf)||[],c=i.length,n=0;n0&&ae(e).unusedInput.push(o),t=t.slice(t.indexOf(r)+r.length),l+=r.length),Pi[s]?(r?ae(e).empty=!1:ae(e).unusedTokens.push(s),Sb(s,r,e)):e._strict&&!r&&ae(e).unusedTokens.push(s);ae(e).charsLeftOver=a-l,t.length>0&&ae(e).unusedInput.push(t),e._a[tt]<=12&&ae(e).bigHour===!0&&e._a[tt]>0&&(ae(e).bigHour=void 0),ae(e).parsedDateParts=e._a.slice(0),ae(e).meridiem=e._meridiem,e._a[tt]=_T(e._locale,e._a[tt],e._meridiem),u=ae(e).era,u!==null&&(e._a[ht]=e._locale.erasConvertYear(u,e._a[ht])),Pf(e),Af(e)}function _T(e,t,n){var r;return n==null?t:e.meridiemHour!=null?e.meridiemHour(t,n):(e.isPM!=null&&(r=e.isPM(n),r&&t<12&&(t+=12),!r&&t===12&&(t=0)),t)}function OT(e){var t,n,r,i,s,o,a=!1,l=e._f.length;if(l===0){ae(e).invalidFormat=!0,e._d=new Date(NaN);return}for(i=0;ithis?this:e:Dl()});function L0(e,t){var n,r;if(t.length===1&&ln(t[0])&&(t=t[0]),!t.length)return Re();for(n=t[0],r=1;rthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function qT(){if(!Et(this._isDSTShifted))return this._isDSTShifted;var e={},t;return vf(e,this),e=O0(e),e._a?(t=e._isUTC?En(e._a):Re(e._a),this._isDSTShifted=this.isValid()&&HT(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function e2(){return this.isValid()?!this._isUTC:!1}function t2(){return this.isValid()?this._isUTC:!1}function j0(){return this.isValid()?this._isUTC&&this._offset===0:!1}var n2=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,r2=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function cn(e,t){var n=e,r=null,i,s,o;return ta(e)?n={ms:e._milliseconds,d:e._days,M:e._months}:Hn(e)||!isNaN(+e)?(n={},t?n[t]=+e:n.milliseconds=+e):(r=n2.exec(e))?(i=r[1]==="-"?-1:1,n={y:0,d:ce(r[yn])*i,h:ce(r[tt])*i,m:ce(r[rn])*i,s:ce(r[zn])*i,ms:ce(td(r[Or]*1e3))*i}):(r=r2.exec(e))?(i=r[1]==="-"?-1:1,n={y:br(r[2],i),M:br(r[3],i),w:br(r[4],i),d:br(r[5],i),h:br(r[6],i),m:br(r[7],i),s:br(r[8],i)}):n==null?n={}:typeof n=="object"&&("from"in n||"to"in n)&&(o=i2(Re(n.from),Re(n.to)),n={},n.ms=o.milliseconds,n.M=o.months),s=new Fl(n),ta(e)&&Ce(e,"_locale")&&(s._locale=e._locale),ta(e)&&Ce(e,"_isValid")&&(s._isValid=e._isValid),s}cn.fn=Fl.prototype;cn.invalid=WT;function br(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Yh(e,t){var n={};return n.months=t.month()-e.month()+(t.year()-e.year())*12,e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function i2(e,t){var n;return e.isValid()&&t.isValid()?(t=_f(t,e),e.isBefore(t)?n=Yh(e,t):(n=Yh(t,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function z0(e,t){return function(n,r){var i,s;return r!==null&&!isNaN(+r)&&(d0(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=n,n=r,r=s),i=cn(n,r),N0(this,i,e),this}}function N0(e,t,n,r){var i=t._milliseconds,s=td(t._days),o=td(t._months);e.isValid()&&(r=r??!0,o&&S0(e,Fa(e,"Month")+o*n),s&&h0(e,"Date",Fa(e,"Date")+s*n),i&&e._d.setTime(e._d.valueOf()+i*n),r&&G.updateOffset(e,s||o))}var s2=z0(1,"add"),o2=z0(-1,"subtract");function F0(e){return typeof e=="string"||e instanceof String}function a2(e){return un(e)||eo(e)||F0(e)||Hn(e)||u2(e)||l2(e)||e===null||e===void 0}function l2(e){var t=Ir(e)&&!mf(e),n=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],i,s,o=r.length;for(i=0;in.valueOf():n.valueOf()9999?ea(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):bn(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",ea(n,"Z")):ea(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function C2(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",n,r,i,s;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",t="Z"),n="["+e+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i="-MM-DD[T]HH:mm:ss.SSS",s=t+'[")]',this.format(n+r+i+s)}function E2(e){e||(e=this.isUtc()?G.defaultFormatUtc:G.defaultFormat);var t=ea(this,e);return this.localeData().postformat(t)}function b2(e,t){return this.isValid()&&(un(e)&&e.isValid()||Re(e).isValid())?cn({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function T2(e){return this.from(Re(),e)}function A2(e,t){return this.isValid()&&(un(e)&&e.isValid()||Re(e).isValid())?cn({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function P2(e){return this.to(Re(),e)}function Y0(e){var t;return e===void 0?this._locale._abbr:(t=Gn(e),t!=null&&(this._locale=t),this)}var U0=Xt("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return e===void 0?this.localeData():this.locale(e)});function B0(){return this._locale}var Ba=1e3,Mi=60*Ba,Wa=60*Mi,W0=(365*400+97)*24*Wa;function Di(e,t){return(e%t+t)%t}function H0(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-W0:new Date(e,t,n).valueOf()}function V0(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-W0:Date.UTC(e,t,n)}function M2(e){var t,n;if(e=Kt(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?V0:H0,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=Di(t+(this._isUTC?0:this.utcOffset()*Mi),Wa);break;case"minute":t=this._d.valueOf(),t-=Di(t,Mi);break;case"second":t=this._d.valueOf(),t-=Di(t,Ba);break}return this._d.setTime(t),G.updateOffset(this,!0),this}function D2(e){var t,n;if(e=Kt(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?V0:H0,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=Wa-Di(t+(this._isUTC?0:this.utcOffset()*Mi),Wa)-1;break;case"minute":t=this._d.valueOf(),t+=Mi-Di(t,Mi)-1;break;case"second":t=this._d.valueOf(),t+=Ba-Di(t,Ba)-1;break}return this._d.setTime(t),G.updateOffset(this,!0),this}function _2(){return this._d.valueOf()-(this._offset||0)*6e4}function O2(){return Math.floor(this.valueOf()/1e3)}function R2(){return new Date(this.valueOf())}function L2(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function I2(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function j2(){return this.isValid()?this.toISOString():null}function z2(){return gf(this)}function N2(){return ir({},ae(this))}function F2(){return ae(this).overflow}function Y2(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}ee("N",0,0,"eraAbbr");ee("NN",0,0,"eraAbbr");ee("NNN",0,0,"eraAbbr");ee("NNNN",0,0,"eraName");ee("NNNNN",0,0,"eraNarrow");ee("y",["y",1],"yo","eraYear");ee("y",["yy",2],0,"eraYear");ee("y",["yyy",3],0,"eraYear");ee("y",["yyyy",4],0,"eraYear");Q("N",Of);Q("NN",Of);Q("NNN",Of);Q("NNNN",Z2);Q("NNNNN",J2);Me(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,r){var i=n._locale.erasParse(e,r,n._strict);i?ae(n).era=i:ae(n).invalidEra=e});Q("y",Vi);Q("yy",Vi);Q("yyy",Vi);Q("yyyy",Vi);Q("yo",q2);Me(["y","yy","yyy","yyyy"],ht);Me(["yo"],function(e,t,n,r){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[ht]=n._locale.eraYearOrdinalParse(e,i):t[ht]=parseInt(e,10)});function U2(e,t){var n,r,i,s=this._eras||Gn("en")._eras;for(n=0,r=s.length;n=0)return s[r]}function W2(e,t){var n=e.since<=e.until?1:-1;return t===void 0?G(e.since).year():G(e.since).year()+(t-e.offset)*n}function H2(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;es&&(t=s),oA.call(this,e,t,n,r,i))}function oA(e,t,n,r,i){var s=b0(e,t,n,r,i),o=Vs(s.year,0,s.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}ee("Q",0,"Qo","quarter");gt("quarter","Q");vt("quarter",7);Q("Q",m0);Me("Q",function(e,t){t[jn]=(ce(e)-1)*3});function aA(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}ee("D",["DD",2],"Do","date");gt("date","D");vt("date",9);Q("D",Le);Q("DD",Le,Yt);Q("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient});Me(["D","DD"],yn);Me("Do",function(e,t){t[yn]=ce(e.match(Le)[0])});var $0=Hi("Date",!0);ee("DDD",["DDDD",3],"DDDo","dayOfYear");gt("dayOfYear","DDD");vt("dayOfYear",4);Q("DDD",Rl);Q("DDDD",g0);Me(["DDD","DDDD"],function(e,t,n){n._dayOfYear=ce(e)});function lA(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}ee("m",["mm",2],0,"minute");gt("minute","m");vt("minute",14);Q("m",Le);Q("mm",Le,Yt);Me(["m","mm"],rn);var uA=Hi("Minutes",!1);ee("s",["ss",2],0,"second");gt("second","s");vt("second",15);Q("s",Le);Q("ss",Le,Yt);Me(["s","ss"],zn);var cA=Hi("Seconds",!1);ee("S",0,0,function(){return~~(this.millisecond()/100)});ee(0,["SS",2],0,function(){return~~(this.millisecond()/10)});ee(0,["SSS",3],0,"millisecond");ee(0,["SSSS",4],0,function(){return this.millisecond()*10});ee(0,["SSSSS",5],0,function(){return this.millisecond()*100});ee(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});ee(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});ee(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});ee(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});gt("millisecond","ms");vt("millisecond",16);Q("S",Rl,m0);Q("SS",Rl,Yt);Q("SSS",Rl,g0);var sr,Q0;for(sr="SSSS";sr.length<=9;sr+="S")Q(sr,Vi);function dA(e,t){t[Or]=ce(("0."+e)*1e3)}for(sr="S";sr.length<=9;sr+="S")Me(sr,dA);Q0=Hi("Milliseconds",!1);ee("z",0,0,"zoneAbbr");ee("zz",0,0,"zoneName");function fA(){return this._isUTC?"UTC":""}function pA(){return this._isUTC?"Coordinated Universal Time":""}var Y=to.prototype;Y.add=s2;Y.calendar=f2;Y.clone=p2;Y.diff=x2;Y.endOf=D2;Y.format=E2;Y.from=b2;Y.fromNow=T2;Y.to=A2;Y.toNow=P2;Y.get=mb;Y.invalidAt=F2;Y.isAfter=h2;Y.isBefore=m2;Y.isBetween=g2;Y.isSame=v2;Y.isSameOrAfter=y2;Y.isSameOrBefore=w2;Y.isValid=z2;Y.lang=U0;Y.locale=Y0;Y.localeData=B0;Y.max=zT;Y.min=jT;Y.parsingFlags=N2;Y.set=gb;Y.startOf=M2;Y.subtract=o2;Y.toArray=L2;Y.toObject=I2;Y.toDate=R2;Y.toISOString=k2;Y.inspect=C2;typeof Symbol<"u"&&Symbol.for!=null&&(Y[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});Y.toJSON=j2;Y.toString=S2;Y.unix=O2;Y.valueOf=_2;Y.creationData=Y2;Y.eraName=H2;Y.eraNarrow=V2;Y.eraAbbr=G2;Y.eraYear=$2;Y.year=E0;Y.isLeapYear=Ib;Y.weekYear=eA;Y.isoWeekYear=tA;Y.quarter=Y.quarters=aA;Y.month=k0;Y.daysInMonth=Ob;Y.week=Y.weeks=Ub;Y.isoWeek=Y.isoWeeks=Bb;Y.weeksInYear=iA;Y.weeksInWeekYear=sA;Y.isoWeeksInYear=nA;Y.isoWeeksInISOWeekYear=rA;Y.date=$0;Y.day=Y.days=tT;Y.weekday=nT;Y.isoWeekday=rT;Y.dayOfYear=lA;Y.hour=Y.hours=cT;Y.minute=Y.minutes=uA;Y.second=Y.seconds=cA;Y.millisecond=Y.milliseconds=Q0;Y.utcOffset=GT;Y.utc=QT;Y.local=XT;Y.parseZone=KT;Y.hasAlignedHourOffset=ZT;Y.isDST=JT;Y.isLocal=e2;Y.isUtcOffset=t2;Y.isUtc=j0;Y.isUTC=j0;Y.zoneAbbr=fA;Y.zoneName=pA;Y.dates=Xt("dates accessor is deprecated. Use date instead.",$0);Y.months=Xt("months accessor is deprecated. Use month instead",k0);Y.years=Xt("years accessor is deprecated. Use year instead",E0);Y.zone=Xt("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",$T);Y.isDSTShifted=Xt("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",qT);function hA(e){return Re(e*1e3)}function mA(){return Re.apply(null,arguments).parseZone()}function X0(e){return e}var Ee=yf.prototype;Ee.calendar=tb;Ee.longDateFormat=sb;Ee.invalidDate=ab;Ee.ordinal=cb;Ee.preparse=X0;Ee.postformat=X0;Ee.relativeTime=fb;Ee.pastFuture=pb;Ee.set=qE;Ee.eras=U2;Ee.erasParse=B2;Ee.erasConvertYear=W2;Ee.erasAbbrRegex=X2;Ee.erasNameRegex=Q2;Ee.erasNarrowRegex=K2;Ee.months=Pb;Ee.monthsShort=Mb;Ee.monthsParse=_b;Ee.monthsRegex=Lb;Ee.monthsShortRegex=Rb;Ee.week=zb;Ee.firstDayOfYear=Yb;Ee.firstDayOfWeek=Fb;Ee.weekdays=Kb;Ee.weekdaysMin=Jb;Ee.weekdaysShort=Zb;Ee.weekdaysParse=eT;Ee.weekdaysRegex=iT;Ee.weekdaysShortRegex=sT;Ee.weekdaysMinRegex=oT;Ee.isPM=lT;Ee.meridiem=dT;function Ha(e,t,n,r){var i=Gn(),s=En().set(r,t);return i[n](s,e)}function K0(e,t,n){if(Hn(e)&&(t=e,e=void 0),e=e||"",t!=null)return Ha(e,t,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=Ha(e,r,n,"month");return i}function Lf(e,t,n,r){typeof e=="boolean"?(Hn(t)&&(n=t,t=void 0),t=t||""):(t=e,n=t,e=!1,Hn(t)&&(n=t,t=void 0),t=t||"");var i=Gn(),s=e?i._week.dow:0,o,a=[];if(n!=null)return Ha(t,(n+s)%7,r,"day");for(o=0;o<7;o++)a[o]=Ha(t,(o+s)%7,r,"day");return a}function gA(e,t){return K0(e,t,"months")}function vA(e,t){return K0(e,t,"monthsShort")}function yA(e,t,n){return Lf(e,t,n,"weekdays")}function wA(e,t,n){return Lf(e,t,n,"weekdaysShort")}function xA(e,t,n){return Lf(e,t,n,"weekdaysMin")}gr("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=ce(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}});G.lang=Xt("moment.lang is deprecated. Use moment.locale instead.",gr);G.langData=Xt("moment.langData is deprecated. Use moment.localeData instead.",Gn);var Pn=Math.abs;function SA(){var e=this._data;return this._milliseconds=Pn(this._milliseconds),this._days=Pn(this._days),this._months=Pn(this._months),e.milliseconds=Pn(e.milliseconds),e.seconds=Pn(e.seconds),e.minutes=Pn(e.minutes),e.hours=Pn(e.hours),e.months=Pn(e.months),e.years=Pn(e.years),this}function Z0(e,t,n,r){var i=cn(t,n);return e._milliseconds+=r*i._milliseconds,e._days+=r*i._days,e._months+=r*i._months,e._bubble()}function kA(e,t){return Z0(this,e,t,1)}function CA(e,t){return Z0(this,e,t,-1)}function Uh(e){return e<0?Math.floor(e):Math.ceil(e)}function EA(){var e=this._milliseconds,t=this._days,n=this._months,r=this._data,i,s,o,a,l;return e>=0&&t>=0&&n>=0||e<=0&&t<=0&&n<=0||(e+=Uh(rd(n)+t)*864e5,t=0,n=0),r.milliseconds=e%1e3,i=Wt(e/1e3),r.seconds=i%60,s=Wt(i/60),r.minutes=s%60,o=Wt(s/60),r.hours=o%24,t+=Wt(o/24),l=Wt(J0(t)),n+=l,t-=Uh(rd(l)),a=Wt(n/12),n%=12,r.days=t,r.months=n,r.years=a,this}function J0(e){return e*4800/146097}function rd(e){return e*146097/4800}function bA(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if(e=Kt(e),e==="month"||e==="quarter"||e==="year")switch(t=this._days+r/864e5,n=this._months+J0(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(rd(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return t*24+r/36e5;case"minute":return t*1440+r/6e4;case"second":return t*86400+r/1e3;case"millisecond":return Math.floor(t*864e5)+r;default:throw new Error("Unknown unit "+e)}}function TA(){return this.isValid()?this._milliseconds+this._days*864e5+this._months%12*2592e6+ce(this._months/12)*31536e6:NaN}function $n(e){return function(){return this.as(e)}}var AA=$n("ms"),PA=$n("s"),MA=$n("m"),DA=$n("h"),_A=$n("d"),OA=$n("w"),RA=$n("M"),LA=$n("Q"),IA=$n("y");function jA(){return cn(this)}function zA(e){return e=Kt(e),this.isValid()?this[e+"s"]():NaN}function Kr(e){return function(){return this.isValid()?this._data[e]:NaN}}var NA=Kr("milliseconds"),FA=Kr("seconds"),YA=Kr("minutes"),UA=Kr("hours"),BA=Kr("days"),WA=Kr("months"),HA=Kr("years");function VA(){return Wt(this.days()/7)}var On=Math.round,wi={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function GA(e,t,n,r,i){return i.relativeTime(t||1,!!n,e,r)}function $A(e,t,n,r){var i=cn(e).abs(),s=On(i.as("s")),o=On(i.as("m")),a=On(i.as("h")),l=On(i.as("d")),u=On(i.as("M")),c=On(i.as("w")),f=On(i.as("y")),h=s<=n.ss&&["s",s]||s0,h[4]=r,GA.apply(null,h)}function QA(e){return e===void 0?On:typeof e=="function"?(On=e,!0):!1}function XA(e,t){return wi[e]===void 0?!1:t===void 0?wi[e]:(wi[e]=t,e==="s"&&(wi.ss=t-1),!0)}function KA(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=!1,r=wi,i,s;return typeof e=="object"&&(t=e,e=!1),typeof e=="boolean"&&(n=e),typeof t=="object"&&(r=Object.assign({},wi,t),t.s!=null&&t.ss==null&&(r.ss=t.s-1)),i=this.localeData(),s=$A(this,!n,r,i),n&&(s=i.pastFuture(+this,s)),i.postformat(s)}var Lu=Math.abs;function ei(e){return(e>0)-(e<0)||+e}function Ul(){if(!this.isValid())return this.localeData().invalidDate();var e=Lu(this._milliseconds)/1e3,t=Lu(this._days),n=Lu(this._months),r,i,s,o,a=this.asSeconds(),l,u,c,f;return a?(r=Wt(e/60),i=Wt(r/60),e%=60,r%=60,s=Wt(n/12),n%=12,o=e?e.toFixed(3).replace(/\.?0+$/,""):"",l=a<0?"-":"",u=ei(this._months)!==ei(a)?"-":"",c=ei(this._days)!==ei(a)?"-":"",f=ei(this._milliseconds)!==ei(a)?"-":"",l+"P"+(s?u+s+"Y":"")+(n?u+n+"M":"")+(t?c+t+"D":"")+(i||r||e?"T":"")+(i?f+i+"H":"")+(r?f+r+"M":"")+(e?f+o+"S":"")):"P0D"}var me=Fl.prototype;me.isValid=BT;me.abs=SA;me.add=kA;me.subtract=CA;me.as=bA;me.asMilliseconds=AA;me.asSeconds=PA;me.asMinutes=MA;me.asHours=DA;me.asDays=_A;me.asWeeks=OA;me.asMonths=RA;me.asQuarters=LA;me.asYears=IA;me.valueOf=TA;me._bubble=EA;me.clone=jA;me.get=zA;me.milliseconds=NA;me.seconds=FA;me.minutes=YA;me.hours=UA;me.days=BA;me.weeks=VA;me.months=WA;me.years=HA;me.humanize=KA;me.toISOString=Ul;me.toString=Ul;me.toJSON=Ul;me.locale=Y0;me.localeData=B0;me.toIsoString=Xt("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ul);me.lang=U0;ee("X",0,0,"unix");ee("x",0,0,"valueOf");Q("x",Il);Q("X",yb);Me("X",function(e,t,n){n._d=new Date(parseFloat(e)*1e3)});Me("x",function(e,t,n){n._d=new Date(ce(e))});//! moment.js
-G.version="2.29.4";ZE(Re);G.fn=Y;G.min=NT;G.max=FT;G.now=YT;G.utc=En;G.unix=hA;G.months=gA;G.isDate=eo;G.locale=gr;G.invalid=Dl;G.duration=cn;G.isMoment=un;G.weekdays=yA;G.parseZone=mA;G.localeData=Gn;G.isDuration=ta;G.monthsShort=vA;G.weekdaysMin=xA;G.defineLocale=Tf;G.updateLocale=mT;G.locales=gT;G.weekdaysShort=wA;G.normalizeUnits=Kt;G.relativeTimeRounding=QA;G.relativeTimeThreshold=XA;G.calendarFormat=d2;G.prototype=Y;G.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};const ZA="/assets/arrow-ecc6ea9b.svg",JA=[{id:"rdma",label:"rdma"},{id:"xline",label:"Xline"},{id:"rust",label:"Rust"}],qA=[{id:999999,label:"ALL"},{id:1,label:"Last 1 Month"},{id:6,label:"Last 6 Months"},{id:12,label:"Last 1 Year"}],q0=M.div`
- font-weight: 700;
- font-size: 24px;
- line-height: 1.375;
- @media screen and (max-width: 1024px) {
- font-size: 20px;
- }
- @media screen and (max-width: 768px) {
- font-size: 16px;
- }
-`,Bh=M.div`
- max-width: 85%;
- margin-bottom: 16px;
- font-weight: 700;
- font-size: 16px;
- line-height: 1.5;
- @media screen and (max-width: 1024px) {
- margin-bottom: 12px;
- font-size: 14px;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 8px;
- font-size: 12px;
- }
-`,Wh=M.div`
- margin-bottom: 24px;
- font-weight: 600;
- font-size: 14px;
- line-height: 16.5px;
-`,eP=M(q0)`
- height: 32px;
- text-align: center;
-`,tP=M(q0)`
- margin-bottom: 26px;
- color: #7680dd;
-`,nP=M.div`
- margin-bottom: 16px;
- font-weight: 400;
- font-size: 8px;
- line-height: 1.5;
- @media screen and (max-width: 1024px) {
- margin-bottom: 12px;
- font-size: 6px;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 8px;
- font-size: 4px;
- }
-`,rP=M.img`
- display: block;
- margin-inline: auto;
- width: 100%;
- margin-top: 24px;
- border-radius: 8px;
- @media screen and (max-width: 1024px) {
- margin-top: 18px;
- border-radius: 6px;
- }
- @media screen and (max-width: 768px) {
- margin-top: 12px;
- border-radius: 4px;
- }
-`,iP=M.div`
- padding-top: 84px;
- color: #42424a;
- @media screen and (max-width: 1024px) {
- padding-top: 69px;
- }
- @media screen and (max-width: 768px) {
- padding-top: 53px;
- }
-`,sP=M.div`
- display: flex;
- max-width: 1440px;
- margin-inline: auto;
- padding-block: 64px;
- padding-top: 48px;
- padding-inline: 128px;
- @media screen and (max-width: 1024px) {
- padding-block: 48px;
- padding-top: 32px;
- padding-inline: 96px;
- }
- @media screen and (max-width: 768px) {
- padding-block: 32px;
- padding-top: 24px;
- padding-inline: 64px;
- }
- @media screen and (max-width: 425px) {
- padding-block: 16px;
- padding-top: 12px;
- padding-inline: 32px;
- }
-`,oP=M.div`
- position: sticky;
- top: calc(84px + 48px + 48px);
- left: 0;
-`,Hh=M.div`
- margin-bottom: 32px;
-`,Vh=M.div`
- width: 200px;
- margin-bottom: 16px;
- padding-block: 2px;
- font-weight: 400;
- font-size: 12px;
- line-height: 1.5;
- text-align: center;
- background: ${({isActive:e})=>e?"#D9DBEF":"white"};
- border: 1px solid #d9dbef;
- border-radius: 16px;
-`,aP=M.div`
- column-count: 2;
- column-gap: 32px;
- flex-grow: 1;
-
- @media screen and (max-width: 1200px) {
- flex-direction: column;
- }
-`,lP=M.div`
- position: relative;
- margin-bottom: 32px;
- padding: 32px;
- border-radius: 16px;
- box-shadow: 2px 5px 15px rgba(0, 0, 0, 0.160784);
- cursor: pointer;
- page-break-inside: avoid;
-
- @media screen and (max-width: 1200px) {
- width: 100%;
- }
- @media screen and (max-width: 1024px) {
- margin-bottom: 24px;
- padding: 24px;
- border-radius: 12px;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 16px;
- padding: 16px;
- border-radius: 8px;
- }
-`,uP=M.div`
- flex-shrink: 0;
- width: 250px;
- margin-right: 32px;
- @media screen and (max-width: 1024px) {
- display: none;
- }
-`,cP=M.img`
- position: absolute;
- top: 36px;
- right: 36px;
- width: 18px;
- height: 18px;
- @media screen and (max-width: 1024px) {
- top: 27px;
- right: 27px;
- width: 13.5px;
- height: 13.5px;
- }
- @media screen and (max-width: 768px) {
- top: 18px;
- right: 27px;
- width: 13.5px;
- height: 13.5px;
- }
-`,Gh=Object.assign({"/src/blogs/2022-07-21-Understanding-Functor-in-Rust/index.md":()=>Na(()=>import("./index-99aeb84d.js"),[]),"/src/blogs/2023-12-22-Blue-Ethernet-High-Performance-FPGA-Network-Packet-Processing-Project-Overview/index.md":()=>Na(()=>import("./index-a6688a35.js"),[])}),dP=()=>{const[e,t]=R.useState([]),[n,r]=R.useState([]),[i,s]=R.useState([]),[o,a]=R.useState(999999),l=Xr();R.useEffect(()=>{Promise.all(Object.keys(Gh).map(c=>Gh[c]())).then(c=>{t(c),r(c)})},[]);function u(c,f){const h=new Set(c);return console.log(f.some(y=>h.has(y))),f.some(y=>h.has(y))}return R.useEffect(()=>{const c=e.filter(f=>{const h=G(),y=G(f.metadata.date);return h.diff(y,"months")<=o});if(i.length===0){const f=c;console.log(f),r(f)}else{const f=c.filter(h=>u(i,h.metadata.tags));console.log(f),r(f)}},[i,o]),R.useEffect(()=>{},[e]),v.jsxs(iP,{children:[v.jsx(qs,{theme:"dark",activeId:"resources"}),v.jsx(eP,{children:"Blog"}),v.jsxs(sP,{children:[v.jsx(uP,{children:v.jsxs(oP,{children:[v.jsx(tP,{children:"Sort"}),v.jsxs(Hh,{children:[v.jsx(Wh,{children:"Category"}),JA.map(({id:c,label:f})=>v.jsx(Vh,{isActive:i.includes(c),onClick:()=>{i.includes(c)?s(i.filter(h=>h!==c)):s([...i,c])},children:f},c))]}),v.jsxs(Hh,{children:[v.jsx(Wh,{children:"Time"}),qA.map(({id:c,label:f})=>v.jsx(Vh,{isActive:c===o,onClick:()=>a(c),children:f},c))]})]})}),v.jsx(aP,{children:n.length===0?v.jsx(Bh,{children:"No match results"}):n.map(c=>v.jsxs(lP,{onClick:()=>{l(`${c.metadata.date}-${c.metadata.title.split(" ").join("-")}`)},children:[v.jsx(cP,{src:ZA}),v.jsx(Bh,{children:c.metadata.title}),v.jsx(nP,{children:c.metadata.description}),c.assetURLs[0]&&v.jsx(rP,{src:c.assetURLs[0],alt:"cover"})]},c.metadata.title))})]})]})},fP=(e,t)=>{const n=R.useRef({});R.useEffect(()=>{const r=a=>{n.current=a.reduce((c,f)=>(c[f.target.innerHTML]=f,c),n.current);const l=[];Object.keys(n.current).forEach(c=>{const f=n.current[c];f.isIntersecting&&l.push(f)});const u=c=>o.findIndex(f=>f.id===c);if(l.length===1)e(l[0].target.id);else if(l.length>1){const c=l.sort((f,h)=>u(f.target.id)-u(h.target.id));e(c[0].target.id)}},i={rootMargin:"0px 0px -40% 0px"},s=new IntersectionObserver(r,i),o=Array.from(document.querySelectorAll("h2, h3"));return o.forEach(a=>s.observe(a)),()=>s.disconnect()},[t])},pP=M.div`
- padding-top: 84px;
- color: #42424a;
- background: #f5f5f5;
- min-height: 100vh;
-`,hP=M.div`
- display: flex;
- max-width: 1440px;
- margin-inline: auto;
- padding-block: 64px;
- padding-top: 32px;
- padding-inline: 128px;
-`,mP=M.div`
- flex-grow: 1;
- margin-right: 32px;
- padding-inline: 64px;
- background: #fff;
- border-radius: 8px;
-`,gP=M.div`
- flex-shrink: 0;
- width: 300px;
-`,vP=M.div`
- position: sticky;
- top: calc(84px + 32px);
- left: 0;
- padding: 32px;
- background: #ffffff;
- border-radius: 8px;
-`,yP=M.div`
- display: block;
- margin-block: 16px;
- padding-left: ${({level:e})=>e===3?"48px":"16px"};
- color: ${({isActive:e})=>e?"#722ed1":"inherit"};
- border-left: ${({isActive:e})=>e?"8px solid #722ed1":"8px solid transparent"};
- font-weight: 700;
- font-size: 0.18rem;
- line-height: 1.5;
- /* border-radius: 50%; */
- cursor: pointer;
-`,wP=Object.assign({"/src/blogs/2022-07-21-Understanding-Functor-in-Rust/index.md":()=>Na(()=>import("./index-99aeb84d.js"),[]),"/src/blogs/2023-12-22-Blue-Ethernet-High-Performance-FPGA-Network-Packet-Processing-Project-Overview/index.md":()=>Na(()=>import("./index-a6688a35.js"),[])}),xP=()=>{const{params:e}=zx(),[t,n]=R.useState(),[r,i]=R.useState("");fP(i,t),R.useEffect(()=>{wP[`/src/blogs/${e}/index.md`]().then(o=>{n(o)}).catch(o=>{console.log(o)})},[]);const s=o=>{var a;(a=document.querySelector(`#${o}`))==null||a.scrollIntoView({behavior:"smooth"})};return v.jsxs(pP,{children:[v.jsxs(hP,{children:[v.jsx(mP,{className:"content",dangerouslySetInnerHTML:{__html:(t==null?void 0:t.default)||""}}),(t==null?void 0:t.toc.length)!==0&&v.jsx(gP,{children:v.jsx(vP,{children:((t==null?void 0:t.toc)||[]).map(({label:o,level:a})=>{const l=o.split(" ").join("-").toLowerCase();return v.jsx(yP,{level:a,isActive:r===l,onClick:()=>s(l),children:o},o)})})})]}),v.jsx(qs,{theme:"dark",activeId:"resources"})]})},SP="/assets/image1-9be52310.png",kP="/assets/image2-baebe8ee.png",CP="/assets/image3-4fcf521a.png",EP="/assets/image4-feb06521.png",bP="/assets/dot-37a9b3fe.svg",TP=M.div`
- margin-top: 84px;
- color: #42424a;
- font-family: PingFang SC;
- @media screen and (max-width: 1024px) {
- margin-top: 69px;
- }
- @media screen and (max-width: 768px) {
- margin-top: 53px;
- }
-`,AP=M.div`
- max-width: 1440px;
- margin-inline: auto;
- padding-block: 24px;
- padding-inline: 165px;
- @media screen and (max-width: 1024px) {
- padding-block: 18px;
- padding-inline: 123.75px;
- }
- @media screen and (max-width: 768px) {
- margin-block: 12px;
- padding-inline: 82.5px;
- }
- @media screen and (max-width: 425px) {
- margin-block: 6px;
- padding-inline: 41.25px;
- }
-`,PP=M.h1`
- font-weight: 600px;
- font-size: 36px;
- line-height: 1.5;
- text-align: center;
- color: #42424a;
- @media screen and (max-width: 1024px) {
- font-size: 27px;
- }
- @media screen and (max-width: 768px) {
- font-size: 18px;
- }
-`,MP=M.ul``,DP=M.li`
- display: flex;
- align-items: center;
- padding-block: 24px;
- padding-inline: 12px;
- border-bottom: 0.5px solid #9a9a9a;
- cursor: pointer;
- /* :last-child {
- border-bottom: none;
- } */
- @media screen and (max-width: 1024px) {
- flex-direction: column;
- padding-block: 18px;
- padding-inline: 9px;
- }
- @media screen and (max-width: 768px) {
- padding-block: 12px;
- padding-inline: 6px;
- }
-`,_P=M.div`
- flex-grow: 1;
- margin-right: 48px;
- @media screen and (max-width: 1024px) {
- margin-right: 0;
- }
-`,OP=M.img`
- width: 40%;
- @media screen and (max-width: 1024px) {
- width: 100%;
- }
-`,RP=M.div`
- margin-bottom: 6px;
- font-size: 15px;
- line-height: 2;
- font-weight: 600px;
- color: #7680dd;
- @media screen and (max-width: 1024px) {
- margin-bottom: 4.5px;
- font-size: 12px;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 3px;
- }
-`,LP=M.div`
- margin-bottom: 27px;
- font-size: 27px;
- line-height: 1.22;
- font-weight: 600;
- color: #1e1e1e;
- @media screen and (max-width: 1024px) {
- margin-bottom: 20.25px;
- font-size: 20.25;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 13.5px;
- font-size: 16px;
- }
-`,IP=M.div`
- margin-bottom: 6px;
- font-size: 13.5px;
- line-height: 1.77;
- font-weight: 400;
- color: #7d7d7d;
- @media screen and (max-width: 1024px) {
- margin-bottom: 4.5px;
- font-size: 12px;
- }
- @media screen and (max-width: 768px) {
- margin-bottom: 3px;
- }
-`,jP=M.div`
- display: flex;
- align-items: center;
- font-size: 12px;
- line-height: 1%.5;
- font-weight: 600;
- @media screen and (max-width: 1024px) {
- font-size: 9px;
- }
- @media screen and (max-width: 768px) {
- font-size: 6px;
- }
-`,zP=M.img`
- width: 22px;
- height: 22px;
- padding-inline: 8px;
- @media screen and (max-width: 1024px) {
- width: 16.5px;
- height: 16.5px;
- padding-inline: 6px;
- }
- @media screen and (max-width: 768px) {
- width: 11px;
- height: 11px;
- padding-inline: 4px;
- }
-`,NP=M.div`
- color: #797979;
-`,FP=M.div`
- color: #7680dd;
-`,YP=[{date:"2023-01-19",title:"Geo-distributed Metadata Management System",description:"The webinar aims to briefly introduce DatenLord’s open source project Xline, a distributed metadata management system for multi-clusters. It reveals the motivation of Xline, the architecture of it and the important consensus protocol, CURP. The performance comparison shows the advantage of Xline over the current solution.",author:"By jicheng Shi",read:"19min",img:SP,url:"https://www.cncf.io/online-programs/cncf-on-demand-webinar-geo-distributed-metadata-management-system/"},{date:"2023-05-04",title:"Proofing the Correctness of the CURP Consensus Protocol Using TLA+",description:"The CURP Replication Protocol (NSDI ’19) aims to eliminate the additional round trips between servers in replicated state machines. We extended CURP into a consensus protocol and used it in our open source project Xline. This webinar is about how we modeled the CURP consensus protocol in TLA+ and verified the correctness of it.",author:"By Ye Tian",read:"20min",img:kP,url:"https://www.cncf.io/online-programs/cncf-on-demand-webinar-proofing-the-correctness-of-the-curp-consensus-protocol-using-tla/"},{date:"2023-09-08",title:"How to Write a Distributed Key-value store in Rust",description:"In this presentation, we will explore how to use Rust to build a distributed key-value store, taking the open-source distributed KV storage Xline as an example.",author:"By Jiawei Zhao",read:"35min",img:CP,url:"https://community.cncf.io/events/details/cncf-cncf-online-programs-presents-cncf-on-demand-webinar-how-to-write-a-distributed-key-value-store-in-rust/"},{date:"2023-12-14",title:"Application and analysis of Jepsen tests in Xline",description:"This presentation offers an overview of applying Jepsen tests to Xline, a distributed KV Store. It begins with a brief introduction to Jepsen, followed by an exploration of the application of Jepsen tests to Xline. The presentation then delves into the test results and system analysis. Finally, it discusses the lessons learned and outlines future work in chaos engineering for Xline.",author:"Zhegnhao Yin",read:"13min",img:EP,url:"https://www.cncf.io/online-programs/cncf-on-demand-webinar-application-and-analysis-of-jepsen-tests-in-xline/"}],UP=e=>{const{date:t,title:n,description:r,author:i,read:s,img:o,url:a}=e.data;return v.jsxs(DP,{onClick:()=>window.location.href=`${a}`,children:[v.jsxs(_P,{children:[v.jsx(RP,{children:G(t,"YYYY-MM-DD").format("dddd MMMM D, YYYY")}),v.jsx(LP,{children:n}),v.jsx(IP,{children:r}),v.jsxs(jP,{children:[v.jsx(NP,{children:i}),v.jsx(zP,{src:bP}),v.jsx(FP,{children:s})]})]}),v.jsx(OP,{src:o})]})},BP=()=>v.jsxs(TP,{children:[v.jsx(qs,{theme:"dark",activeId:"resources"}),v.jsx(PP,{children:"Tech Talk"}),v.jsx(AP,{children:v.jsx(MP,{children:YP.map(e=>v.jsx(UP,{data:e},e.title))})})]}),WP=M.div`
- display: flex;
- justify-content: center;
- align-items: center;
- height: 6.8rem;
- padding: calc(0.67rem + 0.9rem) 1.03rem 0.34rem;
- background: #0a061f;
- color: #ffffff;
-`,HP=M.div`
- font-size: 0.72rem;
- line-height: 0.44rem;
- font-weight: 700;
-`,io=({children:e})=>v.jsx(WP,{children:v.jsx(HP,{children:e})}),VP=M.div`
- padding: 0.96rem 1.24rem 1.24rem;
- background: ${e=>e.bgColor};
-`,Yi=({children:e,backgroundColor:t="#fff"})=>v.jsx(VP,{bgColor:t,children:e}),GP=M.div`
- font-family: Inter;
- font-size: 40px;
- font-weight: 700;
- line-height: 60px;
- text-align: center;
- color: #42424a;
-`,$P=({children:e,style:t})=>v.jsx(GP,{as:"h2",style:t,children:e}),QP="/assets/image1-c268e26b.png",XP="/assets/image2-4023a72e.png",$h=M.img`
- width: 100%;
-`,KP=()=>v.jsxs(ke.Fragment,{children:[v.jsx(io,{children:"DatenLord Cloud Service"}),v.jsx(Yi,{children:v.jsx($h,{style:{width:"100%"},src:QP})}),v.jsxs(Yi,{backgroundColor:"#F8FAFF",children:[v.jsx($P,{style:{marginBottom:"1rem"},children:"Open Source Product"}),v.jsx($h,{style:{width:"100%"},src:XP})]})]}),ZP="/assets/image1-83420874.png",JP="/assets/image2-9ab7bd69.png",qP="/assets/image3-0c935ca9.png",eM="/assets/image4-7dd0c866.png",zo=M.img`
- width: 100%;
- margin-bottom: 1rem;
- &:last-child {
- margin-bottom: 0;
- }
-`,tM=()=>v.jsxs(ke.Fragment,{children:[v.jsx(io,{children:"DatenLord Appliance"}),v.jsxs(Yi,{children:[v.jsx(zo,{src:ZP}),v.jsx(zo,{src:JP}),v.jsx(zo,{src:qP}),v.jsx(zo,{src:eM})]})]}),nM="data:image/png;base64,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",rM="/assets/image2-25dd7e89.png",iM="data:image/png;base64,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",sM="/assets/image4-c6d8ff14.png",oM=M.div`
- background: #ffffff4f;
- border-radius: 0.42rem;
- overflow: hidden;
- margin-bottom: 0.7rem;
- &:last-child {
- margin-bottom: 0;
- }
-`,aM=M.div`
- padding: 0.4rem 0.8rem;
- background: #0a061f;
- color: #ffffff;
- font-size: 0.48rem;
- line-height: 0.74rem;
- font-weight: 600;
-`,lM=M.div`
- display: flex;
- flex-direction: column;
- align-items: center;
- background: #ffffff4f;
- padding: 0.42rem 0.32rem;
-`,uM=M.div`
- width: 100%;
- color: #050214;
- font-size: 0.3rem;
- line-height: 0.42rem;
- font-weight: 500;
- padding: 0.37rem 0.34rem;
- background: #d9dbef;
- border-radius: 0.12rem;
- position: relative;
- overflow: hidden;
-`,cM=M.div`
- padding: 0.28rem 0.32rem;
-`,Qh=M.div`
- font-size: 0.38rem;
- line-height: 0.56rem;
- font-weight: 600;
- color: #000000;
-`,dM=M.div`
- font-weight: 600;
- font-size: 0.32rem;
- line-height: 0.42rem;
- color: #7767a0;
-`,fM=M.div`
- color: #42424a;
- font-weight: 400;
- font-size: 0.24rem;
- line-height: 0.42rem;
-`,pM=M.div`
- font-size: 0.24rem;
- line-height: 0.42rem;
- font-weight: 400;
- color: #42424a;
- display: flex;
- align-items: flex-start;
- ::before {
- content: '•';
- padding-inline: 0.08rem;
- }
-`,hM=M.div`
- margin-bottom: 0.42rem;
- &:last-child {
- margin-bottom: 0;
- }
-`,mM=[{title:"AI Inference",desc:" Integrating GPU computing power in a cloud-based manner to address the challenges of expensive and dispersed AI computing resources. Leveraging storage and networking to enhance user experience, achieving sub-second startup and recovery times.",cover:nM,challenge:{desc:"The surge in demand for high-performance GPU computing power for large AI models has led to an imbalance in supply and demand.",txt:"The scarcity of GPU computing power, exacerbated by factors such as design and manufacturing costs and market monopolies, has significantly raised GPU prices. GPU computing resources prioritize AI training scenarios, resulting in the fragmented or decentralized nature of GPU computing resources for AI inference scenarios."},options:[{title:"Solution",txt:["Optimize caching techniques to implement data preloading and asynchronous persistence, thereby improving data access performance.","Implement high-performance RDMA networking for multi-node memory sharing, accelerating the distribution and loading of large models."]},{title:"Customer's needs and challenges:",txt:["The customer is a company specializing in overseas live streaming sales, utilizing large model technology for AI presenters to achieve low-cost horizontal business expansion.",'The customer plans to customize large models for live streaming scenarios to establish an independent and controllable "Live Streaming Scene Large Model."']},{title:"DatenLord Cloud Service can provide:",txt:['Cross-cloud technology to facilitate the implementation of "large model" business scenarios.',"Efficient data synchronization mechanisms to ensure real-time and consistent large model performance across different data centers.","Effective data distribution mechanisms to ensure the large model can promptly access and process the latest data, enhancing business response speed.","Flexible management and adjustment tools, allowing customers to independently control and adapt large models based on changing business needs.","Advanced security measures, including data encryption and identity authentication, ensuring the secure operation of large models in a cross-cloud environment."]}],image:sM},{title:"High-Performance Storage",desc:"Unified high-performance cross-cloud data access and cross-cloud distributed metadata management.",cover:rM,challenge:{desc:"The disconnect between clouds leads to data isolation and data fragmentation, and when accessing data across clouds, access speed and consistency will suffer.",txt:"With the rapid implementation of AI applications, multi-cloud architecture has become the mainstream choice for enterprise-level IT. However, the isolation between clouds leads to data segregation and fragmentation. Due to data often being bound to a specific cloud provider/data center, it cannot be freely accessed. Additionally, cross-cloud data access exhibits high-latency characteristics, and existing distributed consensus protocols are limited to use within a single data center. Therefore, when accessing data across clouds, access speed and consistency are compromised."},options:[{title:"Solution",txt:["Firstly, regardless of where the data is stored, DatenLord accelerates cross-cloud data access through caching and provides unified data management for automatic data migration and backup. ","Secondly, DatenLord adopts a kernel-bypass architecture, enabling storage IO self-scheduling management to enhance performance. ","Thirdly, a low-latency cross-cloud distributed consensus protocol ensures high speed and strong consistency in wide-area network scenarios, while eliminating single-point bottlenecks within the system."]},{title:"Customer's needs and challenges:",txt:["The customer is a content-focused entertainment company primarily operating in the education, social, and short-form content sectors in the Middle East and Europe.","The customer requires a solution for data synchronization, migration, backup, and automated management across multiple countries and data centers."]},{title:"DatenLord Cloud Service offers an integrated solution to help the customer effectively manage the complexity of multiple-country, multiple-data-center operations, thereby enhancing business availability and stability.",txt:["Real-time data synchronization across multiple countries and data centers, ensuring consistency of content globally.","Efficient tools for data migration and backup, addressing the needs of business expansion and disaster recovery.","Automated management tools, including automated deployment, resource allocation, and monitoring.","High availability and elastic scaling solutions to address challenges posed by technical failures or peak periods."]}]},{title:"High-Performance Networking",desc:"A deep integration of software and hardware",cover:iM,challenge:{desc:"The disconnect between clouds leads to data isolation and data fragmentation, and when accessing data across clouds, access speed and consistency will suffer.",txt:" With the advent of the era of large models, whether in the transfer and migration of training data and checkpoints during model training or in the dynamic scheduling and loading of multiple models during the inference process, there is a desire to maximize the bandwidth of every bit on the network and bus. This is done in exchange for shorter training times and smaller request-response latencies. As the scale of training and inference clusters grows, and business complexity increases, occasional congestion or failures in the network become inevitable. Additionally, readjusting network card parameters after each change in network topology is a cumbersome task. A high-performance network that can rapidly and autonomously adapt to changes in network topology, providing continuous and stable data transfer capabilities, has become an essential infrastructure in the era of large models."},options:[{title:"Solution",txt:["Leveraging the optimized RoCE v2 protocol and hardware-accelerated error correction coding technology, efficient data recovery and retransmission mechanisms can be provided even in challenging network conditions.","Through a deep integration of software and hardware, a comprehensive suite enables dynamic awareness of the entire network's traffic. An intelligent decision system can rapidly and automatically adjust software and hardware parameters for each node in various network environments, ensuring optimal throughput across the entire network."]}]}],gM=({data:e})=>{const{title:t,desc:n,cover:r,challenge:i,options:s,image:o}=e;return v.jsxs(oM,{children:[v.jsx(aM,{children:t}),v.jsxs(lM,{children:[v.jsxs(uM,{children:[n,v.jsx("img",{style:{position:"absolute",top:"0",right:"0",height:"1.8rem"},src:r})]}),v.jsxs(cM,{children:[v.jsx(Qh,{style:{marginBottom:"0.16rem"},children:"Challenge"}),v.jsx(dM,{style:{marginBottom:"0.16rem"},children:i.desc}),v.jsx(fM,{style:{marginBottom:"0.42rem"},children:i.txt}),s==null?void 0:s.map(({title:a,txt:l})=>v.jsxs(hM,{style:{},children:[v.jsx(Qh,{style:{marginBottom:"0.16rem"},children:a}),l.map((u,c)=>v.jsx(pM,{children:u},c))]},a))]}),o&&v.jsx("img",{src:o,style:{width:"10rem"}})]})]})},vM=()=>v.jsxs(ke.Fragment,{children:[v.jsx(io,{children:"Solution"}),v.jsx(Yi,{backgroundColor:"#EDEDF6",children:mM.map(e=>v.jsx(gM,{data:e},e.title))})]}),yM="/assets/image1-fc6c83ef.png",Iu=M.div`
- padding: 0.75rem 0.4rem;
- border-radius: 0.12rem;
- position: relative;
- overflow: hidden;
-`,wM=M.div`
- font-weight: 700;
- font-size: 0.63rem;
- line-height: 0.84rem;
-`,Xh=M.div`
- font-weight: 600;
- font-size: 0.3rem;
- line-height: 0.375rem;
-`,No=M.div`
- font-weight: 400;
- font-size: 0.24rem;
- line-height: 0.64rem;
- color: #0a061f;
-`,Kh=M.div`
- font-weight: 700;
- font-size: 0.4rem;
- line-height: 0.53rem;
-`,Fo=M.div`
- font-weight: 400;
- font-size: 0.24rem;
- line-height: 0.36rem;
-`,xM=M.img`
- position: absolute;
- top: 0;
- right: 0;
- width: 4.2rem;
-`,SM=()=>v.jsxs(ke.Fragment,{children:[v.jsx(io,{children:"Open Source Project"}),v.jsxs(Yi,{children:[v.jsx(wM,{style:{marginBottom:"0.36rem"},children:"RDMA"}),v.jsx(Xh,{style:{marginBlock:"0.88rem"},children:"Async-RDMA is a framework designed to provide advanced abstractions and an asynchronous API for developing Remote Direct Memory Access (RDMA) applications."}),v.jsxs(Iu,{style:{background:"#7767A0",color:"#FFFFFF",marginBottom:"0.32rem"},children:[v.jsx(Fo,{style:{marginBottom:"0.16rem"},children:"RDMA enables direct memory access from one machine to another, enhancing the performance of applications that require low latency and high throughput. RDMA supports kernel bypass and zero-copy, eliminating the need for CPU involvement. However, writing RDMA applications using low-level C language libraries can be challenging and error-prone. To simplify this process, we developed Async-RDMA, which offers an easy-to-use API, abstracting the complexity of underlying RDMA operations."}),v.jsx(Kh,{children:"With Async-RDMA, most RDMA operations can be accomplished with just a single line of code. It provides the following key features:"})]}),v.jsxs(Iu,{style:{background:"#D9DBEF",marginBottom:"0.88rem"},children:[v.jsx(No,{children:"1. A tool for establishing connections with RDMA endpoints."}),v.jsx(No,{children:"2. An advanced asynchronous API for transferring data between endpoints."}),v.jsx(No,{children:"3. A high-level API for managing RDMA memory regions."}),v.jsx(No,{children:"4. A framework working behind the scenes to manage memory regions and execute RDMA requests asynchronously."}),v.jsx(xM,{src:yM})]}),v.jsx(Xh,{style:{marginBottom:"0.88rem"},children:"Open-RDMA is an open-source software and hardware implementation suite based on the optimized extension of the RoCE v2 protocol."}),v.jsxs(Iu,{style:{background:"#0A061F",color:"#FFFFFF"},children:[v.jsxs(Kh,{style:{marginBottom:"0.16rem"},children:["RoCE v2",v.jsxs("span",{style:{fontWeight:"600",fontSize:"0.32rem",lineHeight:"0.42rem"},children:[" ","(RDMA over Converged Ethernet version 2)"]})," ","is a network protocol designed to enable Remote Direct Memory Access (RDMA) over Ethernet. It represents an improvement over the original RoCE standard, offering a more efficient and scalable approach to RDMA execution on Ethernet."]}),v.jsx(Fo,{style:{marginBottom:"0.48rem"},children:"The core component of the Open-RDMA suite is a software and hardware implementation that further optimizes the RoCE v2 protocol. Taking full advantage of collaborative software and hardware design, it achieves high throughput and low latency through hardware acceleration. The suite utilizes a software user-space protocol stack for centralized management and highly configurable transfer strategies, ensuring optimal performance in various network environments. The project employs Bluespec SystemVerilog, C, and Rust for implementing hardware and software logic, ensuring correctness and maintainability of the open-source project."}),v.jsx(Fo,{style:{marginBottom:"0.48rem"},children:"In terms of testing and validation, we actively utilize open-source verification tools while also developing our own. Open-RDMA suite undergoes RTL-level verification using Bluesim and Cocotb tools, protocol packet-level verification with our in-house RoCE-Sim tool, and software-hardware co-simulation verification and debugging using the Distro-Sim tool."}),v.jsx(Fo,{children:"Currently, we have established the basic framework for the entire open-source suite and are progressively incorporating additional features."})]})]})]}),Zh="/assets/image1-63140f6c.png",kM="/assets/image2-8d0dcae7.png",CM="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANpSURBVHgBvZhdThpRFMf/5/KRPpiGHRRjbdInxxVUVqCuQFyBmKLxjcubERPpCsQVyA7EFYhPTbUGugPqk0Gd23NgZphRmS+o/4QMDHfu/Obcj/M/Q0ihir4q5M1C2ZBa4Z8WAQU5b2D6fLjmY/tYL3eQUJSksUBk6eOOMqjAAQhR3+C53tBfWpg3zJ6+4QhkzvlrEcnUHOK+3tSrg6iGsWC+618bGWTPg2fNpYLdAnKdB2DwYRSpp+IzaIOg1vn/otcS6D7ivhQFFAlT0T+LeeSv4A0L9RWetw8j5sS+vtN8qPmAWg29tB12jUKEGOQiCEKlwxiT80gvadtg1/3NT13moS4jLYxzcTEIsthHTB3Xl5q8sn5MzmROkBaGJ+yO+93AricBcdXQnyvyIOP+UNjn+YekMDJX+GA5WH3utIW0MpPoELLrSAqTR87y+oJ9jRmkSLUnfWFtajtMlfFgCKaLGTQeXnKXdRHJYeYrY+y/UW2mwxgVuWMmERF9imozHYZGSW8kA/qGGSSpxNdxNzHMEJmOrwNLkiRSykBVvJ5C5t9UmKZeHHBEOuMOUMhjoYIUki1C+SJLsM+QFEYkFsDXtBYMdzxlkdPw7eJhqSQURgySG51RV2whnM0wljhZnnBUtiY3o1JY+8il/QjadLdzlmTwXrV+Vwu7pqpv1/b0b0mwvqGNTiex/MyB7hVtmAu/R8HIyaFDxr62CV2emEUyVDBE6wRaC/Zg14/0so66TwKn12OnZ/vsRGy12U5sxmkYCSMh5yet8cdKAeIqlh+eCuM4PPEfU1K+5BrzRyoC7sSXd0iAV5AC6k0Yx/Oe4lUkzCUMtSULR03GA47oW37YUXuI4W5Tf+2HwlTrvZoytg4gsFt7REbLRogU4pVVZqjaywXAQCU/EIWBmFEeoe2GXpzJQrh6adJfAqkJ/Y0VjIg54z2mNC8QkZh0zlOrfm+TQ+7U/d+DcQo0V7wcP5fTDkuY5OHMaCceA8meVK3dVjyY11WA2sV/lADZxnh5j0jVxBWoMd3sVUBSSRnjrxqyWLBURfdk+VpjEAxmqgKSylc1ZKC2VBZPPuM9WxWQVMGqgSxFgQKd5rZy4uhhsnPL3Qv8qsWzB6J3hRmvVvf+NFBioPjVBi+1p813nS+OxHDJW40hH/8BjFhkJX9+5PYAAAAASUVORK5CYII=",EM="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA8CAYAAAAzF3kIAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAATwSURBVHgB7ZtPbBRVHMd/b7aVEi3dGkEvbdaz3VgTT3Qbt/GkjVr0oMABvBjRhED8AxgNJSYC0YOYKMYLVUPRE2hET0obV+KhJo1bLvTApr3wL3RmQ0gpMI/3neWV2WFml/fmbbM74UMWdmdnZ/Yzv9/7vT/MMqpDWnCT2voZsQwe1BQw26Vb01ftyxN194x645H0Y3mL2AgxtkW8TFNzYnPOT9ygG/sWbbsUtsM9gpWIte+1GNtBLYTL+ZdtQtQW+LdXCQq3jMseOiWeZqg1KS3xpSF/NJcFEyAnqZK05NZb1H6EWl8OZNorLh4p/NWZXruVtVibq4VwyazqWO1cX7z2r5eia7rXnaNkRM8Ht8sLl7pZZ3rdCGN0nBKIy90hixEfoYTCyNoi+nL2NCUUkZl5VNF+Siw83UYNpqtrDWX7+qi3t0c87/K2zc3Nk+M4NDc/7z1vHKwxgpDa9vZbNDgwQLnc+pr7Fgqn6bff/6CT4tEIWSa6CE6GkGLviIeMlgrjx36m/Qc/NypqTHDTxtfpwGefaon5gdzujz7xImqC1KrVD49STPbs+sCT6+jooLjgAr32qpiliT+Ff05TXGILQm73rvfJNGi7JiRjCaK9je79mBoFJB2nTFNT/5EuFmmCso+09IMikXvuedr27nalQiHbXbb/Wa/I+ME5cgPrSRftIlOcnvIk/Qy/tKEqpRDhbPYpKhbPVPq9O9JoZ/jsoIjQ/8UZOnDwi+XPZLN9VJj8s+q46EqGX95AOmj1g6iYQTnglMtVrw9/+12tw4S+jwsRBKmKKOq0R60URT8XRm9PD8UlqptBMdNBWRCRQxqtNIhiWNbUQ1kwqsGjwJjonIuiTUal9vCLL5AqyoKbN74Ruv3o+E9kim8iBAdz6tVUu5vwg8JgYtQhQbUN62Z02rhWGwyCztg0YdVUZ5xrRHClWJEiE3ZlGyEdnikOqaIhGJ6OcYZTQfyzfz8680RlweLMTOj2XM6cYNTFwhKHKsqCfxfCqyVGNyZSFceIGrVEnbsW6hEshkcQKXXy1+OxJLHkMf7jWOQxdAYSyoLo7wq+K4mGL6XxxSCJwbgKEMNnCpN/RQ4Dcc4VaYPg6LG7oxY5B8R8DkDy8Ndf0dy5s55srdk+3sM+mHrhM7Wi7z+nClqCkJJRxJwPXxLjRykJkLL1Cg8qMvap14EjcjinDtpLFjjp5k2VcSmuPF4fGfvBW0eRYkjfne99GNm1zM7O0s4d2+ueCxmiO1qKtWyI6MllC7RDfBGJlK6Hc+VCzfcx2w8uY6gQa7CNtJTLDSgO/gpoYvE2rhwwsvAbXDpEaiKlvBHJo4/X/GxUBE3IAaMr2xANVkJVQVyc/UKu3nrO/WJkPghQ5bDypVvtAKSwdGhKDhj9zxcJooiIovzv8XUdYcjUhlQj5pUNEWwmjKVos/JAsNWBoE0JxmKi66HkMm1xThOUUDgTgi65Y5RUXPpF3oy3QM1727IupfLCxScrVZS7+yhhcM49p+U7fju7154Sk9U8JQDhMeksXMjj+XI/mOKpN8U/JWp9Stc52ypfBG5KfyLjMrfFb0q3hhbt8yW5oWokY4s3LL70DDF+iFoNzg/hu/vlQOQPQ7xoWu4ocXqFmviHIULse4tSJ0RwJsJ2YPdzFCGbd4n34/5LagIsskrk1YvF6eAPQYLcBp8rD37upJIdAAAAAElFTkSuQmCC",bM="data:image/png;base64,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",TM="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADsAAAAvCAYAAABdYrI+AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALXSURBVHgB7Zo9bxNBEIbf2XP8QRIwkh1fRBNR0USkpLQlfgD5BUlqkEhNA6koaaBOQkeVUNEgYSpQJARSmtDANojDRuESn1Fi41t2LiSyIxyZ+APf+h7pvN7b8flez8zeWjuEDkhrxsbGZgBrDkOEUpBEDbdcLn/oxJ7aDbDAWDx5lwh5bZTHcCO18GJdYMV1HNnO6K9iM7npZQHc179dGiFDi15rJ7pFLHsznkit6o/cQriRNULhtOAWsdmp3HsiGqq8PC9KKRfKLzTnszh+k81NPzJFKKO1pElYGxytx+cCsdmsvUhQyzCPmXg8sXrcCcJ4Kmd/5gEYiq/z97vjFEUmY+dhsFCGGkcTriCBRZgOYYEboRP5OgyHJyvbtmdi6DKEb89exJ3ZS+gXj7f38GR7H93i+/6cCOMq6TwoJdICIwTpx47CCKB8LI2UZ0dKbAxdEpbZmInC2FSi2dhUotn4X4hm4yElEmsqkVhTicSaykDFfqn+wsN3btD+D7peVHRCpebrxcE+nn6sBH1u56+OBwuSK+MDuYWAvn4Ti2Rh6zseKnW/ZWzjUxVb3w5PRA+CvollMbzMOytkeYyXg2zLgll4P9E5Sy56CHtr4WUJ997udpybbMf2N59/xc6POvqBZUGyZ6U+ut6qDG74zS62Soc4L3yN+RdOX/K50Wi4Mf3P/TV1IbZSUzpc94IJqFdwWPPRw7CWvClNGdvOC4VXMBmFtVLJWRK8b6m9W4TBCIGVoOUXRUcdI9Fedf4Uklj88tPz5IWJycs6d2/ALKT26pLnecET52S5WE8lHujHUEeVYuGAXEEoOE3lQSdiXSndWipR0EabCD9SxUSLUMZq7hy47kG16j1LTUzu6ZC+pk+Fb+9W52itdjC/Wy7L00Ntaxd5W74B5EnRsr7CkJcikKt8f92yaFN7s9jWCh3AhVPJZHLO9yktxFDt1Es+nDOKM5v5DSBkJiWebKINAAAAAElFTkSuQmCC",AM=[{name:"Distributed storage software development senior engineer (full-time, urgent recruitment)",responsibilities:["Participate in the development and maintenance of the open source distributed storage project DatenLord;","Improve the testing of DatenLord and build a new DatenLord testing framework;","Improve the performance of DatenLord distributed performance."],requirements:["At least 5 years of experience in distributed system development or research, preferably in distributed storage system development or research;","Relevant development and usage experience of distributed storage systems such as HDFS , Ceph, GlusterFS;","Familiarity with Rust, C or C++ languages;","Experienced in developing and maintaining open source projects."]},{name:"Rust distributed storage development (internship, soon to be filled)",txt:"Participate in the development of high-performance distributed storage systems, involving development content including but not limited to:",responsibilities:["Distributed storage system development;","Distributed data consistency protocol research and development;","Distributed caching, data management services;","Kernel-driven development using Rust language."],requirements:["Proficiency in Rust language, familiar with multi-threaded, high concurrency programming;","Familiar with Linux operation system storage management related functions;","Strong learning ability, self-driven and team player;","6 months or more internship time, 4~5 days per week."],skills:["Familiarity with Rust asynchronous programming, experienced with tokio or async-std is preferred;","Familiar with distributed consistency protocol Paxos or Raft, distributed KV storage etcd, experienced in programming CSI interface of K8S is preferred;","Previously experienced with open source projects/open source contributions is preferred."]},{name:"FPGA development (internship)",responsibilities:["Responsible for implementing network IO acceleration based on FPGA, as well as the design and RTL implementation of algorithm acceleration for encryption, compression, coding, etc.;","Realize RTL design, integration and verification of commonly used peripheral interface IP;","Cooperate with upper layer software to realize software and hardware joint debugging."],requirements:["Familiar with FPGA-based design flow, familiar with Xilinx FPGA chip architecture, proficient in Xilinx FPGA development tools;","Proficiency in the use of Verilog, SystemVerilog and SystemVerilog Assertion;","Proficiency in TCL, Python scripting language;","Strong learning ability, self-driven and team player;","6 months or more of internship time, 4~5 days per week."],skills:["Familiarity with at least one new generation HDL language such as Bluespec, SpinalHDL, Chisel, Clash, etc;","Familiar with CXL, PCIe, AXI, ACE, CHI and other related bus interface development is preferred;","Familiar with TCP/IP, RDMA, NVMe protocols and experienced in encryption, compression and coding development is preferred."]},{name:"The joint hardware and software research and development internship (internship)",txt:"Participate in the hardware and software development of high performance storage SoC chips:",responsibilities:["Responsible for the RTL implementation of network IO acceleration;","Responsible for the design and RTL implementation of algorithm acceleration for encryption, compression, coding, etc.;","Responsible for Linux driver development of SoC chip;","Responsible for the implementation of hardware and software joint debugging and automated testing."],requirements:["Familiar with IC design flow, familiar with commonly used simulation, synthesis and other EDA tools;","Familiar with Xilinx's FPGA design flow, proficient in Xilinx's FPGA development tools;","Familiar with new generation HDL languages such as Bluespec, SpinalHDL, Chisel or Clash;","Familiarity with Rust for Linux development kernel modules, drivers;","Familiarity with QEMU-based toolchain of hardware and software joint debugging;","Strong learning ability, self-driven and team player."],skills:["Experienced in network or storage hardware system development is preferred;","Familiarity with TCP/IP or InfiniBand/RDMA network protocol stack is preferred;","Familiarity with protocol interface development such as CXL, PCIe, AXI, ACE, CHI, NVMe, etc. Is preferred;","Relevant experience in DSP domain, familiar with LDPC, fountain codes, elliptic curve encryption algorithms and zero-knowledge proof algorithms is preferred;","Experienced in Linux kernel network, file and storage related development is preferred;","Long-term internship (more than 1 year) is preferred."]}],ju=M.div`
- font-weight: 700;
- font-size: 0.4rem;
- line-height: 0.6rem;
- text-align: center;
- color: #42424a;
- margin-inline: 2.5rem;
- padding-bottom: 0.88rem;
- border-bottom: 0.01rem solid #d9dbef;
- margin-bottom: 0.88rem;
-`,ey=M.div`
- font-weight: 400;
- font-size: 0.28rem;
- line-height: 0.5rem;
-`,Jh=M(ey)`
- position: relative;
- padding-left: 0.24rem;
- &::before {
- content: '•';
- position: absolute;
- top: 0;
- left: 0;
- }
-`,qh=M.span`
- font-weight: 600;
-`,PM=M.div`
- font-weight: 600;
- font-size: 0.3rem;
- line-height: 0.41rem;
- margin-bottom: 0.16rem;
-`,em=M.div`
- font-weight: 400;
- font-size: 0.24rem;
- line-height: 0.41rem;
-`,MM=M.div`
- display: flex;
- justify-content: center;
- align-items: center;
- gap: 1.24rem;
-`,DM=M.img`
- width: 4.4rem;
- height: min-content;
-`,_M=M.div`
- display: flex;
- flex-direction: column;
- justify-content: center;
-`,zu=M.div`
- display: flex;
- align-items: center;
-`,Nu=M.img`
- height: 0.6rem;
- margin-right: 0.2rem;
-`,Fu=M.div`
- font-weight: 600;
- font-size: 0.28rem;
- line-height: 0.5rem;
- color: #000000;
-`,OM=({data:e})=>{const{name:t,responsibilities:n}=e;return v.jsxs("div",{style:{border:"0.01rem solid #EAEBF0",padding:"0.35rem",borderRadius:"0.01rem",color:"#42424A",position:"relative"},children:[v.jsx("div",{style:{width:"0.7rem",height:"0.7rem",background:"#D9DBEF",borderRadius:"50%",position:"relative",marginBottom:"0.35rem"},children:v.jsx("img",{src:CM,style:{width:"0.31rem",position:"absolute",top:"0.19rem",left:"0.19rem"}})}),v.jsx(PM,{children:t}),v.jsx(em,{children:"[ Job Responsibilities ]"}),n.map(r=>v.jsx(em,{children:r},r)),v.jsx("div",{style:{position:"absolute",top:"0.35rem",right:"0.4rem",fontWeight:"600",fontSize:"0.2rem",lineHeight:"0.32rem",padding:"0.17rem 0.26rem",border:"0.01rem solid #DAE0E6",borderRadius:"0.08rem"},children:"Job Details"})]})},RM=()=>v.jsxs(ke.Fragment,{children:[v.jsx(io,{children:"Company"}),v.jsxs(Yi,{children:[v.jsx(ju,{children:"Company Intro"}),v.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"0.88rem",marginBottom:"0.88rem"},children:[v.jsx("img",{src:Zh,style:{width:"4.46rem",height:"min-content"}}),v.jsxs(ey,{children:["DatenLord has consistently dedicated itself to building"," ",v.jsx(qh,{children:"the high-performance AI+ Cloud infrastructure platform, actively driving the implementation of AI applications."})," ","Through deep integration of software and hardware, DatenLord delivers high-performance storage and networking. It provides",v.jsx(qh,{children:"elastic , convenient, and cost-effective"})," infrastructure services for AI applications, aiming to meet the diverse demands of AI + Cloud across various industries."]})]}),v.jsxs("div",{style:{display:"flex",alignItems:"center",marginBottom:"1.2rem"},children:[v.jsxs("div",{children:[v.jsx(Jh,{style:{marginBottom:"0.64rem"},children:"DatenLord focuses on core foundational technologies, engaging in various cutting-edge technical domains such as distributed systems, Linux kernel, InfiniBand/RDMA, SoC (System on Chip), hardware acceleration, and more, through deep integration of software and hardware."}),v.jsx(Jh,{children:"The core members of the company mostly hail from top international technology companies like Google, Microsoft, Alibaba, bringing profound expertise in both software and hardware technologies along with rich industry experience."})]}),v.jsx("img",{src:kM,style:{width:"5.11rem"}})]}),v.jsx(ju,{children:"Join Us"}),v.jsx("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gridAutoFlow:"dense",gap:"0.88rem",marginBottom:"1.2rem"},children:AM.map(e=>v.jsx(OM,{data:e},e.name))}),v.jsx(ju,{children:"Follow Us"}),v.jsxs(MM,{children:[v.jsx(DM,{src:Zh}),v.jsxs(_M,{children:[v.jsxs(zu,{style:{marginBottom:"20px"},children:[v.jsx(Nu,{src:EM}),v.jsx(Fu,{children:"https://datenlord.github.io"})]}),v.jsxs(zu,{style:{marginBottom:"20px"},children:[v.jsx(Nu,{src:bM}),v.jsx(Fu,{children:"https://medium.com/@datenlord"})]}),v.jsxs(zu,{children:[v.jsx(Nu,{src:TM}),v.jsx(Fu,{children:"https://substack.com/@datenlord"})]})]})]})]})]}),LM=qx([{path:"",element:v.jsx(kE,{}),children:[{path:"",element:v.jsx(DE,{})},{path:"products",children:[{path:"cloud-service",element:v.jsx(KP,{})},{path:"appliance",element:v.jsx(tM,{})}]},{path:"solution",element:v.jsx(vM,{})},{path:"community",children:[{path:"project",element:v.jsx(SM,{})}]},{path:"company",element:v.jsx(RM,{})}]},{path:"resources",children:[{path:"contribute",element:v.jsx(QE,{})},{path:"tech-talk",element:v.jsx(BP,{})},{path:"blog",element:v.jsx(dP,{})},{path:"blog/:params",element:v.jsx(xP,{})}]}]),IM={color:"lightpink"},jM=tk`
- * {
- box-sizing: border-box;
- }
-
- body {
- margin: 0;
- font-family: Inter, sans-serif;
- line-height: 1.5;
- }
-
- h1, h2, h3, h4, h5, h6 {
- margin-block: 0;
- }
-
- p {
- margin-block: 0;
- }
-
- ol, ul {
- margin-block: 0;
- padding-inline-start: 0px;
- }
-
- a {
- display: block;
- text-decoration: none;
- }
-
- html{
- font-size: 100px;
- scroll-padding-top: 128px;
-
- @media screen and (max-width: 1440px) {
- font-size: 75px;
- }
-
- @media screen and (max-width: 1024px) {
- font-size: 54px;
- }
-
- @media screen and (max-width: 768px) {
- font-size: 40px;
- }
-
- @media screen and (max-width: 425px) {
- font-size: 30px;
- }
- }
-
- .content {
- font-weight: 400;
- font-size: 0.18rem;
- line-height: 0.28rem;
- h1 {
- margin-block: 0.48rem;
- font-weight: 700;
- font-size: 0.36rem;
- line-height: 0.52rem;
- }
- h2 {
- margin-block: 0.48rem;
- font-weight: 700;
- font-size: 0.32rem;
- line-height: 0.44rem;
- }
- h3 {
- margin-block: 0.4rem;
- font-weight: 700;
- font-size: 0.28rem;
- line-height: 0.36rem;
- }
- h4 {
- margin-block: 0.32rem;
- font-weight: 700;
- font-size: 0.24rem;
- line-height: 0.32rem;
- }
- h5 {
- margin-block: 0.32rem;
- font-weight: 700;
- font-size: 0.22rem;
- line-height: 0.28rem;
- }
- h6 {
- margin-block: 0.24rem;
- font-weight: 700;
- font-size: 0.2rem;
- line-height: 0.24rem;
- }
- p {
- margin-block: 0.32rem;
- font-weight: 400;
- font-size: 0.18rem;
- line-height: 0.28rem;
- }
- a {
- display: inline;
- text-decoration: underline;
- color: #0052D9;
- }
- img {
- margin-block: 0.64rem;
- display: block;
- margin-inline: auto;
- max-width: 60%;
- }
- ol, ul {
- margin-block: 0.16rem;
- padding-inline-start: 20px;
- }
- blockquote {
- margin-block: 0.32rem;
- margin-inline: 0;
- padding-left: 10px;
- color: #8c8c8c;
- border-left: 4px solid #8c8c8c
- }
- hr {
- margin-block: 0.48rem;
- }
- pre {
- padding: 12px;
- background: #f0f0f0;
- border-radius: 4px;
- overflow-x: scroll;
- code {
- padding: 0;
- }
- }
- code {
- padding: 4px;
- border-radius: 4px;
- background: #f0f0f0;
- font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
- }
- .hljs-comment,
- .hljs-quote {
- color: #998;
- font-style: italic;
- }
- .hljs-keyword,
- .hljs-selector-tag,
- .hljs-subst {
- color: #333;
- font-weight: 700;
- }
- .hljs-literal,
- .hljs-number,
- .hljs-tag .hljs-attr,
- .hljs-template-variable,
- .hljs-variable {
- color: teal;
- }
- .hljs-doctag,
- .hljs-string {
- color: #d14;
- }
- .hljs-section,
- .hljs-selector-id,
- .hljs-title {
- color: #900;
- font-weight: 700;
- }
- .hljs-subst {
- font-weight: 400;
- }
- .hljs-class .hljs-title,
- .hljs-type {
- color: #458;
- font-weight: 700;
- }
- .hljs-attribute,
- .hljs-name,
- .hljs-tag {
- color: navy;
- font-weight: 400;
- }
- .hljs-link,
- .hljs-regexp {
- color: #009926;
- }
- .hljs-bullet,
- .hljs-symbol {
- color: #990073;
- }
- .hljs-built_in,
- .hljs-builtin-name {
- color: #0086b3;
- }
- .hljs-meta {
- color: #999;
- font-weight: 700;
- }
- .hljs-deletion {
- background: #fdd;
- }
- .hljs-addition {
- background: #dfd;
- }
- .hljs-emphasis {
- font-style: italic;
- }
- .hljs-strong {
- font-weight: 700;
- }
- }
-`;Uu.createRoot(document.getElementById("root")).render(v.jsxs(qS,{theme:IM,children:[v.jsx($x,{router:LM}),v.jsx(jM,{})]}))});export default zM();
diff --git a/assets/index-9738e337.js b/assets/index-9738e337.js
new file mode 100644
index 0000000..f95f9b7
--- /dev/null
+++ b/assets/index-9738e337.js
@@ -0,0 +1,1485 @@
+var qv=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var WM=qv((VM,Jo)=>{function ey(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();function ty(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var v={},ny={get exports(){return v},set exports(e){v=e}},Ya={},R={},ry={get exports(){return R},set exports(e){R=e}},he={};/**
+ * @license React
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var Xs=Symbol.for("react.element"),iy=Symbol.for("react.portal"),sy=Symbol.for("react.fragment"),oy=Symbol.for("react.strict_mode"),ay=Symbol.for("react.profiler"),ly=Symbol.for("react.provider"),uy=Symbol.for("react.context"),dy=Symbol.for("react.forward_ref"),cy=Symbol.for("react.suspense"),fy=Symbol.for("react.memo"),py=Symbol.for("react.lazy"),Lf=Symbol.iterator;function hy(e){return e===null||typeof e!="object"?null:(e=Lf&&e[Lf]||e["@@iterator"],typeof e=="function"?e:null)}var $h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Qh=Object.assign,Xh={};function Ui(e,t,n){this.props=e,this.context=t,this.refs=Xh,this.updater=n||$h}Ui.prototype.isReactComponent={};Ui.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Ui.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Kh(){}Kh.prototype=Ui.prototype;function tc(e,t,n){this.props=e,this.context=t,this.refs=Xh,this.updater=n||$h}var nc=tc.prototype=new Kh;nc.constructor=tc;Qh(nc,Ui.prototype);nc.isPureReactComponent=!0;var If=Array.isArray,Zh=Object.prototype.hasOwnProperty,rc={current:null},Jh={key:!0,ref:!0,__self:!0,__source:!0};function qh(e,t,n){var r,i={},s=null,o=null;if(t!=null)for(r in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(s=""+t.key),t)Zh.call(t,r)&&!Jh.hasOwnProperty(r)&&(i[r]=t[r]);var a=arguments.length-2;if(a===1)i.children=n;else if(1>>1,W=N[xe];if(0>>1;xei(ie,K))Ei(ce,ie)?(N[xe]=ce,N[E]=K,xe=E):(N[xe]=ie,N[$]=K,xe=$);else if(Ei(ce,K))N[xe]=ce,N[E]=K,xe=E;else break e}}return I}function i(N,I){var K=N.sortIndex-I.sortIndex;return K!==0?K:N.id-I.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();e.unstable_now=function(){return o.now()-a}}var l=[],u=[],d=1,f=null,h=3,y=!1,w=!1,g=!1,k=typeof setTimeout=="function"?setTimeout:null,c=typeof clearTimeout=="function"?clearTimeout:null,p=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function m(N){for(var I=n(u);I!==null;){if(I.callback===null)r(u);else if(I.startTime<=N)r(u),I.sortIndex=I.expirationTime,t(l,I);else break;I=n(u)}}function x(N){if(g=!1,m(N),!w)if(n(l)!==null)w=!0,re(S);else{var I=n(u);I!==null&&we(x,I.startTime-N)}}function S(N,I){w=!1,g&&(g=!1,c(T),T=-1),y=!0;var K=h;try{for(m(I),f=n(l);f!==null&&(!(f.expirationTime>I)||N&&!U());){var xe=f.callback;if(typeof xe=="function"){f.callback=null,h=f.priorityLevel;var W=xe(f.expirationTime<=I);I=e.unstable_now(),typeof W=="function"?f.callback=W:f===n(l)&&r(l),m(I)}else r(l);f=n(l)}if(f!==null)var V=!0;else{var $=n(u);$!==null&&we(x,$.startTime-I),V=!1}return V}finally{f=null,h=K,y=!1}}var M=!1,_=null,T=-1,j=5,P=-1;function U(){return!(e.unstable_now()-PN||125xe?(N.sortIndex=K,t(u,N),n(l)===null&&N===n(u)&&(g?(c(T),T=-1):g=!0,we(x,K-xe))):(N.sortIndex=W,t(l,N),w||y||(w=!0,re(S))),N},e.unstable_shouldYield=U,e.unstable_wrapCallback=function(N){var I=h;return function(){var K=h;h=I;try{return N.apply(this,arguments)}finally{h=K}}}})(tm);(function(e){e.exports=tm})(Ty);/**
+ * @license React
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var nm=R,jt=Yu;function F(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Uu=Object.prototype.hasOwnProperty,Ay=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,zf={},Nf={};function Py(e){return Uu.call(Nf,e)?!0:Uu.call(zf,e)?!1:Ay.test(e)?Nf[e]=!0:(zf[e]=!0,!1)}function My(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Dy(e,t,n,r){if(t===null||typeof t>"u"||My(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Ct(e,t,n,r,i,s,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=s,this.removeEmptyString=o}var lt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){lt[e]=new Ct(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];lt[t]=new Ct(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){lt[e]=new Ct(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){lt[e]=new Ct(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){lt[e]=new Ct(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){lt[e]=new Ct(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){lt[e]=new Ct(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){lt[e]=new Ct(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){lt[e]=new Ct(e,5,!1,e.toLowerCase(),null,!1,!1)});var sc=/[\-:]([a-z])/g;function oc(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(sc,oc);lt[t]=new Ct(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(sc,oc);lt[t]=new Ct(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(sc,oc);lt[t]=new Ct(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){lt[e]=new Ct(e,1,!1,e.toLowerCase(),null,!1,!1)});lt.xlinkHref=new Ct("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){lt[e]=new Ct(e,1,!1,e.toLowerCase(),null,!0,!0)});function ac(e,t,n,r){var i=lt.hasOwnProperty(t)?lt[t]:null;(i!==null?i.type!==0:r||!(2a||i[o]!==s[a]){var l=`
+`+i[o].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}while(1<=o&&0<=a);break}}}finally{Wl=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?ls(e):""}function _y(e){switch(e.tag){case 5:return ls(e.type);case 16:return ls("Lazy");case 13:return ls("Suspense");case 19:return ls("SuspenseList");case 0:case 2:case 15:return e=Hl(e.type,!1),e;case 11:return e=Hl(e.type.render,!1),e;case 1:return e=Hl(e.type,!0),e;default:return""}}function Vu(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case si:return"Fragment";case ii:return"Portal";case Bu:return"Profiler";case lc:return"StrictMode";case Wu:return"Suspense";case Hu:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case sm:return(e.displayName||"Context")+".Consumer";case im:return(e._context.displayName||"Context")+".Provider";case uc:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case dc:return t=e.displayName||null,t!==null?t:Vu(e.type)||"Memo";case Jn:t=e._payload,e=e._init;try{return Vu(e(t))}catch{}}return null}function Oy(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Vu(t);case 8:return t===lc?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function yr(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function am(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Ry(e){var t=am(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,s=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(o){r=""+o,s.call(this,o)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function uo(e){e._valueTracker||(e._valueTracker=Ry(e))}function lm(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=am(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function qo(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Gu(e,t){var n=t.checked;return Be({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Yf(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=yr(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function um(e,t){t=t.checked,t!=null&&ac(e,"checked",t,!1)}function $u(e,t){um(e,t);var n=yr(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Qu(e,t.type,n):t.hasOwnProperty("defaultValue")&&Qu(e,t.type,yr(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Uf(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Qu(e,t,n){(t!=="number"||qo(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var us=Array.isArray;function Si(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=co.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function As(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var fs={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Ly=["Webkit","ms","Moz","O"];Object.keys(fs).forEach(function(e){Ly.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),fs[t]=fs[e]})});function pm(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||fs.hasOwnProperty(e)&&fs[e]?(""+t).trim():t+"px"}function hm(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=pm(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var Iy=Be({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Zu(e,t){if(t){if(Iy[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(F(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(F(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(F(61))}if(t.style!=null&&typeof t.style!="object")throw Error(F(62))}}function Ju(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var qu=null;function cc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ed=null,ki=null,Ci=null;function Hf(e){if(e=Js(e)){if(typeof ed!="function")throw Error(F(280));var t=e.stateNode;t&&(t=Va(t),ed(e.stateNode,e.type,t))}}function mm(e){ki?Ci?Ci.push(e):Ci=[e]:ki=e}function gm(){if(ki){var e=ki,t=Ci;if(Ci=ki=null,Hf(e),t)for(e=0;e>>=0,e===0?32:31-(Gy(e)/$y|0)|0}var fo=64,po=4194304;function ds(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ra(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,s=e.pingedLanes,o=n&268435455;if(o!==0){var a=o&~i;a!==0?r=ds(a):(s&=o,s!==0&&(r=ds(s)))}else o=n&~i,o!==0?r=ds(o):s!==0&&(r=ds(s));if(r===0)return 0;if(t!==0&&t!==r&&!(t&i)&&(i=r&-r,s=t&-t,i>=s||i===16&&(s&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Ks(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-sn(t),e[t]=n}function Zy(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=hs),qf=String.fromCharCode(32),ep=!1;function jm(e,t){switch(e){case"keyup":return bw.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function zm(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var oi=!1;function Aw(e,t){switch(e){case"compositionend":return zm(t);case"keypress":return t.which!==32?null:(ep=!0,qf);case"textInput":return e=t.data,e===qf&&ep?null:e;default:return null}}function Pw(e,t){if(oi)return e==="compositionend"||!wc&&jm(e,t)?(e=Lm(),No=gc=nr=null,oi=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=ip(n)}}function Um(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Um(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Bm(){for(var e=window,t=qo();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=qo(e.document)}return t}function xc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function zw(e){var t=Bm(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Um(n.ownerDocument.documentElement,n)){if(r!==null&&xc(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,s=Math.min(r.start,i);r=r.end===void 0?s:Math.min(r.end,i),!e.extend&&s>r&&(i=r,r=s,s=i),i=sp(n,s);var o=sp(n,r);i&&o&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),s>r?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,ai=null,od=null,gs=null,ad=!1;function op(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ad||ai==null||ai!==qo(r)||(r=ai,"selectionStart"in r&&xc(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),gs&&Rs(gs,r)||(gs=r,r=oa(od,"onSelect"),0di||(e.current=pd[di],pd[di]=null,di--)}function De(e,t){di++,pd[di]=e.current,e.current=t}var wr={},mt=kr(wr),At=kr(!1),Nr=wr;function Ri(e,t){var n=e.type.contextTypes;if(!n)return wr;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},s;for(s in n)i[s]=t[s];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function Pt(e){return e=e.childContextTypes,e!=null}function la(){Oe(At),Oe(mt)}function pp(e,t,n){if(mt.current!==wr)throw Error(F(168));De(mt,t),De(At,n)}function Zm(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(F(108,Oy(e)||"Unknown",i));return Be({},n,r)}function ua(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||wr,Nr=mt.current,De(mt,e),De(At,At.current),!0}function hp(e,t,n){var r=e.stateNode;if(!r)throw Error(F(169));n?(e=Zm(e,t,Nr),r.__reactInternalMemoizedMergedChildContext=e,Oe(At),Oe(mt),De(mt,e)):Oe(At),De(At,n)}var Rn=null,Ga=!1,iu=!1;function Jm(e){Rn===null?Rn=[e]:Rn.push(e)}function Xw(e){Ga=!0,Jm(e)}function Cr(){if(!iu&&Rn!==null){iu=!0;var e=0,t=Te;try{var n=Rn;for(Te=1;e>=o,i-=o,Ln=1<<32-sn(t)+i|n<T?(j=_,_=null):j=_.sibling;var P=h(c,_,m[T],x);if(P===null){_===null&&(_=j);break}e&&_&&P.alternate===null&&t(c,_),p=s(P,p,T),M===null?S=P:M.sibling=P,M=P,_=j}if(T===m.length)return n(c,_),ze&&Pr(c,T),S;if(_===null){for(;TT?(j=_,_=null):j=_.sibling;var U=h(c,_,P.value,x);if(U===null){_===null&&(_=j);break}e&&_&&U.alternate===null&&t(c,_),p=s(U,p,T),M===null?S=U:M.sibling=U,M=U,_=j}if(P.done)return n(c,_),ze&&Pr(c,T),S;if(_===null){for(;!P.done;T++,P=m.next())P=f(c,P.value,x),P!==null&&(p=s(P,p,T),M===null?S=P:M.sibling=P,M=P);return ze&&Pr(c,T),S}for(_=r(c,_);!P.done;T++,P=m.next())P=y(_,c,T,P.value,x),P!==null&&(e&&P.alternate!==null&&_.delete(P.key===null?T:P.key),p=s(P,p,T),M===null?S=P:M.sibling=P,M=P);return e&&_.forEach(function(A){return t(c,A)}),ze&&Pr(c,T),S}function k(c,p,m,x){if(typeof m=="object"&&m!==null&&m.type===si&&m.key===null&&(m=m.props.children),typeof m=="object"&&m!==null){switch(m.$$typeof){case lo:e:{for(var S=m.key,M=p;M!==null;){if(M.key===S){if(S=m.type,S===si){if(M.tag===7){n(c,M.sibling),p=i(M,m.props.children),p.return=c,c=p;break e}}else if(M.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===Jn&&Sp(S)===M.type){n(c,M.sibling),p=i(M,m.props),p.ref=es(c,M,m),p.return=c,c=p;break e}n(c,M);break}else t(c,M);M=M.sibling}m.type===si?(p=jr(m.props.children,c.mode,x,m.key),p.return=c,c=p):(x=Go(m.type,m.key,m.props,null,c.mode,x),x.ref=es(c,p,m),x.return=c,c=x)}return o(c);case ii:e:{for(M=m.key;p!==null;){if(p.key===M)if(p.tag===4&&p.stateNode.containerInfo===m.containerInfo&&p.stateNode.implementation===m.implementation){n(c,p.sibling),p=i(p,m.children||[]),p.return=c,c=p;break e}else{n(c,p);break}else t(c,p);p=p.sibling}p=fu(m,c.mode,x),p.return=c,c=p}return o(c);case Jn:return M=m._init,k(c,p,M(m._payload),x)}if(us(m))return w(c,p,m,x);if(Xi(m))return g(c,p,m,x);xo(c,m)}return typeof m=="string"&&m!==""||typeof m=="number"?(m=""+m,p!==null&&p.tag===6?(n(c,p.sibling),p=i(p,m),p.return=c,c=p):(n(c,p),p=cu(m,c.mode,x),p.return=c,c=p),o(c)):n(c,p)}return k}var Ii=og(!0),ag=og(!1),qs={},Sn=kr(qs),zs=kr(qs),Ns=kr(qs);function Or(e){if(e===qs)throw Error(F(174));return e}function Mc(e,t){switch(De(Ns,t),De(zs,e),De(Sn,qs),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Ku(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Ku(t,e)}Oe(Sn),De(Sn,t)}function ji(){Oe(Sn),Oe(zs),Oe(Ns)}function lg(e){Or(Ns.current);var t=Or(Sn.current),n=Ku(t,e.type);t!==n&&(De(zs,e),De(Sn,n))}function Dc(e){zs.current===e&&(Oe(Sn),Oe(zs))}var Ye=kr(0);function ma(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var su=[];function _c(){for(var e=0;en?n:4,e(!0);var r=ou.transition;ou.transition={};try{e(!1),t()}finally{Te=n,ou.transition=r}}function Eg(){return $t().memoizedState}function qw(e,t,n){var r=pr(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},bg(e))Tg(t,n);else if(n=ng(e,t,n,r),n!==null){var i=St();on(n,e,r,i),Ag(n,t,r)}}function e1(e,t,n){var r=pr(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(bg(e))Tg(t,i);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var o=t.lastRenderedState,a=s(o,n);if(i.hasEagerState=!0,i.eagerState=a,an(a,o)){var l=t.interleaved;l===null?(i.next=i,Ac(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch{}finally{}n=ng(e,t,i,r),n!==null&&(i=St(),on(n,e,r,i),Ag(n,t,r))}}function bg(e){var t=e.alternate;return e===Ue||t!==null&&t===Ue}function Tg(e,t){vs=ga=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ag(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,pc(e,n)}}var va={readContext:Gt,useCallback:ct,useContext:ct,useEffect:ct,useImperativeHandle:ct,useInsertionEffect:ct,useLayoutEffect:ct,useMemo:ct,useReducer:ct,useRef:ct,useState:ct,useDebugValue:ct,useDeferredValue:ct,useTransition:ct,useMutableSource:ct,useSyncExternalStore:ct,useId:ct,unstable_isNewReconciler:!1},t1={readContext:Gt,useCallback:function(e,t){return mn().memoizedState=[e,t===void 0?null:t],e},useContext:Gt,useEffect:Cp,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Bo(4194308,4,wg.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Bo(4194308,4,e,t)},useInsertionEffect:function(e,t){return Bo(4,2,e,t)},useMemo:function(e,t){var n=mn();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=mn();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=qw.bind(null,Ue,e),[r.memoizedState,e]},useRef:function(e){var t=mn();return e={current:e},t.memoizedState=e},useState:kp,useDebugValue:jc,useDeferredValue:function(e){return mn().memoizedState=e},useTransition:function(){var e=kp(!1),t=e[0];return e=Jw.bind(null,e[1]),mn().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Ue,i=mn();if(ze){if(n===void 0)throw Error(F(407));n=n()}else{if(n=t(),it===null)throw Error(F(349));Yr&30||cg(r,t,n)}i.memoizedState=n;var s={value:n,getSnapshot:t};return i.queue=s,Cp(pg.bind(null,r,s,e),[e]),r.flags|=2048,Us(9,fg.bind(null,r,s,n,t),void 0,null),n},useId:function(){var e=mn(),t=it.identifierPrefix;if(ze){var n=In,r=Ln;n=(r&~(1<<32-sn(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Fs++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=o.createElement(n,{is:r.is}):(e=o.createElement(n),n==="select"&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,n),e[vn]=t,e[js]=r,jg(e,t,!1,!1),t.stateNode=e;e:{switch(o=Ju(n,r),n){case"dialog":_e("cancel",e),_e("close",e),i=r;break;case"iframe":case"object":case"embed":_e("load",e),i=r;break;case"video":case"audio":for(i=0;iNi&&(t.flags|=128,r=!0,ts(s,!1),t.lanes=4194304)}else{if(!r)if(e=ma(o),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),ts(s,!0),s.tail===null&&s.tailMode==="hidden"&&!o.alternate&&!ze)return ft(t),null}else 2*Qe()-s.renderingStartTime>Ni&&n!==1073741824&&(t.flags|=128,r=!0,ts(s,!1),t.lanes=4194304);s.isBackwards?(o.sibling=t.child,t.child=o):(n=s.last,n!==null?n.sibling=o:t.child=o,s.last=o)}return s.tail!==null?(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=Qe(),t.sibling=null,n=Ye.current,De(Ye,r?n&1|2:n&1),t):(ft(t),null);case 22:case 23:return Bc(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?_t&1073741824&&(ft(t),t.subtreeFlags&6&&(t.flags|=8192)):ft(t),null;case 24:return null;case 25:return null}throw Error(F(156,t.tag))}function u1(e,t){switch(kc(t),t.tag){case 1:return Pt(t.type)&&la(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ji(),Oe(At),Oe(mt),_c(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Dc(t),null;case 13:if(Oe(Ye),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(F(340));Li()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Oe(Ye),null;case 4:return ji(),null;case 10:return Tc(t.type._context),null;case 22:case 23:return Bc(),null;case 24:return null;default:return null}}var ko=!1,pt=!1,d1=typeof WeakSet=="function"?WeakSet:Set,X=null;function hi(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){We(e,t,r)}else n.current=null}function bd(e,t,n){try{n()}catch(r){We(e,t,r)}}var Op=!1;function c1(e,t){if(ld=ia,e=Bm(),xc(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,s=r.focusNode;r=r.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break e}var o=0,a=-1,l=-1,u=0,d=0,f=e,h=null;t:for(;;){for(var y;f!==n||i!==0&&f.nodeType!==3||(a=o+i),f!==s||r!==0&&f.nodeType!==3||(l=o+r),f.nodeType===3&&(o+=f.nodeValue.length),(y=f.firstChild)!==null;)h=f,f=y;for(;;){if(f===e)break t;if(h===n&&++u===i&&(a=o),h===s&&++d===r&&(l=o),(y=f.nextSibling)!==null)break;f=h,h=f.parentNode}f=y}n=a===-1||l===-1?null:{start:a,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(ud={focusedElem:e,selectionRange:n},ia=!1,X=t;X!==null;)if(t=X,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,X=e;else for(;X!==null;){t=X;try{var w=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var g=w.memoizedProps,k=w.memoizedState,c=t.stateNode,p=c.getSnapshotBeforeUpdate(t.elementType===t.type?g:qt(t.type,g),k);c.__reactInternalSnapshotBeforeUpdate=p}break;case 3:var m=t.stateNode.containerInfo;m.nodeType===1?m.textContent="":m.nodeType===9&&m.documentElement&&m.removeChild(m.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(F(163))}}catch(x){We(t,t.return,x)}if(e=t.sibling,e!==null){e.return=t.return,X=e;break}X=t.return}return w=Op,Op=!1,w}function ys(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var s=i.destroy;i.destroy=void 0,s!==void 0&&bd(t,n,s)}i=i.next}while(i!==r)}}function Xa(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Td(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Fg(e){var t=e.alternate;t!==null&&(e.alternate=null,Fg(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[vn],delete t[js],delete t[fd],delete t[$w],delete t[Qw])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Yg(e){return e.tag===5||e.tag===3||e.tag===4}function Rp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Yg(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ad(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=aa));else if(r!==4&&(e=e.child,e!==null))for(Ad(e,t,n),e=e.sibling;e!==null;)Ad(e,t,n),e=e.sibling}function Pd(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Pd(e,t,n),e=e.sibling;e!==null;)Pd(e,t,n),e=e.sibling}var ot=null,en=!1;function Kn(e,t,n){for(n=n.child;n!==null;)Ug(e,t,n),n=n.sibling}function Ug(e,t,n){if(xn&&typeof xn.onCommitFiberUnmount=="function")try{xn.onCommitFiberUnmount(Ua,n)}catch{}switch(n.tag){case 5:pt||hi(n,t);case 6:var r=ot,i=en;ot=null,Kn(e,t,n),ot=r,en=i,ot!==null&&(en?(e=ot,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):ot.removeChild(n.stateNode));break;case 18:ot!==null&&(en?(e=ot,n=n.stateNode,e.nodeType===8?ru(e.parentNode,n):e.nodeType===1&&ru(e,n),_s(e)):ru(ot,n.stateNode));break;case 4:r=ot,i=en,ot=n.stateNode.containerInfo,en=!0,Kn(e,t,n),ot=r,en=i;break;case 0:case 11:case 14:case 15:if(!pt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var s=i,o=s.destroy;s=s.tag,o!==void 0&&(s&2||s&4)&&bd(n,t,o),i=i.next}while(i!==r)}Kn(e,t,n);break;case 1:if(!pt&&(hi(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){We(n,t,a)}Kn(e,t,n);break;case 21:Kn(e,t,n);break;case 22:n.mode&1?(pt=(r=pt)||n.memoizedState!==null,Kn(e,t,n),pt=r):Kn(e,t,n);break;default:Kn(e,t,n)}}function Lp(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new d1),t.forEach(function(r){var i=x1.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function Jt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=o),r&=~s}if(r=i,r=Qe()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*p1(r/1960))-r,10e?16:e,rr===null)var r=!1;else{if(e=rr,rr=null,xa=0,ye&6)throw Error(F(331));var i=ye;for(ye|=4,X=e.current;X!==null;){var s=X,o=s.child;if(X.flags&16){var a=s.deletions;if(a!==null){for(var l=0;lQe()-Yc?Ir(e,0):Fc|=n),Mt(e,t)}function Xg(e,t){t===0&&(e.mode&1?(t=po,po<<=1,!(po&130023424)&&(po=4194304)):t=1);var n=St();e=Bn(e,t),e!==null&&(Ks(e,t,n),Mt(e,n))}function w1(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Xg(e,n)}function x1(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(F(314))}r!==null&&r.delete(t),Xg(e,n)}var Kg;Kg=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||At.current)Tt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Tt=!1,a1(e,t,n);Tt=!!(e.flags&131072)}else Tt=!1,ze&&t.flags&1048576&&qm(t,ca,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Wo(e,t),e=t.pendingProps;var i=Ri(t,mt.current);bi(t,n),i=Rc(null,t,r,e,i,n);var s=Lc();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Pt(r)?(s=!0,ua(t)):s=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,Pc(t),i.updater=$a,t.stateNode=i,i._reactInternals=t,yd(t,r,e,n),t=Sd(null,t,r,!0,s,n)):(t.tag=0,ze&&s&&Sc(t),xt(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Wo(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=k1(r),e=qt(r,e),i){case 0:t=xd(null,t,r,e,n);break e;case 1:t=Mp(null,t,r,e,n);break e;case 11:t=Ap(null,t,r,e,n);break e;case 14:t=Pp(null,t,r,qt(r.type,e),n);break e}throw Error(F(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:qt(r,i),xd(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:qt(r,i),Mp(e,t,r,i,n);case 3:e:{if(Rg(t),e===null)throw Error(F(387));r=t.pendingProps,s=t.memoizedState,i=s.element,rg(e,t),ha(t,r,null,n);var o=t.memoizedState;if(r=o.element,s.isDehydrated)if(s={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&256){i=zi(Error(F(423)),t),t=Dp(e,t,r,n,i);break e}else if(r!==i){i=zi(Error(F(424)),t),t=Dp(e,t,r,n,i);break e}else for(Lt=dr(t.stateNode.containerInfo.firstChild),It=t,ze=!0,tn=null,n=ag(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Li(),r===i){t=Wn(e,t,n);break e}xt(e,t,r,n)}t=t.child}return t;case 5:return lg(t),e===null&&md(t),r=t.type,i=t.pendingProps,s=e!==null?e.memoizedProps:null,o=i.children,dd(r,i)?o=null:s!==null&&dd(r,s)&&(t.flags|=32),Og(e,t),xt(e,t,o,n),t.child;case 6:return e===null&&md(t),null;case 13:return Lg(e,t,n);case 4:return Mc(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Ii(t,null,r,n):xt(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:qt(r,i),Ap(e,t,r,i,n);case 7:return xt(e,t,t.pendingProps,n),t.child;case 8:return xt(e,t,t.pendingProps.children,n),t.child;case 12:return xt(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,s=t.memoizedProps,o=i.value,De(fa,r._currentValue),r._currentValue=o,s!==null)if(an(s.value,o)){if(s.children===i.children&&!At.current){t=Wn(e,t,n);break e}}else for(s=t.child,s!==null&&(s.return=t);s!==null;){var a=s.dependencies;if(a!==null){o=s.child;for(var l=a.firstContext;l!==null;){if(l.context===r){if(s.tag===1){l=Nn(-1,n&-n),l.tag=2;var u=s.updateQueue;if(u!==null){u=u.shared;var d=u.pending;d===null?l.next=l:(l.next=d.next,d.next=l),u.pending=l}}s.lanes|=n,l=s.alternate,l!==null&&(l.lanes|=n),gd(s.return,n,t),a.lanes|=n;break}l=l.next}}else if(s.tag===10)o=s.type===t.type?null:s.child;else if(s.tag===18){if(o=s.return,o===null)throw Error(F(341));o.lanes|=n,a=o.alternate,a!==null&&(a.lanes|=n),gd(o,n,t),o=s.sibling}else o=s.child;if(o!==null)o.return=s;else for(o=s;o!==null;){if(o===t){o=null;break}if(s=o.sibling,s!==null){s.return=o.return,o=s;break}o=o.return}s=o}xt(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,bi(t,n),i=Gt(i),r=r(i),t.flags|=1,xt(e,t,r,n),t.child;case 14:return r=t.type,i=qt(r,t.pendingProps),i=qt(r.type,i),Pp(e,t,r,i,n);case 15:return Dg(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:qt(r,i),Wo(e,t),t.tag=1,Pt(r)?(e=!0,ua(t)):e=!1,bi(t,n),sg(t,r,i),yd(t,r,i,n),Sd(null,t,r,!0,e,n);case 19:return Ig(e,t,n);case 22:return _g(e,t,n)}throw Error(F(156,t.tag))};function Zg(e,t){return Cm(e,t)}function S1(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ht(e,t,n,r){return new S1(e,t,n,r)}function Hc(e){return e=e.prototype,!(!e||!e.isReactComponent)}function k1(e){if(typeof e=="function")return Hc(e)?1:0;if(e!=null){if(e=e.$$typeof,e===uc)return 11;if(e===dc)return 14}return 2}function hr(e,t){var n=e.alternate;return n===null?(n=Ht(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Go(e,t,n,r,i,s){var o=2;if(r=e,typeof e=="function")Hc(e)&&(o=1);else if(typeof e=="string")o=5;else e:switch(e){case si:return jr(n.children,i,s,t);case lc:o=8,i|=8;break;case Bu:return e=Ht(12,n,t,i|2),e.elementType=Bu,e.lanes=s,e;case Wu:return e=Ht(13,n,t,i),e.elementType=Wu,e.lanes=s,e;case Hu:return e=Ht(19,n,t,i),e.elementType=Hu,e.lanes=s,e;case om:return Za(n,i,s,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case im:o=10;break e;case sm:o=9;break e;case uc:o=11;break e;case dc:o=14;break e;case Jn:o=16,r=null;break e}throw Error(F(130,e==null?e:typeof e,""))}return t=Ht(o,n,t,i),t.elementType=e,t.type=r,t.lanes=s,t}function jr(e,t,n,r){return e=Ht(7,e,r,t),e.lanes=n,e}function Za(e,t,n,r){return e=Ht(22,e,r,t),e.elementType=om,e.lanes=n,e.stateNode={isHidden:!1},e}function cu(e,t,n){return e=Ht(6,e,null,t),e.lanes=n,e}function fu(e,t,n){return t=Ht(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function C1(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Gl(0),this.expirationTimes=Gl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Gl(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Vc(e,t,n,r,i,s,o,a,l){return e=new C1(e,t,n,a,l),t===1?(t=1,s===!0&&(t|=8)):t=0,s=Ht(3,null,null,t),e.current=s,s.stateNode=e,s.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Pc(s),e}function E1(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(n){console.error(n)}}t(),e.exports=zt})(by);var Bp=Fu;Nu.createRoot=Bp.createRoot,Nu.hydrateRoot=Bp.hydrateRoot;/**
+ * @remix-run/router v1.4.0
+ *
+ * Copyright (c) Remix Software Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE.md file in the root directory of this source tree.
+ *
+ * @license MIT
+ */function ge(){return ge=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function Wr(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function D1(){return Math.random().toString(36).substr(2,8)}function Hp(e,t){return{usr:e.state,key:e.key,idx:t}}function Ws(e,t,n,r){return n===void 0&&(n=null),ge({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Cn(t):t,{state:n,key:t&&t.key||r||D1()})}function Hr(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function Cn(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function _1(e,t,n,r){r===void 0&&(r={});let{window:i=document.defaultView,v5Compat:s=!1}=r,o=i.history,a=Ge.Pop,l=null,u=d();u==null&&(u=0,o.replaceState(ge({},o.state,{idx:u}),""));function d(){return(o.state||{idx:null}).idx}function f(){a=Ge.Pop;let k=d(),c=k==null?null:k-u;u=k,l&&l({action:a,location:g.location,delta:c})}function h(k,c){a=Ge.Push;let p=Ws(g.location,k,c);n&&n(p,k),u=d()+1;let m=Hp(p,u),x=g.createHref(p);try{o.pushState(m,"",x)}catch{i.location.assign(x)}s&&l&&l({action:a,location:g.location,delta:1})}function y(k,c){a=Ge.Replace;let p=Ws(g.location,k,c);n&&n(p,k),u=d();let m=Hp(p,u),x=g.createHref(p);o.replaceState(m,"",x),s&&l&&l({action:a,location:g.location,delta:0})}function w(k){let c=i.location.origin!=="null"?i.location.origin:i.location.href,p=typeof k=="string"?k:Hr(k);return ue(c,"No window.location.(origin|href) available to create URL for href: "+p),new URL(p,c)}let g={get action(){return a},get location(){return e(i,o)},listen(k){if(l)throw new Error("A history only accepts one active listener");return i.addEventListener(Wp,f),l=k,()=>{i.removeEventListener(Wp,f),l=null}},createHref(k){return t(i,k)},createURL:w,encodeLocation(k){let c=w(k);return{pathname:c.pathname,search:c.search,hash:c.hash}},push:h,replace:y,go(k){return o.go(k)}};return g}var Je;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Je||(Je={}));const O1=new Set(["lazy","caseSensitive","path","id","index","children"]);function R1(e){return e.index===!0}function t0(e,t,n,r){return n===void 0&&(n=[]),r===void 0&&(r={}),e.map((i,s)=>{let o=[...n,s],a=typeof i.id=="string"?i.id:o.join("-");if(ue(i.index!==!0||!i.children,"Cannot specify children on an index route"),ue(!r[a],'Found a route id collision on id "'+a+`". Route id's must be globally unique within Data Router usages`),R1(i)){let l=ge({},i,{hasErrorBoundary:t(i),id:a});return r[a]=l,l}else{let l=ge({},i,{id:a,hasErrorBoundary:t(i),children:void 0});return r[a]=l,i.children&&(l.children=t0(i.children,t,o,r)),l}})}function gi(e,t,n){n===void 0&&(n="/");let r=typeof t=="string"?Cn(t):t,i=nl(r.pathname||"/",n);if(i==null)return null;let s=n0(e);L1(s);let o=null;for(let a=0;o==null&&a{let l={relativePath:a===void 0?s.path||"":a,caseSensitive:s.caseSensitive===!0,childrenIndex:o,route:s};l.relativePath.startsWith("/")&&(ue(l.relativePath.startsWith(r),'Absolute route path "'+l.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),l.relativePath=l.relativePath.slice(r.length));let u=mr([r,l.relativePath]),d=n.concat(l);s.children&&s.children.length>0&&(ue(s.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+u+'".')),n0(s.children,t,d,u)),!(s.path==null&&!s.index)&&t.push({path:u,score:U1(u,s.index),routesMeta:d})};return e.forEach((s,o)=>{var a;if(s.path===""||!((a=s.path)!=null&&a.includes("?")))i(s,o);else for(let l of r0(s.path))i(s,o,l)}),t}function r0(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,i=n.endsWith("?"),s=n.replace(/\?$/,"");if(r.length===0)return i?[s,""]:[s];let o=r0(r.join("/")),a=[];return a.push(...o.map(l=>l===""?s:[s,l].join("/"))),i&&a.push(...o),a.map(l=>e.startsWith("/")&&l===""?"/":l)}function L1(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:B1(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const I1=/^:\w+$/,j1=3,z1=2,N1=1,F1=10,Y1=-2,Vp=e=>e==="*";function U1(e,t){let n=e.split("/"),r=n.length;return n.some(Vp)&&(r+=Y1),t&&(r+=z1),n.filter(i=>!Vp(i)).reduce((i,s)=>i+(I1.test(s)?j1:s===""?N1:F1),r)}function B1(e,t){return e.length===t.length&&e.slice(0,-1).every((r,i)=>r===t[i])?e[e.length-1]-t[t.length-1]:0}function W1(e,t){let{routesMeta:n}=e,r={},i="/",s=[];for(let o=0;o{if(d==="*"){let h=a[f]||"";o=s.slice(0,s.length-h.length).replace(/(.)\/+$/,"$1")}return u[d]=$1(a[f]||"",d),u},{}),pathname:s,pathnameBase:o,pattern:e}}function V1(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),Wr(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/\/:(\w+)/g,(o,a)=>(r.push(a),"/([^\\/]+)"));return e.endsWith("*")?(r.push("*"),i+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":e!==""&&e!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,t?void 0:"i"),r]}function G1(e){try{return decodeURI(e)}catch(t){return Wr(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function $1(e,t){try{return decodeURIComponent(e)}catch(n){return Wr(!1,'The value for the URL param "'+t+'" will not be decoded because'+(' the string "'+e+'" is a malformed URL segment. This is probably')+(" due to a bad percent encoding ("+n+").")),e}}function nl(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function Q1(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:i=""}=typeof e=="string"?Cn(e):e;return{pathname:n?n.startsWith("/")?n:X1(n,t):t,search:Z1(r),hash:J1(i)}}function X1(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(i=>{i===".."?n.length>1&&n.pop():i!=="."&&n.push(i)}),n.length>1?n.join("/"):"/"}function pu(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function Xc(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function i0(e,t,n,r){r===void 0&&(r=!1);let i;typeof e=="string"?i=Cn(e):(i=ge({},e),ue(!i.pathname||!i.pathname.includes("?"),pu("?","pathname","search",i)),ue(!i.pathname||!i.pathname.includes("#"),pu("#","pathname","hash",i)),ue(!i.search||!i.search.includes("#"),pu("#","search","hash",i)));let s=e===""||i.pathname==="",o=s?"/":i.pathname,a;if(r||o==null)a=n;else{let f=t.length-1;if(o.startsWith("..")){let h=o.split("/");for(;h[0]==="..";)h.shift(),f-=1;i.pathname=h.join("/")}a=f>=0?t[f]:"/"}let l=Q1(i,a),u=o&&o!=="/"&&o.endsWith("/"),d=(s||o===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(u||d)&&(l.pathname+="/"),l}const mr=e=>e.join("/").replace(/\/\/+/g,"/"),K1=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),Z1=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,J1=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class Gp extends Error{}class q1{constructor(t,n){this.pendingKeysSet=new Set,this.subscribers=new Set,this.deferredKeys=[],ue(t&&typeof t=="object"&&!Array.isArray(t),"defer() only accepts plain objects");let r;this.abortPromise=new Promise((s,o)=>r=o),this.controller=new AbortController;let i=()=>r(new Gp("Deferred data aborted"));this.unlistenAbortSignal=()=>this.controller.signal.removeEventListener("abort",i),this.controller.signal.addEventListener("abort",i),this.data=Object.entries(t).reduce((s,o)=>{let[a,l]=o;return Object.assign(s,{[a]:this.trackPromise(a,l)})},{}),this.done&&this.unlistenAbortSignal(),this.init=n}trackPromise(t,n){if(!(n instanceof Promise))return n;this.deferredKeys.push(t),this.pendingKeysSet.add(t);let r=Promise.race([n,this.abortPromise]).then(i=>this.onSettle(r,t,null,i),i=>this.onSettle(r,t,i));return r.catch(()=>{}),Object.defineProperty(r,"_tracked",{get:()=>!0}),r}onSettle(t,n,r,i){return this.controller.signal.aborted&&r instanceof Gp?(this.unlistenAbortSignal(),Object.defineProperty(t,"_error",{get:()=>r}),Promise.reject(r)):(this.pendingKeysSet.delete(n),this.done&&this.unlistenAbortSignal(),r?(Object.defineProperty(t,"_error",{get:()=>r}),this.emit(!1,n),Promise.reject(r)):(Object.defineProperty(t,"_data",{get:()=>i}),this.emit(!1,n),i))}emit(t,n){this.subscribers.forEach(r=>r(t,n))}subscribe(t){return this.subscribers.add(t),()=>this.subscribers.delete(t)}cancel(){this.controller.abort(),this.pendingKeysSet.forEach((t,n)=>this.pendingKeysSet.delete(n)),this.emit(!0)}async resolveData(t){let n=!1;if(!this.done){let r=()=>this.cancel();t.addEventListener("abort",r),n=await new Promise(i=>{this.subscribe(s=>{t.removeEventListener("abort",r),(s||this.done)&&i(s)})})}return n}get done(){return this.pendingKeysSet.size===0}get unwrappedData(){return ue(this.data!==null&&this.done,"Can only unwrap data on initialized and settled deferreds"),Object.entries(this.data).reduce((t,n)=>{let[r,i]=n;return Object.assign(t,{[r]:tx(i)})},{})}get pendingKeys(){return Array.from(this.pendingKeysSet)}}function ex(e){return e instanceof Promise&&e._tracked===!0}function tx(e){if(!ex(e))return e;if(e._error)throw e._error;return e._data}class Kc{constructor(t,n,r,i){i===void 0&&(i=!1),this.status=t,this.statusText=n||"",this.internal=i,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function s0(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const o0=["post","put","patch","delete"],nx=new Set(o0),rx=["get",...o0],ix=new Set(rx),sx=new Set([301,302,303,307,308]),ox=new Set([307,308]),hu={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},ax={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},$p={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},a0=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,l0=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",lx=!l0,ux=e=>!!e.hasErrorBoundary;function dx(e){ue(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let t=e.detectErrorBoundary||ux,n={},r=t0(e.routes,t,void 0,n),i,s=null,o=new Set,a=null,l=null,u=null,d=e.hydrationData!=null,f=gi(r,e.history.location,e.basename),h=null;if(f==null){let b=gn(404,{pathname:e.history.location.pathname}),{matches:O,route:z}=qp(r);f=O,h={[z.id]:b}}let y=!f.some(b=>b.route.lazy)&&(!f.some(b=>b.route.loader)||e.hydrationData!=null),w,g={historyAction:e.history.action,location:e.history.location,matches:f,initialized:y,navigation:hu,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||h,fetchers:new Map,blockers:new Map},k=Ge.Pop,c=!1,p,m=!1,x=!1,S=[],M=[],_=new Map,T=0,j=-1,P=new Map,U=new Set,A=new Map,D=new Map,L=new Map,B=!1;function re(){if(s=e.history.listen(z=>{let{action:Z,location:J,delta:ne}=z;if(B){B=!1;return}Wr(L.size===0||ne!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let te=Xn({currentLocation:g.location,nextLocation:J,historyAction:Z});if(te&&ne!=null){B=!0,e.history.go(ne*-1),Tn(te,{state:"blocked",location:J,proceed(){Tn(te,{state:"proceeding",proceed:void 0,reset:void 0,location:J}),e.history.go(ne)},reset(){Ne(te),I({blockers:new Map(w.state.blockers)})}});return}return V(Z,J)}),g.initialized)return w;let b=g.matches.filter(z=>z.route.lazy);if(b.length===0)return V(Ge.Pop,g.location),w;let O=b.map(z=>Rd(z.route,t,n));return Promise.all(O).then(()=>{!g.matches.some(Z=>Z.route.loader)||e.hydrationData!=null?I({initialized:!0}):V(Ge.Pop,g.location)}),w}function we(){s&&s(),o.clear(),p&&p.abort(),g.fetchers.forEach((b,O)=>nt(O)),g.blockers.forEach((b,O)=>Ne(O))}function N(b){return o.add(b),()=>o.delete(b)}function I(b){g=ge({},g,b),o.forEach(O=>O(g))}function K(b,O){var z,Z;let J=g.actionData!=null&&g.navigation.formMethod!=null&&_n(g.navigation.formMethod)&&g.navigation.state==="loading"&&((z=b.state)==null?void 0:z._isRedirect)!==!0,ne;O.actionData?Object.keys(O.actionData).length>0?ne=O.actionData:ne=null:J?ne=g.actionData:ne=null;let te=O.loaderData?Jp(g.loaderData,O.loaderData,O.matches||[],O.errors):g.loaderData;for(let[q]of L)Ne(q);let le=c===!0||g.navigation.formMethod!=null&&_n(g.navigation.formMethod)&&((Z=b.state)==null?void 0:Z._isRedirect)!==!0;i&&(r=i,i=void 0),I(ge({},O,{actionData:ne,loaderData:te,historyAction:k,location:b,initialized:!0,navigation:hu,revalidation:"idle",restoreScrollPosition:Jr(b,O.matches||g.matches),preventScrollReset:le,blockers:new Map(g.blockers)})),m||k===Ge.Pop||(k===Ge.Push?e.history.push(b,b.state):k===Ge.Replace&&e.history.replace(b,b.state)),k=Ge.Pop,c=!1,m=!1,x=!1,S=[],M=[]}async function xe(b,O){if(typeof b=="number"){e.history.go(b);return}let{path:z,submission:Z,error:J}=Qp(b,O),ne=g.location,te=Ws(g.location,z,O&&O.state);te=ge({},te,e.history.encodeLocation(te));let le=O&&O.replace!=null?O.replace:void 0,q=Ge.Push;le===!0?q=Ge.Replace:le===!1||Z!=null&&_n(Z.formMethod)&&Z.formAction===g.location.pathname+g.location.search&&(q=Ge.Replace);let ut=O&&"preventScrollReset"in O?O.preventScrollReset===!0:void 0,be=Xn({currentLocation:ne,nextLocation:te,historyAction:q});if(be){Tn(be,{state:"blocked",location:te,proceed(){Tn(be,{state:"proceeding",proceed:void 0,reset:void 0,location:te}),xe(b,O)},reset(){Ne(be),I({blockers:new Map(g.blockers)})}});return}return await V(q,te,{submission:Z,pendingError:J,preventScrollReset:ut,replace:O&&O.replace})}function W(){if(oe(),I({revalidation:"loading"}),g.navigation.state!=="submitting"){if(g.navigation.state==="idle"){V(g.historyAction,g.location,{startUninterruptedRevalidation:!0});return}V(k||g.historyAction,g.navigation.location,{overrideNavigation:g.navigation})}}async function V(b,O,z){p&&p.abort(),p=null,k=b,m=(z&&z.startUninterruptedRevalidation)===!0,Fe(g.location,g.matches),c=(z&&z.preventScrollReset)===!0;let Z=i||r,J=z&&z.overrideNavigation,ne=gi(Z,O,e.basename);if(!ne){let Ve=gn(404,{pathname:O.pathname}),{matches:cn,route:Zt}=qp(Z);yt(),K(O,{matches:cn,loaderData:{},errors:{[Zt.id]:Ve}});return}if(mx(g.location,O)&&!(z&&z.submission&&_n(z.submission.formMethod))){K(O,{matches:ne});return}p=new AbortController;let te=is(e.history,O,p.signal,z&&z.submission),le,q;if(z&&z.pendingError)q={[vi(ne).route.id]:z.pendingError};else if(z&&z.submission&&_n(z.submission.formMethod)){let Ve=await $(te,O,z.submission,ne,{replace:z.replace});if(Ve.shortCircuited)return;le=Ve.pendingActionData,q=Ve.pendingActionError,J=ge({state:"loading",location:O},z.submission),te=new Request(te.url,{signal:te.signal})}let{shortCircuited:ut,loaderData:be,errors:wt}=await ie(te,O,ne,J,z&&z.submission,z&&z.replace,le,q);ut||(p=null,K(O,ge({matches:ne},le?{actionData:le}:{},{loaderData:be,errors:wt})))}async function $(b,O,z,Z,J){oe();let ne=ge({state:"submitting",location:O},z);I({navigation:ne});let te,le=Ld(Z,O);if(!le.route.action&&!le.route.lazy)te={type:Je.error,error:gn(405,{method:b.method,pathname:O.pathname,routeId:le.route.id})};else if(te=await rs("action",b,le,Z,n,t,w.basename),b.signal.aborted)return{shortCircuited:!0};if(Ai(te)){let q;return J&&J.replace!=null?q=J.replace:q=te.location===g.location.pathname+g.location.search,await pe(g,te,{submission:z,replace:q}),{shortCircuited:!0}}if(Ss(te)){let q=vi(Z,le.route.id);return(J&&J.replace)!==!0&&(k=Ge.Push),{pendingActionData:{},pendingActionError:{[q.route.id]:te.error}}}if(Rr(te))throw gn(400,{type:"defer-action"});return{pendingActionData:{[le.route.id]:te.data}}}async function ie(b,O,z,Z,J,ne,te,le){let q=Z;q||(q=ge({state:"loading",location:O,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},J));let ut=J||(q.formMethod&&q.formAction&&q.formData&&q.formEncType?{formMethod:q.formMethod,formAction:q.formAction,formData:q.formData,formEncType:q.formEncType}:void 0),be=i||r,[wt,Ve]=Xp(e.history,g,z,ut,O,x,S,M,A,be,e.basename,te,le);if(yt(dt=>!(z&&z.some(fn=>fn.route.id===dt))||wt&&wt.some(fn=>fn.route.id===dt)),wt.length===0&&Ve.length===0)return K(O,ge({matches:z,loaderData:{},errors:le||null},te?{actionData:te}:{})),{shortCircuited:!0};if(!m){Ve.forEach(fn=>{let Tr=g.fetchers.get(fn.key),oo={state:"loading",data:Tr&&Tr.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};g.fetchers.set(fn.key,oo)});let dt=te||g.actionData;I(ge({navigation:q},dt?Object.keys(dt).length===0?{actionData:null}:{actionData:dt}:{},Ve.length>0?{fetchers:new Map(g.fetchers)}:{}))}j=++T,Ve.forEach(dt=>_.set(dt.key,p));let{results:cn,loaderResults:Zt,fetcherResults:Qi}=await Se(g.matches,z,wt,Ve,b);if(b.signal.aborted)return{shortCircuited:!0};Ve.forEach(dt=>_.delete(dt.key));let io=eh(cn);if(io)return await pe(g,io,{replace:ne}),{shortCircuited:!0};let{loaderData:so,errors:qr}=Zp(g,z,wt,Zt,le,Ve,Qi,D);D.forEach((dt,fn)=>{dt.subscribe(Tr=>{(Tr||dt.done)&&D.delete(fn)})}),ke();let Nl=Xe(j);return ge({loaderData:so,errors:qr},Nl||Ve.length>0?{fetchers:new Map(g.fetchers)}:{})}function E(b){return g.fetchers.get(b)||ax}function ce(b,O,z,Z){if(lx)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");_.has(b)&&fe(b);let ne=gi(i||r,z,e.basename);if(!ne){He(b,O,gn(404,{pathname:z}));return}let{path:te,submission:le}=Qp(z,Z,!0),q=Ld(ne,te);if(c=(Z&&Z.preventScrollReset)===!0,le&&_n(le.formMethod)){H(b,O,te,q,ne,le);return}A.set(b,{routeId:O,path:te}),Ie(b,O,te,q,ne,le)}async function H(b,O,z,Z,J,ne){if(oe(),A.delete(b),!Z.route.action&&!Z.route.lazy){let An=gn(405,{method:ne.formMethod,pathname:z,routeId:O});He(b,O,An);return}let te=g.fetchers.get(b),le=ge({state:"submitting"},ne,{data:te&&te.data," _hasFetcherDoneAnything ":!0});g.fetchers.set(b,le),I({fetchers:new Map(g.fetchers)});let q=new AbortController,ut=is(e.history,z,q.signal,ne);_.set(b,q);let be=await rs("action",ut,Z,J,n,t,w.basename);if(ut.signal.aborted){_.get(b)===q&&_.delete(b);return}if(Ai(be)){_.delete(b),U.add(b);let An=ge({state:"loading"},ne,{data:void 0," _hasFetcherDoneAnything ":!0});return g.fetchers.set(b,An),I({fetchers:new Map(g.fetchers)}),pe(g,be,{isFetchActionRedirect:!0})}if(Ss(be)){He(b,O,be.error);return}if(Rr(be))throw gn(400,{type:"defer-action"});let wt=g.navigation.location||g.location,Ve=is(e.history,wt,q.signal),cn=i||r,Zt=g.navigation.state!=="idle"?gi(cn,g.navigation.location,e.basename):g.matches;ue(Zt,"Didn't find any matches after fetcher action");let Qi=++T;P.set(b,Qi);let io=ge({state:"loading",data:be.data},ne,{" _hasFetcherDoneAnything ":!0});g.fetchers.set(b,io);let[so,qr]=Xp(e.history,g,Zt,ne,wt,x,S,M,A,cn,e.basename,{[Z.route.id]:be.data},void 0);qr.filter(An=>An.key!==b).forEach(An=>{let Yl=An.key,Rf=g.fetchers.get(Yl),Jv={state:"loading",data:Rf&&Rf.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};g.fetchers.set(Yl,Jv),_.set(Yl,q)}),I({fetchers:new Map(g.fetchers)});let{results:Nl,loaderResults:dt,fetcherResults:fn}=await Se(g.matches,Zt,so,qr,Ve);if(q.signal.aborted)return;P.delete(b),_.delete(b),qr.forEach(An=>_.delete(An.key));let Tr=eh(Nl);if(Tr)return pe(g,Tr);let{loaderData:oo,errors:Fl}=Zp(g,g.matches,so,dt,void 0,qr,fn,D),Kv={state:"idle",data:be.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};g.fetchers.set(b,Kv);let Zv=Xe(Qi);g.navigation.state==="loading"&&Qi>j?(ue(k,"Expected pending action"),p&&p.abort(),K(g.navigation.location,{matches:Zt,loaderData:oo,errors:Fl,fetchers:new Map(g.fetchers)})):(I(ge({errors:Fl,loaderData:Jp(g.loaderData,oo,Zt,Fl)},Zv?{fetchers:new Map(g.fetchers)}:{})),x=!1)}async function Ie(b,O,z,Z,J,ne){let te=g.fetchers.get(b),le=ge({state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},ne,{data:te&&te.data," _hasFetcherDoneAnything ":!0});g.fetchers.set(b,le),I({fetchers:new Map(g.fetchers)});let q=new AbortController,ut=is(e.history,z,q.signal);_.set(b,q);let be=await rs("loader",ut,Z,J,n,t,w.basename);if(Rr(be)&&(be=await f0(be,ut.signal,!0)||be),_.get(b)===q&&_.delete(b),ut.signal.aborted)return;if(Ai(be)){await pe(g,be);return}if(Ss(be)){let Ve=vi(g.matches,O);g.fetchers.delete(b),I({fetchers:new Map(g.fetchers),errors:{[Ve.route.id]:be.error}});return}ue(!Rr(be),"Unhandled fetcher deferred data");let wt={state:"idle",data:be.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};g.fetchers.set(b,wt),I({fetchers:new Map(g.fetchers)})}async function pe(b,O,z){var Z;let{submission:J,replace:ne,isFetchActionRedirect:te}=z===void 0?{}:z;O.revalidate&&(x=!0);let le=Ws(b.location,O.location,ge({_isRedirect:!0},te?{_isFetchActionRedirect:!0}:{}));if(ue(le,"Expected a location on the redirect navigation"),a0.test(O.location)&&l0&&typeof((Z=window)==null?void 0:Z.location)<"u"){let cn=e.history.createURL(O.location),Zt=nl(cn.pathname,e.basename||"/")==null;if(window.location.origin!==cn.origin||Zt){ne?window.location.replace(O.location):window.location.assign(O.location);return}}p=null;let q=ne===!0?Ge.Replace:Ge.Push,{formMethod:ut,formAction:be,formEncType:wt,formData:Ve}=b.navigation;!J&&ut&&be&&Ve&&wt&&(J={formMethod:ut,formAction:be,formEncType:wt,formData:Ve}),ox.has(O.status)&&J&&_n(J.formMethod)?await V(q,le,{submission:ge({},J,{formAction:O.location}),preventScrollReset:c}):await V(q,le,{overrideNavigation:{state:"loading",location:le,formMethod:J?J.formMethod:void 0,formAction:J?J.formAction:void 0,formEncType:J?J.formEncType:void 0,formData:J?J.formData:void 0},preventScrollReset:c})}async function Se(b,O,z,Z,J){let ne=await Promise.all([...z.map(q=>rs("loader",J,q,O,n,t,w.basename)),...Z.map(q=>q.matches&&q.match?rs("loader",is(e.history,q.path,J.signal),q.match,q.matches,n,t,w.basename):{type:Je.error,error:gn(404,{pathname:q.path})})]),te=ne.slice(0,z.length),le=ne.slice(z.length);return await Promise.all([th(b,z,te,J.signal,!1,g.loaderData),th(b,Z.map(q=>q.match),le,J.signal,!0)]),{results:ne,loaderResults:te,fetcherResults:le}}function oe(){x=!0,S.push(...yt()),A.forEach((b,O)=>{_.has(O)&&(M.push(O),fe(O))})}function He(b,O,z){let Z=vi(g.matches,O);nt(b),I({errors:{[Z.route.id]:z},fetchers:new Map(g.fetchers)})}function nt(b){_.has(b)&&fe(b),A.delete(b),P.delete(b),U.delete(b),g.fetchers.delete(b)}function fe(b){let O=_.get(b);ue(O,"Expected fetch controller: "+b),O.abort(),_.delete(b)}function Ze(b){for(let O of b){let Z={state:"idle",data:E(O).data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};g.fetchers.set(O,Z)}}function ke(){let b=[];for(let O of U){let z=g.fetchers.get(O);ue(z,"Expected fetcher: "+O),z.state==="loading"&&(U.delete(O),b.push(O))}Ze(b)}function Xe(b){let O=[];for(let[z,Z]of P)if(Z0}function br(b,O){let z=g.blockers.get(b)||$p;return L.get(b)!==O&&L.set(b,O),z}function Ne(b){g.blockers.delete(b),L.delete(b)}function Tn(b,O){let z=g.blockers.get(b)||$p;ue(z.state==="unblocked"&&O.state==="blocked"||z.state==="blocked"&&O.state==="blocked"||z.state==="blocked"&&O.state==="proceeding"||z.state==="blocked"&&O.state==="unblocked"||z.state==="proceeding"&&O.state==="unblocked","Invalid blocker state transition: "+z.state+" -> "+O.state),g.blockers.set(b,O),I({blockers:new Map(g.blockers)})}function Xn(b){let{currentLocation:O,nextLocation:z,historyAction:Z}=b;if(L.size===0)return;L.size>1&&Wr(!1,"A router only supports one blocker at a time");let J=Array.from(L.entries()),[ne,te]=J[J.length-1],le=g.blockers.get(ne);if(!(le&&le.state==="proceeding")&&te({currentLocation:O,nextLocation:z,historyAction:Z}))return ne}function yt(b){let O=[];return D.forEach((z,Z)=>{(!b||b(Z))&&(z.cancel(),O.push(Z),D.delete(Z))}),O}function se(b,O,z){if(a=b,u=O,l=z||(Z=>Z.key),!d&&g.navigation===hu){d=!0;let Z=Jr(g.location,g.matches);Z!=null&&I({restoreScrollPosition:Z})}return()=>{a=null,u=null,l=null}}function Fe(b,O){if(a&&l&&u){let z=O.map(J=>nh(J,g.loaderData)),Z=l(b,z)||b.key;a[Z]=u()}}function Jr(b,O){if(a&&l&&u){let z=O.map(ne=>nh(ne,g.loaderData)),Z=l(b,z)||b.key,J=a[Z];if(typeof J=="number")return J}return null}function $i(b){i=b}return w={get basename(){return e.basename},get state(){return g},get routes(){return r},initialize:re,subscribe:N,enableScrollRestoration:se,navigate:xe,fetch:ce,revalidate:W,createHref:b=>e.history.createHref(b),encodeLocation:b=>e.history.encodeLocation(b),getFetcher:E,deleteFetcher:nt,dispose:we,getBlocker:br,deleteBlocker:Ne,_internalFetchControllers:_,_internalActiveDeferreds:D,_internalSetRoutes:$i},w}function cx(e){return e!=null&&"formData"in e}function Qp(e,t,n){n===void 0&&(n=!1);let r=typeof e=="string"?e:Hr(e);if(!t||!cx(t))return{path:r};if(t.formMethod&&!vx(t.formMethod))return{path:r,error:gn(405,{method:t.formMethod})};let i;if(t.formData&&(i={formMethod:t.formMethod||"get",formAction:c0(r),formEncType:t&&t.formEncType||"application/x-www-form-urlencoded",formData:t.formData},_n(i.formMethod)))return{path:r,submission:i};let s=Cn(r),o=d0(t.formData);return n&&s.search&&p0(s.search)&&o.append("index",""),s.search="?"+o,{path:Hr(s),submission:i}}function fx(e,t){let n=e;if(t){let r=e.findIndex(i=>i.route.id===t);r>=0&&(n=e.slice(0,r))}return n}function Xp(e,t,n,r,i,s,o,a,l,u,d,f,h){let y=h?Object.values(h)[0]:f?Object.values(f)[0]:void 0,w=e.createURL(t.location),g=e.createURL(i),k=s||w.toString()===g.toString()||w.search!==g.search,c=h?Object.keys(h)[0]:void 0,m=fx(n,c).filter((S,M)=>{if(S.route.lazy)return!0;if(S.route.loader==null)return!1;if(px(t.loaderData,t.matches[M],S)||o.some(j=>j===S.route.id))return!0;let _=t.matches[M],T=S;return Kp(S,ge({currentUrl:w,currentParams:_.params,nextUrl:g,nextParams:T.params},r,{actionResult:y,defaultShouldRevalidate:k||u0(_,T)}))}),x=[];return l.forEach((S,M)=>{if(!n.some(P=>P.route.id===S.routeId))return;let _=gi(u,S.path,d);if(!_){x.push(ge({key:M},S,{matches:null,match:null}));return}let T=Ld(_,S.path);if(a.includes(M)){x.push(ge({key:M,matches:_,match:T},S));return}Kp(T,ge({currentUrl:w,currentParams:t.matches[t.matches.length-1].params,nextUrl:g,nextParams:n[n.length-1].params},r,{actionResult:y,defaultShouldRevalidate:k}))&&x.push(ge({key:M,matches:_,match:T},S))}),[m,x]}function px(e,t,n){let r=!t||n.route.id!==t.route.id,i=e[n.route.id]===void 0;return r||i}function u0(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function Kp(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}async function Rd(e,t,n){if(!e.lazy)return;let r=await e.lazy();if(!e.lazy)return;let i=n[e.id];ue(i,"No route found in manifest");let s={};for(let o in r){let l=i[o]!==void 0&&o!=="hasErrorBoundary";Wr(!l,'Route "'+i.id+'" has a static property "'+o+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+o+'" will be ignored.')),!l&&!O1.has(o)&&(s[o]=r[o])}Object.assign(i,s),Object.assign(i,{hasErrorBoundary:t(ge({},i)),lazy:void 0})}async function rs(e,t,n,r,i,s,o,a,l,u){o===void 0&&(o="/"),a===void 0&&(a=!1),l===void 0&&(l=!1);let d,f,h,y=k=>{let c,p=new Promise((m,x)=>c=x);return h=()=>c(),t.signal.addEventListener("abort",h),Promise.race([k({request:t,params:n.params,context:u}),p])};try{let k=n.route[e];if(n.route.lazy)if(k)f=(await Promise.all([y(k),Rd(n.route,s,i)]))[0];else if(await Rd(n.route,s,i),k=n.route[e],k)f=await y(k);else{if(e==="action")throw gn(405,{method:t.method,pathname:new URL(t.url).pathname,routeId:n.route.id});return{type:Je.data,data:void 0}}else ue(k,"Could not find the "+e+' to run on the "'+n.route.id+'" route'),f=await y(k);ue(f!==void 0,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+n.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(k){d=Je.error,f=k}finally{h&&t.signal.removeEventListener("abort",h)}if(gx(f)){let k=f.status;if(sx.has(k)){let m=f.headers.get("Location");if(ue(m,"Redirects returned/thrown from loaders/actions must have a Location header"),a0.test(m)){if(!a){let x=new URL(t.url),S=m.startsWith("//")?new URL(x.protocol+m):new URL(m),M=nl(S.pathname,o)!=null;S.origin===x.origin&&M&&(m=S.pathname+S.search+S.hash)}}else{let x=r.slice(0,r.indexOf(n)+1),S=Xc(x).map(_=>_.pathnameBase),M=i0(m,S,new URL(t.url).pathname);if(ue(Hr(M),"Unable to resolve redirect location: "+m),o){let _=M.pathname;M.pathname=_==="/"?o:mr([o,_])}m=Hr(M)}if(a)throw f.headers.set("Location",m),f;return{type:Je.redirect,status:k,location:m,revalidate:f.headers.get("X-Remix-Revalidate")!==null}}if(l)throw{type:d||Je.data,response:f};let c,p=f.headers.get("Content-Type");return p&&/\bapplication\/json\b/.test(p)?c=await f.json():c=await f.text(),d===Je.error?{type:d,error:new Kc(k,f.statusText,c),headers:f.headers}:{type:Je.data,data:c,statusCode:f.status,headers:f.headers}}if(d===Je.error)return{type:d,error:f};if(f instanceof q1){var w,g;return{type:Je.deferred,deferredData:f,statusCode:(w=f.init)==null?void 0:w.status,headers:((g=f.init)==null?void 0:g.headers)&&new Headers(f.init.headers)}}return{type:Je.data,data:f}}function is(e,t,n,r){let i=e.createURL(c0(t)).toString(),s={signal:n};if(r&&_n(r.formMethod)){let{formMethod:o,formEncType:a,formData:l}=r;s.method=o.toUpperCase(),s.body=a==="application/x-www-form-urlencoded"?d0(l):l}return new Request(i,s)}function d0(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,r instanceof File?r.name:r);return t}function hx(e,t,n,r,i){let s={},o=null,a,l=!1,u={};return n.forEach((d,f)=>{let h=t[f].route.id;if(ue(!Ai(d),"Cannot handle redirect results in processLoaderData"),Ss(d)){let y=vi(e,h),w=d.error;r&&(w=Object.values(r)[0],r=void 0),o=o||{},o[y.route.id]==null&&(o[y.route.id]=w),s[h]=void 0,l||(l=!0,a=s0(d.error)?d.error.status:500),d.headers&&(u[h]=d.headers)}else Rr(d)?(i.set(h,d.deferredData),s[h]=d.deferredData.data):s[h]=d.data,d.statusCode!=null&&d.statusCode!==200&&!l&&(a=d.statusCode),d.headers&&(u[h]=d.headers)}),r&&(o=r,s[Object.keys(r)[0]]=void 0),{loaderData:s,errors:o,statusCode:a||200,loaderHeaders:u}}function Zp(e,t,n,r,i,s,o,a){let{loaderData:l,errors:u}=hx(t,n,r,i,a);for(let d=0;dr.route.id===t)+1):[...e]).reverse().find(r=>r.route.hasErrorBoundary===!0)||e[0]}function qp(e){let t=e.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function gn(e,t){let{pathname:n,routeId:r,method:i,type:s}=t===void 0?{}:t,o="Unknown Server Error",a="Unknown @remix-run/router error";return e===400?(o="Bad Request",i&&n&&r?a="You made a "+i+' request to "'+n+'" but '+('did not provide a `loader` for route "'+r+'", ')+"so there is no way to handle the request.":s==="defer-action"&&(a="defer() is not supported in actions")):e===403?(o="Forbidden",a='Route "'+r+'" does not match URL "'+n+'"'):e===404?(o="Not Found",a='No route matches URL "'+n+'"'):e===405&&(o="Method Not Allowed",i&&n&&r?a="You made a "+i.toUpperCase()+' request to "'+n+'" but '+('did not provide an `action` for route "'+r+'", ')+"so there is no way to handle the request.":i&&(a='Invalid request method "'+i.toUpperCase()+'"')),new Kc(e||500,o,new Error(a),!0)}function eh(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(Ai(n))return n}}function c0(e){let t=typeof e=="string"?Cn(e):e;return Hr(ge({},t,{hash:""}))}function mx(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash!==t.hash}function Rr(e){return e.type===Je.deferred}function Ss(e){return e.type===Je.error}function Ai(e){return(e&&e.type)===Je.redirect}function gx(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function vx(e){return ix.has(e)}function _n(e){return nx.has(e)}async function th(e,t,n,r,i,s){for(let o=0;of.route.id===l.route.id),d=u!=null&&!u0(u,l)&&(s&&s[l.route.id])!==void 0;Rr(a)&&(i||d)&&await f0(a,r,i).then(f=>{f&&(n[o]=f||n[o])})}}async function f0(e,t,n){if(n===void 0&&(n=!1),!await e.deferredData.resolveData(t)){if(n)try{return{type:Je.data,data:e.deferredData.unwrappedData}}catch(i){return{type:Je.error,error:i}}return{type:Je.data,data:e.deferredData.data}}}function p0(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function nh(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],handle:n.handle}}function Ld(e,t){let n=typeof t=="string"?Cn(t).search:t.search;if(e[e.length-1].route.index&&p0(n||""))return e[e.length-1];let r=Xc(e);return r[r.length-1]}/**
+ * React Router v6.9.0
+ *
+ * Copyright (c) Remix Software Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE.md file in the root directory of this source tree.
+ *
+ * @license MIT
+ */function yx(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}const wx=typeof Object.is=="function"?Object.is:yx,{useState:xx,useEffect:Sx,useLayoutEffect:kx,useDebugValue:Cx}=zu;function Ex(e,t,n){const r=t(),[{inst:i},s]=xx({inst:{value:r,getSnapshot:t}});return kx(()=>{i.value=r,i.getSnapshot=t,mu(i)&&s({inst:i})},[e,r,t]),Sx(()=>(mu(i)&&s({inst:i}),e(()=>{mu(i)&&s({inst:i})})),[e]),Cx(r),r}function mu(e){const t=e.getSnapshot,n=e.value;try{const r=t();return!wx(n,r)}catch{return!0}}function bx(e,t,n){return t()}const Tx=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Ax=!Tx,Px=Ax?bx:Ex,Mx="useSyncExternalStore"in zu?(e=>e.useSyncExternalStore)(zu):Px,Zc=R.createContext(null),Jc=R.createContext(null),qc=R.createContext(null),rl=R.createContext(null),Kr=R.createContext({outlet:null,matches:[]}),h0=R.createContext(null);function Id(){return Id=Object.assign?Object.assign.bind():function(e){for(var t=1;ta.pathnameBase)),s=R.useRef(!1);return R.useEffect(()=>{s.current=!0}),R.useCallback(function(a,l){if(l===void 0&&(l={}),!s.current)return;if(typeof a=="number"){t.go(a);return}let u=i0(a,JSON.parse(i),r,l.relative==="path");e!=="/"&&(u.pathname=u.pathname==="/"?e:mr([e,u.pathname])),(l.replace?t.replace:t.push)(u,l.state,l)},[e,t,i,r])}const Dx=R.createContext(null);function _x(e){let t=R.useContext(Kr).outlet;return t&&R.createElement(Dx.Provider,{value:e},t)}function Ox(){let{matches:e}=R.useContext(Kr),t=e[e.length-1];return t?t.params:{}}function Rx(e,t){il()||ue(!1);let{navigator:n}=R.useContext(qc),r=R.useContext(Jc),{matches:i}=R.useContext(Kr),s=i[i.length-1],o=s?s.params:{};s&&s.pathname;let a=s?s.pathnameBase:"/";s&&s.route;let l=m0(),u;if(t){var d;let g=typeof t=="string"?Cn(t):t;a==="/"||(d=g.pathname)!=null&&d.startsWith(a)||ue(!1),u=g}else u=l;let f=u.pathname||"/",h=a==="/"?f:f.slice(a.length)||"/",y=gi(e,{pathname:h}),w=zx(y&&y.map(g=>Object.assign({},g,{params:Object.assign({},o,g.params),pathname:mr([a,n.encodeLocation?n.encodeLocation(g.pathname).pathname:g.pathname]),pathnameBase:g.pathnameBase==="/"?a:mr([a,n.encodeLocation?n.encodeLocation(g.pathnameBase).pathname:g.pathnameBase])})),i,r||void 0);return t&&w?R.createElement(rl.Provider,{value:{location:Id({pathname:"/",search:"",hash:"",state:null,key:"default"},u),navigationType:Ge.Pop}},w):w}function Lx(){let e=Ux(),t=s0(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,i={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},s=null;return R.createElement(R.Fragment,null,R.createElement("h2",null,"Unexpected Application Error!"),R.createElement("h3",{style:{fontStyle:"italic"}},t),n?R.createElement("pre",{style:i},n):null,s)}class Ix extends R.Component{constructor(t){super(t),this.state={location:t.location,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location?{error:t.error,location:t.location}:{error:t.error||n.error,location:n.location}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error?R.createElement(Kr.Provider,{value:this.props.routeContext},R.createElement(h0.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function jx(e){let{routeContext:t,match:n,children:r}=e,i=R.useContext(Zc);return i&&i.static&&i.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=n.route.id),R.createElement(Kr.Provider,{value:t},r)}function zx(e,t,n){if(t===void 0&&(t=[]),e==null)if(n!=null&&n.errors)e=n.matches;else return null;let r=e,i=n==null?void 0:n.errors;if(i!=null){let s=r.findIndex(o=>o.route.id&&(i==null?void 0:i[o.route.id]));s>=0||ue(!1),r=r.slice(0,Math.min(r.length,s+1))}return r.reduceRight((s,o,a)=>{let l=o.route.id?i==null?void 0:i[o.route.id]:null,u=null;n&&(o.route.ErrorBoundary?u=R.createElement(o.route.ErrorBoundary,null):o.route.errorElement?u=o.route.errorElement:u=R.createElement(Lx,null));let d=t.concat(r.slice(0,a+1)),f=()=>{let h=s;return l?h=u:o.route.Component?h=R.createElement(o.route.Component,null):o.route.element&&(h=o.route.element),R.createElement(jx,{match:o,routeContext:{outlet:s,matches:d},children:h})};return n&&(o.route.ErrorBoundary||o.route.errorElement||a===0)?R.createElement(Ix,{location:n.location,component:u,error:l,children:f(),routeContext:{outlet:null,matches:d}}):f()},null)}var rh;(function(e){e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator"})(rh||(rh={}));var Ca;(function(e){e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator"})(Ca||(Ca={}));function Nx(e){let t=R.useContext(Jc);return t||ue(!1),t}function Fx(e){let t=R.useContext(Kr);return t||ue(!1),t}function Yx(e){let t=Fx(),n=t.matches[t.matches.length-1];return n.route.id||ue(!1),n.route.id}function Ux(){var e;let t=R.useContext(h0),n=Nx(Ca.UseRouteError),r=Yx(Ca.UseRouteError);return t||((e=n.errors)==null?void 0:e[r])}function Bx(e){let{fallbackElement:t,router:n}=e,r=R.useCallback(()=>n.state,[n]),i=Mx(n.subscribe,r,r),s=R.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:l=>n.navigate(l),push:(l,u,d)=>n.navigate(l,{state:u,preventScrollReset:d==null?void 0:d.preventScrollReset}),replace:(l,u,d)=>n.navigate(l,{replace:!0,state:u,preventScrollReset:d==null?void 0:d.preventScrollReset})}),[n]),o=n.basename||"/",a=R.useMemo(()=>({router:n,navigator:s,static:!1,basename:o}),[n,s,o]);return R.createElement(R.Fragment,null,R.createElement(Zc.Provider,{value:a},R.createElement(Jc.Provider,{value:i},R.createElement(Vx,{basename:n.basename,location:n.state.location,navigationType:n.state.historyAction,navigator:s},n.state.initialized?R.createElement(Gx,null):t))),null)}function Wx(e){return _x(e.context)}function Hx(e){ue(!1)}function Vx(e){let{basename:t="/",children:n=null,location:r,navigationType:i=Ge.Pop,navigator:s,static:o=!1}=e;il()&&ue(!1);let a=t.replace(/^\/*/,"/"),l=R.useMemo(()=>({basename:a,navigator:s,static:o}),[a,s,o]);typeof r=="string"&&(r=Cn(r));let{pathname:u="/",search:d="",hash:f="",state:h=null,key:y="default"}=r,w=R.useMemo(()=>{let g=nl(u,a);return g==null?null:{location:{pathname:g,search:d,hash:f,state:h,key:y},navigationType:i}},[a,u,d,f,h,y,i]);return w==null?null:R.createElement(qc.Provider,{value:l},R.createElement(rl.Provider,{children:n,value:w}))}function Gx(e){let{children:t,location:n}=e,r=R.useContext(Zc),i=r&&!t?r.router.routes:jd(t);return Rx(i,n)}var ih;(function(e){e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error"})(ih||(ih={}));new Promise(()=>{});function jd(e,t){t===void 0&&(t=[]);let n=[];return R.Children.forEach(e,(r,i)=>{if(!R.isValidElement(r))return;if(r.type===R.Fragment){n.push.apply(n,jd(r.props.children,t));return}r.type!==Hx&&ue(!1),!r.props.index||!r.props.children||ue(!1);let s=[...t,i],o={id:r.props.id||s.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(o.children=jd(r.props.children,s)),n.push(o)}),n}function $x(e){return!!e.ErrorBoundary||!!e.errorElement}/**
+ * React Router DOM v6.9.0
+ *
+ * Copyright (c) Remix Software Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE.md file in the root directory of this source tree.
+ *
+ * @license MIT
+ */function zd(){return zd=Object.assign?Object.assign.bind():function(e){for(var t=1;tSe)&&(Ne=(se=se.replace(" ",":")).length),0ie&&(ie=(V=V.trim()).charCodeAt(0)),ie){case 38:return V.replace(c,"$1"+W.trim());case 58:return W.trim()+V.replace(c,"$1"+W.trim());default:if(0<1*$&&0H.charCodeAt(8))break;case 115:E=E.replace(H,"-webkit-"+H)+";"+E;break;case 207:case 102:E=E.replace(H,"-webkit-"+(102$.charCodeAt(0)&&($=$.trim()),xe=$,$=[xe],01?t-1:0),r=1;r0?" Args: "+n.join(", "):""))}var xS=function(){function e(n){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=n}var t=e.prototype;return t.indexOfGroup=function(n){for(var r=0,i=0;i=this.groupSizes.length){for(var i=this.groupSizes,s=i.length,o=s;n>=o;)(o<<=1)<0&&Vr(16,""+n);this.groupSizes=new Uint32Array(o),this.groupSizes.set(i),this.length=o;for(var a=s;a=this.length||this.groupSizes[n]===0)return r;for(var i=this.groupSizes[n],s=this.indexOfGroup(n),o=s+i,a=s;a=ks&&(ks=t+1),$o.set(e,t),Ta.set(t,e)},CS="style["+Yi+'][data-styled-version="5.3.9"]',ES=new RegExp("^"+Yi+'\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)'),bS=function(e,t,n){for(var r,i=n.split(","),s=0,o=i.length;s=0;u--){var d=l[u];if(d&&d.nodeType===1&&d.hasAttribute(Yi))return d}}(n),s=i!==void 0?i.nextSibling:null;r.setAttribute(Yi,"active"),r.setAttribute("data-styled-version","5.3.9");var o=AS();return o&&r.setAttribute("nonce",o),n.insertBefore(r,s),r},PS=function(){function e(n){var r=this.element=x0(n);r.appendChild(document.createTextNode("")),this.sheet=function(i){if(i.sheet)return i.sheet;for(var s=document.styleSheets,o=0,a=s.length;o=0){var i=document.createTextNode(r),s=this.nodes[n];return this.element.insertBefore(i,s||null),this.length++,!0}return!1},t.deleteRule=function(n){this.element.removeChild(this.nodes[n]),this.length--},t.getRule=function(n){return n0&&(f+=h+",")}),s+=""+u+d+'{content:"'+f+`"}/*!sc*/
+`}}}return s}(this)},e}(),OS=/(a)(d)/gi,hh=function(e){return String.fromCharCode(e+(e>25?39:97))};function Yd(e){var t,n="";for(t=Math.abs(e);t>52;t=t/52|0)n=hh(t%52)+n;return(hh(t%52)+n).replace(OS,"$1-$2")}var yi=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},S0=function(e){return yi(5381,e)};function k0(e){for(var t=0;t>>0);if(!n.hasNameForId(i,a)){var l=r(o,"."+a,void 0,i);n.insertRules(i,a,l)}s.push(a),this.staticRulesId=a}else{for(var u=this.rules.length,d=yi(this.baseHash,r.hash),f="",h=0;h>>0);if(!n.hasNameForId(i,k)){var c=r(f,"."+k,void 0,i);n.insertRules(i,k,c)}s.push(k)}}return s.join(" ")},e}(),IS=/^\s*\/\/.*$/gm,jS=[":","[",".","#"];function zS(e){var t,n,r,i,s=e===void 0?gr:e,o=s.options,a=o===void 0?gr:o,l=s.plugins,u=l===void 0?ba:l,d=new eS(a),f=[],h=function(g){function k(c){if(c)try{g(c+"}")}catch{}}return function(c,p,m,x,S,M,_,T,j,P){switch(c){case 1:if(j===0&&p.charCodeAt(0)===64)return g(p+";"),"";break;case 2:if(T===0)return p+"/*|*/";break;case 3:switch(T){case 102:case 112:return g(m[0]+p),"";default:return p+(P===0?"/*|*/":"")}case-2:p.split("/*|*/}").forEach(k)}}}(function(g){f.push(g)}),y=function(g,k,c){return k===0&&jS.indexOf(c[n.length])!==-1||c.match(i)?g:"."+t};function w(g,k,c,p){p===void 0&&(p="&");var m=g.replace(IS,""),x=k&&c?c+" "+k+" { "+m+" }":m;return t=p,n=k,r=new RegExp("\\"+n+"\\b","g"),i=new RegExp("(\\"+n+"\\b){2,}"),d(c||!k?"":k,x)}return d.use([].concat(u,[function(g,k,c){g===2&&c.length&&c[0].lastIndexOf(n)>0&&(c[0]=c[0].replace(r,y))},h,function(g){if(g===-2){var k=f;return f=[],k}}])),w.hash=u.length?u.reduce(function(g,k){return k.name||Vr(15),yi(g,k.name)},5381).toString():"",w}var C0=ve.createContext();C0.Consumer;var E0=ve.createContext(),NS=(E0.Consumer,new Aa),Ud=zS();function b0(){return R.useContext(C0)||NS}function T0(){return R.useContext(E0)||Ud}var FS=function(){function e(t,n){var r=this;this.inject=function(i,s){s===void 0&&(s=Ud);var o=r.name+s.hash;i.hasNameForId(r.id,o)||i.insertRules(r.id,o,s(r.rules,o,"@keyframes"))},this.toString=function(){return Vr(12,String(r.name))},this.name=t,this.id="sc-keyframes-"+t,this.rules=n}return e.prototype.getName=function(t){return t===void 0&&(t=Ud),this.name+t.hash},e}(),YS=/([A-Z])/,US=/([A-Z])/g,BS=/^ms-/,WS=function(e){return"-"+e.toLowerCase()};function mh(e){return YS.test(e)?e.replace(US,WS).replace(BS,"-ms-"):e}var gh=function(e){return e==null||e===!1||e===""};function Gr(e,t,n,r){if(Array.isArray(e)){for(var i,s=[],o=0,a=e.length;o1?t-1:0),r=1;r?@[\\\]^`{|}~-]+/g,VS=/(^-|-$)/g;function gu(e){return e.replace(HS,"-").replace(VS,"")}var M0=function(e){return Yd(S0(e)>>>0)};function To(e){return typeof e=="string"&&!0}var Bd=function(e){return typeof e=="function"||typeof e=="object"&&e!==null&&!Array.isArray(e)},GS=function(e){return e!=="__proto__"&&e!=="constructor"&&e!=="prototype"};function $S(e,t,n){var r=e[n];Bd(t)&&Bd(r)?D0(r,t):e[n]=t}function D0(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0||(P[T]=M[T]);return P}(t,["componentId"]),S=m&&m+"-"+(To(p)?p:gu(fh(p)));return _0(p,nn({},x,{attrs:h,componentId:S}),n)},Object.defineProperty(w,"defaultProps",{get:function(){return this._foldedDefaultProps},set:function(p){this._foldedDefaultProps=r?D0({},e.defaultProps,p):p}}),Object.defineProperty(w,"toString",{value:function(){return"."+w.styledComponentId}}),i&&vS(w,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),w}var Wd=function(e){return function t(n,r,i){if(i===void 0&&(i=gr),!Ea.isValidElementType(r))return Vr(1,String(r));var s=function(){return n(r,i,A0.apply(void 0,arguments))};return s.withConfig=function(o){return t(n,r,nn({},i,{},o))},s.attrs=function(o){return t(n,r,nn({},i,{attrs:Array.prototype.concat(i.attrs,o).filter(Boolean)}))},s}(_0,e)};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","textPath","tspan"].forEach(function(e){Wd[e]=Wd(e)});var XS=function(){function e(n,r){this.rules=n,this.componentId=r,this.isStatic=k0(n),Aa.registerId(this.componentId+1)}var t=e.prototype;return t.createStyles=function(n,r,i,s){var o=s(Gr(this.rules,r,i,s).join(""),""),a=this.componentId+n;i.insertRules(a,a,o)},t.removeStyles=function(n,r){r.clearRules(this.componentId+n)},t.renderStyles=function(n,r,i,s){n>2&&Aa.registerId(this.componentId+n),this.removeStyles(n,i),this.createStyles(n,r,i,s)},e}();function KS(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{typeof e[n]>"u"?e[n]=t[n]:yh(t[n])&&yh(e[n])&&Object.keys(t[n]).length>0&&df(e[n],t[n])})}const O0={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector(){return null},querySelectorAll(){return[]},getElementById(){return null},createEvent(){return{initEvent(){}}},createElement(){return{children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName(){return[]}}},createElementNS(){return{}},importNode(){return null},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function Er(){const e=typeof document<"u"?document:{};return df(e,O0),e}const ZS={document:O0,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle(){return{getPropertyValue(){return""}}},Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia(){return{}},requestAnimationFrame(e){return typeof setTimeout>"u"?(e(),null):setTimeout(e,0)},cancelAnimationFrame(e){typeof setTimeout>"u"||clearTimeout(e)}};function Dt(){const e=typeof window<"u"?window:{};return df(e,ZS),e}function Zn(e){return e===void 0&&(e=""),e.trim().split(" ").filter(t=>!!t.trim())}function JS(e){const t=e;Object.keys(t).forEach(n=>{try{t[n]=null}catch{}try{delete t[n]}catch{}})}function Pa(e,t){return t===void 0&&(t=0),setTimeout(e,t)}function Ma(){return Date.now()}function qS(e){const t=Dt();let n;return t.getComputedStyle&&(n=t.getComputedStyle(e,null)),!n&&e.currentStyle&&(n=e.currentStyle),n||(n=e.style),n}function ek(e,t){t===void 0&&(t="x");const n=Dt();let r,i,s;const o=qS(e);return n.WebKitCSSMatrix?(i=o.transform||o.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map(a=>a.replace(",",".")).join(", ")),s=new n.WebKitCSSMatrix(i==="none"?"":i)):(s=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),r=s.toString().split(",")),t==="x"&&(n.WebKitCSSMatrix?i=s.m41:r.length===16?i=parseFloat(r[12]):i=parseFloat(r[4])),t==="y"&&(n.WebKitCSSMatrix?i=s.m42:r.length===16?i=parseFloat(r[13]):i=parseFloat(r[5])),i||0}function Ao(e){return typeof e=="object"&&e!==null&&e.constructor&&Object.prototype.toString.call(e).slice(8,-1)==="Object"}function tk(e){return typeof window<"u"&&typeof window.HTMLElement<"u"?e instanceof HTMLElement:e&&(e.nodeType===1||e.nodeType===11)}function Ot(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let n=1;nt.indexOf(s)<0);for(let s=0,o=i.length;ss?"next":"prev",d=(h,y)=>u==="next"&&h>=y||u==="prev"&&h<=y,f=()=>{a=new Date().getTime(),o===null&&(o=a);const h=Math.max(Math.min((a-o)/l,1),0),y=.5-Math.cos(h*Math.PI)/2;let w=s+y*(n-s);if(d(w,n)&&(w=n),t.wrapperEl.scrollTo({[r]:w}),d(w,n)){t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout(()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[r]:w})}),i.cancelAnimationFrame(t.cssModeFrameID);return}t.cssModeFrameID=i.requestAnimationFrame(f)};f()}function wn(e,t){return t===void 0&&(t=""),[...e.children].filter(n=>n.matches(t))}function Da(e){try{console.warn(e);return}catch{}}function Vs(e,t){t===void 0&&(t=[]);const n=document.createElement(e);return n.classList.add(...Array.isArray(t)?t:Zn(t)),n}function nk(e){const t=Dt(),n=Er(),r=e.getBoundingClientRect(),i=n.body,s=e.clientTop||i.clientTop||0,o=e.clientLeft||i.clientLeft||0,a=e===t?t.scrollY:e.scrollTop,l=e===t?t.scrollX:e.scrollLeft;return{top:r.top+a-s,left:r.left+l-o}}function rk(e,t){const n=[];for(;e.previousElementSibling;){const r=e.previousElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function ik(e,t){const n=[];for(;e.nextElementSibling;){const r=e.nextElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function ir(e,t){return Dt().getComputedStyle(e,null).getPropertyValue(t)}function _a(e){let t=e,n;if(t){for(n=0;(t=t.previousSibling)!==null;)t.nodeType===1&&(n+=1);return n}}function L0(e,t){const n=[];let r=e.parentElement;for(;r;)t?r.matches(t)&&n.push(r):n.push(r),r=r.parentElement;return n}function Hd(e,t,n){const r=Dt();return n?e[t==="width"?"offsetWidth":"offsetHeight"]+parseFloat(r.getComputedStyle(e,null).getPropertyValue(t==="width"?"margin-right":"margin-top"))+parseFloat(r.getComputedStyle(e,null).getPropertyValue(t==="width"?"margin-left":"margin-bottom")):e.offsetWidth}function hn(e){return(Array.isArray(e)?e:[e]).filter(t=>!!t)}let yu;function sk(){const e=Dt(),t=Er();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}function I0(){return yu||(yu=sk()),yu}let wu;function ok(e){let{userAgent:t}=e===void 0?{}:e;const n=I0(),r=Dt(),i=r.navigator.platform,s=t||r.navigator.userAgent,o={ios:!1,android:!1},a=r.screen.width,l=r.screen.height,u=s.match(/(Android);?[\s\/]+([\d.]+)?/);let d=s.match(/(iPad).*OS\s([\d_]+)/);const f=s.match(/(iPod)(.*OS\s([\d_]+))?/),h=!d&&s.match(/(iPhone\sOS|iOS)\s([\d_]+)/),y=i==="Win32";let w=i==="MacIntel";const g=["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"];return!d&&w&&n.touch&&g.indexOf(`${a}x${l}`)>=0&&(d=s.match(/(Version)\/([\d.]+)/),d||(d=[0,1,"13_0_0"]),w=!1),u&&!y&&(o.os="android",o.android=!0),(d||h||f)&&(o.os="ios",o.ios=!0),o}function j0(e){return e===void 0&&(e={}),wu||(wu=ok(e)),wu}let xu;function ak(){const e=Dt(),t=j0();let n=!1;function r(){const a=e.navigator.userAgent.toLowerCase();return a.indexOf("safari")>=0&&a.indexOf("chrome")<0&&a.indexOf("android")<0}if(r()){const a=String(e.navigator.userAgent);if(a.includes("Version/")){const[l,u]=a.split("Version/")[1].split(" ")[0].split(".").map(d=>Number(d));n=l<16||l===16&&u<2}}const i=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),s=r(),o=s||i&&t.ios;return{isSafari:n||s,needPerspectiveFix:n,need3dFix:o,isWebView:i}}function lk(){return xu||(xu=ak()),xu}function uk(e){let{swiper:t,on:n,emit:r}=e;const i=Dt();let s=null,o=null;const a=()=>{!t||t.destroyed||!t.initialized||(r("beforeResize"),r("resize"))},l=()=>{!t||t.destroyed||!t.initialized||(s=new ResizeObserver(f=>{o=i.requestAnimationFrame(()=>{const{width:h,height:y}=t;let w=h,g=y;f.forEach(k=>{let{contentBoxSize:c,contentRect:p,target:m}=k;m&&m!==t.el||(w=p?p.width:(c[0]||c).inlineSize,g=p?p.height:(c[0]||c).blockSize)}),(w!==h||g!==y)&&a()})}),s.observe(t.el))},u=()=>{o&&i.cancelAnimationFrame(o),s&&s.unobserve&&t.el&&(s.unobserve(t.el),s=null)},d=()=>{!t||t.destroyed||!t.initialized||r("orientationchange")};n("init",()=>{if(t.params.resizeObserver&&typeof i.ResizeObserver<"u"){l();return}i.addEventListener("resize",a),i.addEventListener("orientationchange",d)}),n("destroy",()=>{u(),i.removeEventListener("resize",a),i.removeEventListener("orientationchange",d)})}function dk(e){let{swiper:t,extendParams:n,on:r,emit:i}=e;const s=[],o=Dt(),a=function(d,f){f===void 0&&(f={});const h=o.MutationObserver||o.WebkitMutationObserver,y=new h(w=>{if(t.__preventObserver__)return;if(w.length===1){i("observerUpdate",w[0]);return}const g=function(){i("observerUpdate",w[0])};o.requestAnimationFrame?o.requestAnimationFrame(g):o.setTimeout(g,0)});y.observe(d,{attributes:typeof f.attributes>"u"?!0:f.attributes,childList:typeof f.childList>"u"?!0:f.childList,characterData:typeof f.characterData>"u"?!0:f.characterData}),s.push(y)},l=()=>{if(t.params.observer){if(t.params.observeParents){const d=L0(t.hostEl);for(let f=0;f{s.forEach(d=>{d.disconnect()}),s.splice(0,s.length)};n({observer:!1,observeParents:!1,observeSlideChildren:!1}),r("init",l),r("destroy",u)}var ck={on(e,t,n){const r=this;if(!r.eventsListeners||r.destroyed||typeof t!="function")return r;const i=n?"unshift":"push";return e.split(" ").forEach(s=>{r.eventsListeners[s]||(r.eventsListeners[s]=[]),r.eventsListeners[s][i](t)}),r},once(e,t,n){const r=this;if(!r.eventsListeners||r.destroyed||typeof t!="function")return r;function i(){r.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,o=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(n,1),t},off(e,t){const n=this;return!n.eventsListeners||n.destroyed||!n.eventsListeners||e.split(" ").forEach(r=>{typeof t>"u"?n.eventsListeners[r]=[]:n.eventsListeners[r]&&n.eventsListeners[r].forEach((i,s)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&n.eventsListeners[r].splice(s,1)})}),n},emit(){const e=this;if(!e.eventsListeners||e.destroyed||!e.eventsListeners)return e;let t,n,r;for(var i=arguments.length,s=new Array(i),o=0;o{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach(u=>{u.apply(r,[l,...n])}),e.eventsListeners&&e.eventsListeners[l]&&e.eventsListeners[l].forEach(u=>{u.apply(r,n)})}),e}};function fk(){const e=this;let t,n;const r=e.el;typeof e.params.width<"u"&&e.params.width!==null?t=e.params.width:t=r.clientWidth,typeof e.params.height<"u"&&e.params.height!==null?n=e.params.height:n=r.clientHeight,!(t===0&&e.isHorizontal()||n===0&&e.isVertical())&&(t=t-parseInt(ir(r,"padding-left")||0,10)-parseInt(ir(r,"padding-right")||0,10),n=n-parseInt(ir(r,"padding-top")||0,10)-parseInt(ir(r,"padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(n)&&(n=0),Object.assign(e,{width:t,height:n,size:e.isHorizontal()?t:n}))}function pk(){const e=this;function t(P,U){return parseFloat(P.getPropertyValue(e.getDirectionLabel(U))||0)}const n=e.params,{wrapperEl:r,slidesEl:i,size:s,rtlTranslate:o,wrongRTL:a}=e,l=e.virtual&&n.virtual.enabled,u=l?e.virtual.slides.length:e.slides.length,d=wn(i,`.${e.params.slideClass}, swiper-slide`),f=l?e.virtual.slides.length:d.length;let h=[];const y=[],w=[];let g=n.slidesOffsetBefore;typeof g=="function"&&(g=n.slidesOffsetBefore.call(e));let k=n.slidesOffsetAfter;typeof k=="function"&&(k=n.slidesOffsetAfter.call(e));const c=e.snapGrid.length,p=e.slidesGrid.length;let m=n.spaceBetween,x=-g,S=0,M=0;if(typeof s>"u")return;typeof m=="string"&&m.indexOf("%")>=0?m=parseFloat(m.replace("%",""))/100*s:typeof m=="string"&&(m=parseFloat(m)),e.virtualSize=-m,d.forEach(P=>{o?P.style.marginLeft="":P.style.marginRight="",P.style.marginBottom="",P.style.marginTop=""}),n.centeredSlides&&n.cssMode&&(Po(r,"--swiper-centered-offset-before",""),Po(r,"--swiper-centered-offset-after",""));const _=n.grid&&n.grid.rows>1&&e.grid;_?e.grid.initSlides(d):e.grid&&e.grid.unsetSlides();let T;const j=n.slidesPerView==="auto"&&n.breakpoints&&Object.keys(n.breakpoints).filter(P=>typeof n.breakpoints[P].slidesPerView<"u").length>0;for(let P=0;P1&&h.push(e.virtualSize-s)}if(l&&n.loop){const P=w[0]+m;if(n.slidesPerGroup>1){const U=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/n.slidesPerGroup),A=P*n.slidesPerGroup;for(let D=0;D!n.cssMode||n.loop?!0:A!==d.length-1).forEach(U=>{U.style[P]=`${m}px`})}if(n.centeredSlides&&n.centeredSlidesBounds){let P=0;w.forEach(A=>{P+=A+(m||0)}),P-=m;const U=P-s;h=h.map(A=>A<=0?-g:A>U?U+k:A)}if(n.centerInsufficientSlides){let P=0;w.forEach(A=>{P+=A+(m||0)}),P-=m;const U=(n.slidesOffsetBefore||0)+(n.slidesOffsetAfter||0);if(P+U{h[L]=D-A}),y.forEach((D,L)=>{y[L]=D+A})}}if(Object.assign(e,{slides:d,snapGrid:h,slidesGrid:y,slidesSizesGrid:w}),n.centeredSlides&&n.cssMode&&!n.centeredSlidesBounds){Po(r,"--swiper-centered-offset-before",`${-h[0]}px`),Po(r,"--swiper-centered-offset-after",`${e.size/2-w[w.length-1]/2}px`);const P=-e.snapGrid[0],U=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map(A=>A+P),e.slidesGrid=e.slidesGrid.map(A=>A+U)}if(f!==u&&e.emit("slidesLengthChange"),h.length!==c&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),y.length!==p&&e.emit("slidesGridLengthChange"),n.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!l&&!n.cssMode&&(n.effect==="slide"||n.effect==="fade")){const P=`${n.containerModifierClass}backface-hidden`,U=e.el.classList.contains(P);f<=n.maxBackfaceHiddenSlides?U||e.el.classList.add(P):U&&e.el.classList.remove(P)}}function hk(e){const t=this,n=[],r=t.virtual&&t.params.virtual.enabled;let i=0,s;typeof e=="number"?t.setTransition(e):e===!0&&t.setTransition(t.params.speed);const o=a=>r?t.slides[t.getSlideIndexByData(a)]:t.slides[a];if(t.params.slidesPerView!=="auto"&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach(a=>{n.push(a)});else for(s=0;st.slides.length&&!r)break;n.push(o(a))}else n.push(o(t.activeIndex));for(s=0;si?a:i}(i||i===0)&&(t.wrapperEl.style.height=`${i}px`)}function mk(){const e=this,t=e.slides,n=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let r=0;r{t&&!e.classList.contains(n)?e.classList.add(n):!t&&e.classList.contains(n)&&e.classList.remove(n)};function gk(e){e===void 0&&(e=this&&this.translate||0);const t=this,n=t.params,{slides:r,rtlTranslate:i,snapGrid:s}=t;if(r.length===0)return;typeof r[0].swiperSlideOffset>"u"&&t.updateSlidesOffset();let o=-e;i&&(o=e),t.visibleSlidesIndexes=[],t.visibleSlides=[];let a=n.spaceBetween;typeof a=="string"&&a.indexOf("%")>=0?a=parseFloat(a.replace("%",""))/100*t.size:typeof a=="string"&&(a=parseFloat(a));for(let l=0;l=0&&y<=t.size-t.slidesSizesGrid[l],k=y>=0&&y1&&w<=t.size||y<=0&&w>=t.size;k&&(t.visibleSlides.push(u),t.visibleSlidesIndexes.push(l)),wh(u,k,n.slideVisibleClass),wh(u,g,n.slideFullyVisibleClass),u.progress=i?-f:f,u.originalProgress=i?-h:h}}function vk(e){const t=this;if(typeof e>"u"){const d=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*d||0}const n=t.params,r=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:s,isEnd:o,progressLoop:a}=t;const l=s,u=o;if(r===0)i=0,s=!0,o=!0;else{i=(e-t.minTranslate())/r;const d=Math.abs(e-t.minTranslate())<1,f=Math.abs(e-t.maxTranslate())<1;s=d||i<=0,o=f||i>=1,d&&(i=0),f&&(i=1)}if(n.loop){const d=t.getSlideIndexByData(0),f=t.getSlideIndexByData(t.slides.length-1),h=t.slidesGrid[d],y=t.slidesGrid[f],w=t.slidesGrid[t.slidesGrid.length-1],g=Math.abs(e);g>=h?a=(g-h)/w:a=(g+w-y)/w,a>1&&(a-=1)}Object.assign(t,{progress:i,progressLoop:a,isBeginning:s,isEnd:o}),(n.watchSlidesProgress||n.centeredSlides&&n.autoHeight)&&t.updateSlidesProgress(e),s&&!l&&t.emit("reachBeginning toEdge"),o&&!u&&t.emit("reachEnd toEdge"),(l&&!s||u&&!o)&&t.emit("fromEdge"),t.emit("progress",i)}const Su=(e,t,n)=>{t&&!e.classList.contains(n)?e.classList.add(n):!t&&e.classList.contains(n)&&e.classList.remove(n)};function yk(){const e=this,{slides:t,params:n,slidesEl:r,activeIndex:i}=e,s=e.virtual&&n.virtual.enabled,o=e.grid&&n.grid&&n.grid.rows>1,a=f=>wn(r,`.${n.slideClass}${f}, swiper-slide${f}`)[0];let l,u,d;if(s)if(n.loop){let f=i-e.virtual.slidesBefore;f<0&&(f=e.virtual.slides.length+f),f>=e.virtual.slides.length&&(f-=e.virtual.slides.length),l=a(`[data-swiper-slide-index="${f}"]`)}else l=a(`[data-swiper-slide-index="${i}"]`);else o?(l=t.filter(f=>f.column===i)[0],d=t.filter(f=>f.column===i+1)[0],u=t.filter(f=>f.column===i-1)[0]):l=t[i];l&&(o||(d=ik(l,`.${n.slideClass}, swiper-slide`)[0],n.loop&&!d&&(d=t[0]),u=rk(l,`.${n.slideClass}, swiper-slide`)[0],n.loop&&!u===0&&(u=t[t.length-1]))),t.forEach(f=>{Su(f,f===l,n.slideActiveClass),Su(f,f===d,n.slideNextClass),Su(f,f===u,n.slidePrevClass)}),e.emitSlidesClasses()}const Qo=(e,t)=>{if(!e||e.destroyed||!e.params)return;const n=()=>e.isElement?"swiper-slide":`.${e.params.slideClass}`,r=t.closest(n());if(r){let i=r.querySelector(`.${e.params.lazyPreloaderClass}`);!i&&e.isElement&&(r.shadowRoot?i=r.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{r.shadowRoot&&(i=r.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),i&&i.remove())})),i&&i.remove()}},ku=(e,t)=>{if(!e.slides[t])return;const n=e.slides[t].querySelector('[loading="lazy"]');n&&n.removeAttribute("loading")},Vd=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const n=e.slides.length;if(!n||!t||t<0)return;t=Math.min(t,n);const r=e.params.slidesPerView==="auto"?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const o=i,a=[o-t];a.push(...Array.from({length:t}).map((l,u)=>o+r+u)),e.slides.forEach((l,u)=>{a.includes(l.column)&&ku(e,u)});return}const s=i+r-1;if(e.params.rewind||e.params.loop)for(let o=i-t;o<=s+t;o+=1){const a=(o%n+n)%n;(as)&&ku(e,a)}else for(let o=Math.max(i-t,0);o<=Math.min(s+t,n-1);o+=1)o!==i&&(o>s||o=t[s]&&r=t[s]&&r=t[s]&&(i=s);return n.normalizeSlideIndex&&(i<0||typeof i>"u")&&(i=0),i}function xk(e){const t=this,n=t.rtlTranslate?t.translate:-t.translate,{snapGrid:r,params:i,activeIndex:s,realIndex:o,snapIndex:a}=t;let l=e,u;const d=y=>{let w=y-t.virtual.slidesBefore;return w<0&&(w=t.virtual.slides.length+w),w>=t.virtual.slides.length&&(w-=t.virtual.slides.length),w};if(typeof l>"u"&&(l=wk(t)),r.indexOf(n)>=0)u=r.indexOf(n);else{const y=Math.min(i.slidesPerGroupSkip,l);u=y+Math.floor((l-y)/i.slidesPerGroup)}if(u>=r.length&&(u=r.length-1),l===s&&!t.params.loop){u!==a&&(t.snapIndex=u,t.emit("snapIndexChange"));return}if(l===s&&t.params.loop&&t.virtual&&t.params.virtual.enabled){t.realIndex=d(l);return}const f=t.grid&&i.grid&&i.grid.rows>1;let h;if(t.virtual&&i.virtual.enabled&&i.loop)h=d(l);else if(f){const y=t.slides.filter(g=>g.column===l)[0];let w=parseInt(y.getAttribute("data-swiper-slide-index"),10);Number.isNaN(w)&&(w=Math.max(t.slides.indexOf(y),0)),h=Math.floor(w/i.grid.rows)}else if(t.slides[l]){const y=t.slides[l].getAttribute("data-swiper-slide-index");y?h=parseInt(y,10):h=l}else h=l;Object.assign(t,{previousSnapIndex:a,snapIndex:u,previousRealIndex:o,realIndex:h,previousIndex:s,activeIndex:l}),t.initialized&&Vd(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(o!==h&&t.emit("realIndexChange"),t.emit("slideChange"))}function Sk(e,t){const n=this,r=n.params;let i=e.closest(`.${r.slideClass}, swiper-slide`);!i&&n.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach(a=>{!i&&a.matches&&a.matches(`.${r.slideClass}, swiper-slide`)&&(i=a)});let s=!1,o;if(i){for(let a=0;al?d=l:r&&eo?a="next":s"u"&&(t=s.params.speed);const g=Math.min(s.params.slidesPerGroupSkip,o);let k=g+Math.floor((o-g)/s.params.slidesPerGroup);k>=l.length&&(k=l.length-1);const c=-l[k];if(a.normalizeSlideIndex)for(let m=0;m=S&&x=S&&x=S&&(o=m)}if(s.initialized&&o!==f&&(!s.allowSlideNext&&(h?c>s.translate&&c>s.minTranslate():cs.translate&&c>s.maxTranslate()&&(f||0)!==o))return!1;o!==(d||0)&&n&&s.emit("beforeSlideChangeStart"),s.updateProgress(c);let p;if(o>f?p="next":o0?(s._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{y[m?"scrollLeft":"scrollTop"]=x})):y[m?"scrollLeft":"scrollTop"]=x,S&&requestAnimationFrame(()=>{s.wrapperEl.style.scrollSnapType="",s._immediateVirtual=!1})}else{if(!s.support.smoothScroll)return R0({swiper:s,targetPosition:x,side:m?"left":"top"}),!0;y.scrollTo({[m?"left":"top"]:x,behavior:"smooth"})}return!0}return s.setTransition(t),s.setTranslate(c),s.updateActiveIndex(o),s.updateSlidesClasses(),s.emit("beforeTransitionStart",t,r),s.transitionStart(n,p),t===0?s.transitionEnd(n,p):s.animating||(s.animating=!0,s.onSlideToWrapperTransitionEnd||(s.onSlideToWrapperTransitionEnd=function(x){!s||s.destroyed||x.target===this&&(s.wrapperEl.removeEventListener("transitionend",s.onSlideToWrapperTransitionEnd),s.onSlideToWrapperTransitionEnd=null,delete s.onSlideToWrapperTransitionEnd,s.transitionEnd(n,p))}),s.wrapperEl.addEventListener("transitionend",s.onSlideToWrapperTransitionEnd)),!0}function Lk(e,t,n,r){e===void 0&&(e=0),n===void 0&&(n=!0),typeof e=="string"&&(e=parseInt(e,10));const i=this;if(i.destroyed)return;typeof t>"u"&&(t=i.params.speed);const s=i.grid&&i.params.grid&&i.params.grid.rows>1;let o=e;if(i.params.loop)if(i.virtual&&i.params.virtual.enabled)o=o+i.virtual.slidesBefore;else{let a;if(s){const h=o*i.params.grid.rows;a=i.slides.filter(y=>y.getAttribute("data-swiper-slide-index")*1===h)[0].column}else a=i.getSlideIndexByData(o);const l=s?Math.ceil(i.slides.length/i.params.grid.rows):i.slides.length,{centeredSlides:u}=i.params;let d=i.params.slidesPerView;d==="auto"?d=i.slidesPerViewDynamic():(d=Math.ceil(parseFloat(i.params.slidesPerView,10)),u&&d%2===0&&(d=d+1));let f=l-ay.getAttribute("data-swiper-slide-index")*1===h)[0].column}else o=i.getSlideIndexByData(o)}return requestAnimationFrame(()=>{i.slideTo(o,t,n,r)}),i}function Ik(e,t,n){t===void 0&&(t=!0);const r=this,{enabled:i,params:s,animating:o}=r;if(!i||r.destroyed)return r;typeof e>"u"&&(e=r.params.speed);let a=s.slidesPerGroup;s.slidesPerView==="auto"&&s.slidesPerGroup===1&&s.slidesPerGroupAuto&&(a=Math.max(r.slidesPerViewDynamic("current",!0),1));const l=r.activeIndex{r.slideTo(r.activeIndex+l,e,t,n)}),!0}return s.rewind&&r.isEnd?r.slideTo(0,e,t,n):r.slideTo(r.activeIndex+l,e,t,n)}function jk(e,t,n){t===void 0&&(t=!0);const r=this,{params:i,snapGrid:s,slidesGrid:o,rtlTranslate:a,enabled:l,animating:u}=r;if(!l||r.destroyed)return r;typeof e>"u"&&(e=r.params.speed);const d=r.virtual&&i.virtual.enabled;if(i.loop){if(u&&!d&&i.loopPreventsSliding)return!1;r.loopFix({direction:"prev"}),r._clientLeft=r.wrapperEl.clientLeft}const f=a?r.translate:-r.translate;function h(c){return c<0?-Math.floor(Math.abs(c)):Math.floor(c)}const y=h(f),w=s.map(c=>h(c));let g=s[w.indexOf(y)-1];if(typeof g>"u"&&i.cssMode){let c;s.forEach((p,m)=>{y>=p&&(c=m)}),typeof c<"u"&&(g=s[c>0?c-1:c])}let k=0;if(typeof g<"u"&&(k=o.indexOf(g),k<0&&(k=r.activeIndex-1),i.slidesPerView==="auto"&&i.slidesPerGroup===1&&i.slidesPerGroupAuto&&(k=k-r.slidesPerViewDynamic("previous",!0)+1,k=Math.max(k,0))),i.rewind&&r.isBeginning){const c=r.params.virtual&&r.params.virtual.enabled&&r.virtual?r.virtual.slides.length-1:r.slides.length-1;return r.slideTo(c,e,t,n)}else if(i.loop&&r.activeIndex===0&&i.cssMode)return requestAnimationFrame(()=>{r.slideTo(k,e,t,n)}),!0;return r.slideTo(k,e,t,n)}function zk(e,t,n){t===void 0&&(t=!0);const r=this;if(!r.destroyed)return typeof e>"u"&&(e=r.params.speed),r.slideTo(r.activeIndex,e,t,n)}function Nk(e,t,n,r){t===void 0&&(t=!0),r===void 0&&(r=.5);const i=this;if(i.destroyed)return;typeof e>"u"&&(e=i.params.speed);let s=i.activeIndex;const o=Math.min(i.params.slidesPerGroupSkip,s),a=o+Math.floor((s-o)/i.params.slidesPerGroup),l=i.rtlTranslate?i.translate:-i.translate;if(l>=i.snapGrid[a]){const u=i.snapGrid[a],d=i.snapGrid[a+1];l-u>(d-u)*r&&(s+=i.params.slidesPerGroup)}else{const u=i.snapGrid[a-1],d=i.snapGrid[a];l-u<=(d-u)*r&&(s-=i.params.slidesPerGroup)}return s=Math.max(s,0),s=Math.min(s,i.slidesGrid.length-1),i.slideTo(s,e,t,n)}function Fk(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:n}=e,r=t.slidesPerView==="auto"?e.slidesPerViewDynamic():t.slidesPerView;let i=e.clickedIndex,s;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;s=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ie.slides.length-e.loopedSlides+r/2?(e.loopFix(),i=e.getSlideIndex(wn(n,`${o}[data-swiper-slide-index="${s}"]`)[0]),Pa(()=>{e.slideTo(i)})):e.slideTo(i):i>e.slides.length-r?(e.loopFix(),i=e.getSlideIndex(wn(n,`${o}[data-swiper-slide-index="${s}"]`)[0]),Pa(()=>{e.slideTo(i)})):e.slideTo(i)}else e.slideTo(i)}var Yk={slideTo:Rk,slideToLoop:Lk,slideNext:Ik,slidePrev:jk,slideReset:zk,slideToClosest:Nk,slideToClickedSlide:Fk};function Uk(e){const t=this,{params:n,slidesEl:r}=t;if(!n.loop||t.virtual&&t.params.virtual.enabled)return;const i=()=>{wn(r,`.${n.slideClass}, swiper-slide`).forEach((f,h)=>{f.setAttribute("data-swiper-slide-index",h)})},s=t.grid&&n.grid&&n.grid.rows>1,o=n.slidesPerGroup*(s?n.grid.rows:1),a=t.slides.length%o!==0,l=s&&t.slides.length%n.grid.rows!==0,u=d=>{for(let f=0;f1;u.length"u"?s=l.getSlideIndex(u.filter(D=>D.classList.contains(y.slideActiveClass))[0]):S=s;const M=r==="next"||!r,_=r==="prev"||!r;let T=0,j=0;const P=p?Math.ceil(u.length/y.grid.rows):u.length,A=(p?u[s].column:s)+(w&&typeof i>"u"?-g/2+.5:0);if(A=0;re-=1)u[re].column===B&&m.push(re)}else m.push(P-L-1)}}else if(A+g>P-c){j=Math.max(A-(P-c*2),k);for(let D=0;D{B.column===L&&x.push(re)}):x.push(L)}}if(l.__preventObserver__=!0,requestAnimationFrame(()=>{l.__preventObserver__=!1}),_&&m.forEach(D=>{u[D].swiperLoopMoveDOM=!0,h.prepend(u[D]),u[D].swiperLoopMoveDOM=!1}),M&&x.forEach(D=>{u[D].swiperLoopMoveDOM=!0,h.append(u[D]),u[D].swiperLoopMoveDOM=!1}),l.recalcSlides(),y.slidesPerView==="auto"?l.updateSlides():p&&(m.length>0&&_||x.length>0&&M)&&l.slides.forEach((D,L)=>{l.grid.updateSlide(L,D,l.slides)}),y.watchSlidesProgress&&l.updateSlidesOffset(),n){if(m.length>0&&_){if(typeof t>"u"){const D=l.slidesGrid[S],B=l.slidesGrid[S+T]-D;a?l.setTranslate(l.translate-B):(l.slideTo(S+Math.ceil(T),0,!1,!0),i&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-B,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-B))}else if(i){const D=p?m.length/y.grid.rows:m.length;l.slideTo(l.activeIndex+D,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(x.length>0&&M)if(typeof t>"u"){const D=l.slidesGrid[S],B=l.slidesGrid[S-j]-D;a?l.setTranslate(l.translate-B):(l.slideTo(S-j,0,!1,!0),i&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-B,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-B))}else{const D=p?x.length/y.grid.rows:x.length;l.slideTo(l.activeIndex-D,0,!1,!0)}}if(l.allowSlidePrev=d,l.allowSlideNext=f,l.controller&&l.controller.control&&!o){const D={slideRealIndex:t,direction:r,setTranslate:i,activeSlideIndex:s,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach(L=>{!L.destroyed&&L.params.loop&&L.loopFix({...D,slideTo:L.params.slidesPerView===y.slidesPerView?n:!1})}):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...D,slideTo:l.controller.control.params.slidesPerView===y.slidesPerView?n:!1})}l.emit("loopFix")}function Wk(){const e=this,{params:t,slidesEl:n}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const r=[];e.slides.forEach(i=>{const s=typeof i.swiperSlideIndex>"u"?i.getAttribute("data-swiper-slide-index")*1:i.swiperSlideIndex;r[s]=i}),e.slides.forEach(i=>{i.removeAttribute("data-swiper-slide-index")}),r.forEach(i=>{n.append(i)}),e.recalcSlides(),e.slideTo(e.realIndex,0)}var Hk={loopCreate:Uk,loopFix:Bk,loopDestroy:Wk};function Vk(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const n=t.params.touchEventsTarget==="container"?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),n.style.cursor="move",n.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1})}function Gk(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e[e.params.touchEventsTarget==="container"?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1}))}var $k={setGrabCursor:Vk,unsetGrabCursor:Gk};function Qk(e,t){t===void 0&&(t=this);function n(r){if(!r||r===Er()||r===Dt())return null;r.assignedSlot&&(r=r.assignedSlot);const i=r.closest(e);return!i&&!r.getRootNode?null:i||n(r.getRootNode().host)}return n(t)}function xh(e,t,n){const r=Dt(),{params:i}=e,s=i.edgeSwipeDetection,o=i.edgeSwipeThreshold;return s&&(n<=o||n>=r.innerWidth-o)?s==="prevent"?(t.preventDefault(),!0):!1:!0}function Xk(e){const t=this,n=Er();let r=e;r.originalEvent&&(r=r.originalEvent);const i=t.touchEventsData;if(r.type==="pointerdown"){if(i.pointerId!==null&&i.pointerId!==r.pointerId)return;i.pointerId=r.pointerId}else r.type==="touchstart"&&r.targetTouches.length===1&&(i.touchId=r.targetTouches[0].identifier);if(r.type==="touchstart"){xh(t,r,r.targetTouches[0].pageX);return}const{params:s,touches:o,enabled:a}=t;if(!a||!s.simulateTouch&&r.pointerType==="mouse"||t.animating&&s.preventInteractionOnTransition)return;!t.animating&&s.cssMode&&s.loop&&t.loopFix();let l=r.target;if(s.touchEventsTarget==="wrapper"&&!t.wrapperEl.contains(l)||"which"in r&&r.which===3||"button"in r&&r.button>0||i.isTouched&&i.isMoved)return;const u=!!s.noSwipingClass&&s.noSwipingClass!=="",d=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&d&&(l=d[0]);const f=s.noSwipingSelector?s.noSwipingSelector:`.${s.noSwipingClass}`,h=!!(r.target&&r.target.shadowRoot);if(s.noSwiping&&(h?Qk(f,l):l.closest(f))){t.allowClick=!0;return}if(s.swipeHandler&&!l.closest(s.swipeHandler))return;o.currentX=r.pageX,o.currentY=r.pageY;const y=o.currentX,w=o.currentY;if(!xh(t,r,y))return;Object.assign(i,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=y,o.startY=w,i.touchStartTime=Ma(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,s.threshold>0&&(i.allowThresholdMove=!1);let g=!0;l.matches(i.focusableElements)&&(g=!1,l.nodeName==="SELECT"&&(i.isTouched=!1)),n.activeElement&&n.activeElement.matches(i.focusableElements)&&n.activeElement!==l&&n.activeElement.blur();const k=g&&t.allowTouchMove&&s.touchStartPreventDefault;(s.touchStartForcePreventDefault||k)&&!l.isContentEditable&&r.preventDefault(),s.freeMode&&s.freeMode.enabled&&t.freeMode&&t.animating&&!s.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function Kk(e){const t=Er(),n=this,r=n.touchEventsData,{params:i,touches:s,rtlTranslate:o,enabled:a}=n;if(!a||!i.simulateTouch&&e.pointerType==="mouse")return;let l=e;if(l.originalEvent&&(l=l.originalEvent),l.type==="pointermove"&&(r.touchId!==null||l.pointerId!==r.pointerId))return;let u;if(l.type==="touchmove"){if(u=[...l.changedTouches].filter(M=>M.identifier===r.touchId)[0],!u||u.identifier!==r.touchId)return}else u=l;if(!r.isTouched){r.startMoving&&r.isScrolling&&n.emit("touchMoveOpposite",l);return}const d=u.pageX,f=u.pageY;if(l.preventedByNestedSwiper){s.startX=d,s.startY=f;return}if(!n.allowTouchMove){l.target.matches(r.focusableElements)||(n.allowClick=!1),r.isTouched&&(Object.assign(s,{startX:d,startY:f,currentX:d,currentY:f}),r.touchStartTime=Ma());return}if(i.touchReleaseOnEdges&&!i.loop){if(n.isVertical()){if(fs.startY&&n.translate>=n.minTranslate()){r.isTouched=!1,r.isMoved=!1;return}}else if(ds.startX&&n.translate>=n.minTranslate())return}if(t.activeElement&&l.target===t.activeElement&&l.target.matches(r.focusableElements)){r.isMoved=!0,n.allowClick=!1;return}r.allowTouchCallbacks&&n.emit("touchMove",l),s.previousX=s.currentX,s.previousY=s.currentY,s.currentX=d,s.currentY=f;const h=s.currentX-s.startX,y=s.currentY-s.startY;if(n.params.threshold&&Math.sqrt(h**2+y**2)"u"){let M;n.isHorizontal()&&s.currentY===s.startY||n.isVertical()&&s.currentX===s.startX?r.isScrolling=!1:h*h+y*y>=25&&(M=Math.atan2(Math.abs(y),Math.abs(h))*180/Math.PI,r.isScrolling=n.isHorizontal()?M>i.touchAngle:90-M>i.touchAngle)}if(r.isScrolling&&n.emit("touchMoveOpposite",l),typeof r.startMoving>"u"&&(s.currentX!==s.startX||s.currentY!==s.startY)&&(r.startMoving=!0),r.isScrolling||l.type==="touchmove"&&r.preventTouchMoveFromPointerMove){r.isTouched=!1;return}if(!r.startMoving)return;n.allowClick=!1,!i.cssMode&&l.cancelable&&l.preventDefault(),i.touchMoveStopPropagation&&!i.nested&&l.stopPropagation();let w=n.isHorizontal()?h:y,g=n.isHorizontal()?s.currentX-s.previousX:s.currentY-s.previousY;i.oneWayMovement&&(w=Math.abs(w)*(o?1:-1),g=Math.abs(g)*(o?1:-1)),s.diff=w,w*=i.touchRatio,o&&(w=-w,g=-g);const k=n.touchesDirection;n.swipeDirection=w>0?"prev":"next",n.touchesDirection=g>0?"prev":"next";const c=n.params.loop&&!i.cssMode,p=n.touchesDirection==="next"&&n.allowSlideNext||n.touchesDirection==="prev"&&n.allowSlidePrev;if(!r.isMoved){if(c&&p&&n.loopFix({direction:n.swipeDirection}),r.startTranslate=n.getTranslate(),n.setTransition(0),n.animating){const M=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});n.wrapperEl.dispatchEvent(M)}r.allowMomentumBounce=!1,i.grabCursor&&(n.allowSlideNext===!0||n.allowSlidePrev===!0)&&n.setGrabCursor(!0),n.emit("sliderFirstMove",l)}let m;if(new Date().getTime(),r.isMoved&&r.allowThresholdMove&&k!==n.touchesDirection&&c&&p&&Math.abs(w)>=1){Object.assign(s,{startX:d,startY:f,currentX:d,currentY:f,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,r.startTranslate=r.currentTranslate;return}n.emit("sliderMove",l),r.isMoved=!0,r.currentTranslate=w+r.startTranslate;let x=!0,S=i.resistanceRatio;if(i.touchReleaseOnEdges&&(S=0),w>0?(c&&p&&!m&&r.allowThresholdMove&&r.currentTranslate>(i.centeredSlides?n.minTranslate()-n.slidesSizesGrid[n.activeIndex+1]:n.minTranslate())&&n.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>n.minTranslate()&&(x=!1,i.resistance&&(r.currentTranslate=n.minTranslate()-1+(-n.minTranslate()+r.startTranslate+w)**S))):w<0&&(c&&p&&!m&&r.allowThresholdMove&&r.currentTranslate<(i.centeredSlides?n.maxTranslate()+n.slidesSizesGrid[n.slidesSizesGrid.length-1]:n.maxTranslate())&&n.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:n.slides.length-(i.slidesPerView==="auto"?n.slidesPerViewDynamic():Math.ceil(parseFloat(i.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),!n.allowSlidePrev&&!n.allowSlideNext&&(r.currentTranslate=r.startTranslate),i.threshold>0)if(Math.abs(w)>i.threshold||r.allowThresholdMove){if(!r.allowThresholdMove){r.allowThresholdMove=!0,s.startX=s.currentX,s.startY=s.currentY,r.currentTranslate=r.startTranslate,s.diff=n.isHorizontal()?s.currentX-s.startX:s.currentY-s.startY;return}}else{r.currentTranslate=r.startTranslate;return}!i.followFinger||i.cssMode||((i.freeMode&&i.freeMode.enabled&&n.freeMode||i.watchSlidesProgress)&&(n.updateActiveIndex(),n.updateSlidesClasses()),i.freeMode&&i.freeMode.enabled&&n.freeMode&&n.freeMode.onTouchMove(),n.updateProgress(r.currentTranslate),n.setTranslate(r.currentTranslate))}function Zk(e){const t=this,n=t.touchEventsData;let r=e;r.originalEvent&&(r=r.originalEvent);let i;if(r.type==="touchend"||r.type==="touchcancel"){if(i=[...r.changedTouches].filter(S=>S.identifier===n.touchId)[0],!i||i.identifier!==n.touchId)return}else{if(n.touchId!==null||r.pointerId!==n.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)&&!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return;n.pointerId=null,n.touchId=null;const{params:o,touches:a,rtlTranslate:l,slidesGrid:u,enabled:d}=t;if(!d||!o.simulateTouch&&r.pointerType==="mouse")return;if(n.allowTouchCallbacks&&t.emit("touchEnd",r),n.allowTouchCallbacks=!1,!n.isTouched){n.isMoved&&o.grabCursor&&t.setGrabCursor(!1),n.isMoved=!1,n.startMoving=!1;return}o.grabCursor&&n.isMoved&&n.isTouched&&(t.allowSlideNext===!0||t.allowSlidePrev===!0)&&t.setGrabCursor(!1);const f=Ma(),h=f-n.touchStartTime;if(t.allowClick){const S=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(S&&S[0]||r.target,S),t.emit("tap click",r),h<300&&f-n.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(n.lastClickTime=Ma(),Pa(()=>{t.destroyed||(t.allowClick=!0)}),!n.isTouched||!n.isMoved||!t.swipeDirection||a.diff===0&&!n.loopSwapReset||n.currentTranslate===n.startTranslate&&!n.loopSwapReset){n.isTouched=!1,n.isMoved=!1,n.startMoving=!1;return}n.isTouched=!1,n.isMoved=!1,n.startMoving=!1;let y;if(o.followFinger?y=l?t.translate:-t.translate:y=-n.currentTranslate,o.cssMode)return;if(o.freeMode&&o.freeMode.enabled){t.freeMode.onTouchEnd({currentPos:y});return}const w=y>=-t.maxTranslate()&&!t.params.loop;let g=0,k=t.slidesSizesGrid[0];for(let S=0;S=u[S]&&y=u[S])&&(g=S,k=u[u.length-1]-u[u.length-2])}let c=null,p=null;o.rewind&&(t.isBeginning?p=o.virtual&&o.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(c=0));const m=(y-u[g])/k,x=go.longSwipesMs){if(!o.longSwipes){t.slideTo(t.activeIndex);return}t.swipeDirection==="next"&&(m>=o.longSwipesRatio?t.slideTo(o.rewind&&t.isEnd?c:g+x):t.slideTo(g)),t.swipeDirection==="prev"&&(m>1-o.longSwipesRatio?t.slideTo(g+x):p!==null&&m<0&&Math.abs(m)>o.longSwipesRatio?t.slideTo(p):t.slideTo(g))}else{if(!o.shortSwipes){t.slideTo(t.activeIndex);return}t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(g+x):t.slideTo(g):(t.swipeDirection==="next"&&t.slideTo(c!==null?c:g+x),t.swipeDirection==="prev"&&t.slideTo(p!==null?p:g))}}function Sh(){const e=this,{params:t,el:n}=e;if(n&&n.offsetWidth===0)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:r,allowSlidePrev:i,snapGrid:s}=e,o=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const a=o&&t.loop;(t.slidesPerView==="auto"||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides&&!a?e.slideTo(e.slides.length-1,0,!1,!0):e.params.loop&&!o?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout(()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()},500)),e.allowSlidePrev=i,e.allowSlideNext=r,e.params.watchOverflow&&s!==e.snapGrid&&e.checkOverflow()}function Jk(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function qk(){const e=this,{wrapperEl:t,rtlTranslate:n,enabled:r}=e;if(!r)return;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,e.translate===0&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();let i;const s=e.maxTranslate()-e.minTranslate();s===0?i=0:i=(e.translate-e.minTranslate())/s,i!==e.progress&&e.updateProgress(n?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function eC(e){const t=this;Qo(t,e.target),!(t.params.cssMode||t.params.slidesPerView!=="auto"&&!t.params.autoHeight)&&t.update()}function tC(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const N0=(e,t)=>{const n=Er(),{params:r,el:i,wrapperEl:s,device:o}=e,a=!!r.nested,l=t==="on"?"addEventListener":"removeEventListener",u=t;n[l]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:a}),i[l]("touchstart",e.onTouchStart,{passive:!1}),i[l]("pointerdown",e.onTouchStart,{passive:!1}),n[l]("touchmove",e.onTouchMove,{passive:!1,capture:a}),n[l]("pointermove",e.onTouchMove,{passive:!1,capture:a}),n[l]("touchend",e.onTouchEnd,{passive:!0}),n[l]("pointerup",e.onTouchEnd,{passive:!0}),n[l]("pointercancel",e.onTouchEnd,{passive:!0}),n[l]("touchcancel",e.onTouchEnd,{passive:!0}),n[l]("pointerout",e.onTouchEnd,{passive:!0}),n[l]("pointerleave",e.onTouchEnd,{passive:!0}),n[l]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&i[l]("click",e.onClick,!0),r.cssMode&&s[l]("scroll",e.onScroll),r.updateOnWindowResize?e[u](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",Sh,!0):e[u]("observerUpdate",Sh,!0),i[l]("load",e.onLoad,{capture:!0})};function nC(){const e=this,{params:t}=e;e.onTouchStart=Xk.bind(e),e.onTouchMove=Kk.bind(e),e.onTouchEnd=Zk.bind(e),e.onDocumentTouchStart=tC.bind(e),t.cssMode&&(e.onScroll=qk.bind(e)),e.onClick=Jk.bind(e),e.onLoad=eC.bind(e),N0(e,"on")}function rC(){N0(this,"off")}var iC={attachEvents:nC,detachEvents:rC};const kh=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;function sC(){const e=this,{realIndex:t,initialized:n,params:r,el:i}=e,s=r.breakpoints;if(!s||s&&Object.keys(s).length===0)return;const o=e.getBreakpoint(s,e.params.breakpointsBase,e.el);if(!o||e.currentBreakpoint===o)return;const l=(o in s?s[o]:void 0)||e.originalParams,u=kh(e,r),d=kh(e,l),f=e.params.grabCursor,h=l.grabCursor,y=r.enabled;u&&!d?(i.classList.remove(`${r.containerModifierClass}grid`,`${r.containerModifierClass}grid-column`),e.emitContainerClasses()):!u&&d&&(i.classList.add(`${r.containerModifierClass}grid`),(l.grid.fill&&l.grid.fill==="column"||!l.grid.fill&&r.grid.fill==="column")&&i.classList.add(`${r.containerModifierClass}grid-column`),e.emitContainerClasses()),f&&!h?e.unsetGrabCursor():!f&&h&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(m=>{if(typeof l[m]>"u")return;const x=r[m]&&r[m].enabled,S=l[m]&&l[m].enabled;x&&!S&&e[m].disable(),!x&&S&&e[m].enable()});const w=l.direction&&l.direction!==r.direction,g=r.loop&&(l.slidesPerView!==r.slidesPerView||w),k=r.loop;w&&n&&e.changeDirection(),Ot(e.params,l);const c=e.params.enabled,p=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),y&&!c?e.disable():!y&&c&&e.enable(),e.currentBreakpoint=o,e.emit("_beforeBreakpoint",l),n&&(g?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!k&&p?(e.loopCreate(t),e.updateSlides()):k&&!p&&e.loopDestroy()),e.emit("breakpoint",l)}function oC(e,t,n){if(t===void 0&&(t="window"),!e||t==="container"&&!n)return;let r=!1;const i=Dt(),s=t==="window"?i.innerHeight:n.clientHeight,o=Object.keys(e).map(a=>{if(typeof a=="string"&&a.indexOf("@")===0){const l=parseFloat(a.substr(1));return{value:s*l,point:a}}return{value:a,point:a}});o.sort((a,l)=>parseInt(a.value,10)-parseInt(l.value,10));for(let a=0;a{typeof r=="object"?Object.keys(r).forEach(i=>{r[i]&&n.push(t+i)}):typeof r=="string"&&n.push(t+r)}),n}function uC(){const e=this,{classNames:t,params:n,rtl:r,el:i,device:s}=e,o=lC(["initialized",n.direction,{"free-mode":e.params.freeMode&&n.freeMode.enabled},{autoheight:n.autoHeight},{rtl:r},{grid:n.grid&&n.grid.rows>1},{"grid-column":n.grid&&n.grid.rows>1&&n.grid.fill==="column"},{android:s.android},{ios:s.ios},{"css-mode":n.cssMode},{centered:n.cssMode&&n.centeredSlides},{"watch-progress":n.watchSlidesProgress}],n.containerModifierClass);t.push(...o),i.classList.add(...t),e.emitContainerClasses()}function dC(){const e=this,{el:t,classNames:n}=e;t.classList.remove(...n),e.emitContainerClasses()}var cC={addClasses:uC,removeClasses:dC};function fC(){const e=this,{isLocked:t,params:n}=e,{slidesOffsetBefore:r}=n;if(r){const i=e.slides.length-1,s=e.slidesGrid[i]+e.slidesSizesGrid[i]+r*2;e.isLocked=e.size>s}else e.isLocked=e.snapGrid.length===1;n.allowSlideNext===!0&&(e.allowSlideNext=!e.isLocked),n.allowSlidePrev===!0&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}var pC={checkOverflow:fC},Gd={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function hC(e,t){return function(r){r===void 0&&(r={});const i=Object.keys(r)[0],s=r[i];if(typeof s!="object"||s===null){Ot(t,r);return}if(e[i]===!0&&(e[i]={enabled:!0}),i==="navigation"&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),!(i in e&&"enabled"in s)){Ot(t,r);return}typeof e[i]=="object"&&!("enabled"in e[i])&&(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),Ot(t,r)}}const Cu={eventsEmitter:ck,update:kk,translate:Pk,transition:Ok,slide:Yk,loop:Hk,grabCursor:$k,events:iC,breakpoints:aC,checkOverflow:pC,classes:cC},Eu={};let cf=class Mn{constructor(){let t,n;for(var r=arguments.length,i=new Array(r),s=0;s1){const d=[];return o.querySelectorAll(n.el).forEach(f=>{const h=Ot({},n,{el:f});d.push(new Mn(h))}),d}const a=this;a.__swiper__=!0,a.support=I0(),a.device=j0({userAgent:n.userAgent}),a.browser=lk(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],n.modules&&Array.isArray(n.modules)&&a.modules.push(...n.modules);const l={};a.modules.forEach(d=>{d({params:n,swiper:a,extendParams:hC(n,l),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})});const u=Ot({},Gd,l);return a.params=Ot({},u,Eu,n),a.originalParams=Ot({},a.params),a.passedParams=Ot({},n),a.params&&a.params.on&&Object.keys(a.params.on).forEach(d=>{a.on(d,a.params.on[d])}),a.params&&a.params.onAny&&a.onAny(a.params.onAny),Object.assign(a,{enabled:a.params.enabled,el:t,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal(){return a.params.direction==="horizontal"},isVertical(){return a.params.direction==="vertical"},activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:a.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:a.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),a.emit("_swiper"),a.params.init&&a.init(),a}getDirectionLabel(t){return this.isHorizontal()?t:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[t]}getSlideIndex(t){const{slidesEl:n,params:r}=this,i=wn(n,`.${r.slideClass}, swiper-slide`),s=_a(i[0]);return _a(t)-s}getSlideIndexByData(t){return this.getSlideIndex(this.slides.filter(n=>n.getAttribute("data-swiper-slide-index")*1===t)[0])}recalcSlides(){const t=this,{slidesEl:n,params:r}=t;t.slides=wn(n,`.${r.slideClass}, swiper-slide`)}enable(){const t=this;t.enabled||(t.enabled=!0,t.params.grabCursor&&t.setGrabCursor(),t.emit("enable"))}disable(){const t=this;t.enabled&&(t.enabled=!1,t.params.grabCursor&&t.unsetGrabCursor(),t.emit("disable"))}setProgress(t,n){const r=this;t=Math.min(Math.max(t,0),1);const i=r.minTranslate(),o=(r.maxTranslate()-i)*t+i;r.translateTo(o,typeof n>"u"?0:n),r.updateActiveIndex(),r.updateSlidesClasses()}emitContainerClasses(){const t=this;if(!t.params._emitClasses||!t.el)return;const n=t.el.className.split(" ").filter(r=>r.indexOf("swiper")===0||r.indexOf(t.params.containerModifierClass)===0);t.emit("_containerClasses",n.join(" "))}getSlideClasses(t){const n=this;return n.destroyed?"":t.className.split(" ").filter(r=>r.indexOf("swiper-slide")===0||r.indexOf(n.params.slideClass)===0).join(" ")}emitSlidesClasses(){const t=this;if(!t.params._emitClasses||!t.el)return;const n=[];t.slides.forEach(r=>{const i=t.getSlideClasses(r);n.push({slideEl:r,classNames:i}),t.emit("_slideClass",r,i)}),t.emit("_slideClasses",n)}slidesPerViewDynamic(t,n){t===void 0&&(t="current"),n===void 0&&(n=!1);const r=this,{params:i,slides:s,slidesGrid:o,slidesSizesGrid:a,size:l,activeIndex:u}=r;let d=1;if(typeof i.slidesPerView=="number")return i.slidesPerView;if(i.centeredSlides){let f=s[u]?Math.ceil(s[u].swiperSlideSize):0,h;for(let y=u+1;yl&&(h=!0));for(let y=u-1;y>=0;y-=1)s[y]&&!h&&(f+=s[y].swiperSlideSize,d+=1,f>l&&(h=!0))}else if(t==="current")for(let f=u+1;f=0;f-=1)o[u]-o[f]{o.complete&&Qo(t,o)}),t.updateSize(),t.updateSlides(),t.updateProgress(),t.updateSlidesClasses();function i(){const o=t.rtlTranslate?t.translate*-1:t.translate,a=Math.min(Math.max(o,t.maxTranslate()),t.minTranslate());t.setTranslate(a),t.updateActiveIndex(),t.updateSlidesClasses()}let s;if(r.freeMode&&r.freeMode.enabled&&!r.cssMode)i(),r.autoHeight&&t.updateAutoHeight();else{if((r.slidesPerView==="auto"||r.slidesPerView>1)&&t.isEnd&&!r.centeredSlides){const o=t.virtual&&r.virtual.enabled?t.virtual.slides:t.slides;s=t.slideTo(o.length-1,0,!1,!0)}else s=t.slideTo(t.activeIndex,0,!1,!0);s||i()}r.watchOverflow&&n!==t.snapGrid&&t.checkOverflow(),t.emit("update")}changeDirection(t,n){n===void 0&&(n=!0);const r=this,i=r.params.direction;return t||(t=i==="horizontal"?"vertical":"horizontal"),t===i||t!=="horizontal"&&t!=="vertical"||(r.el.classList.remove(`${r.params.containerModifierClass}${i}`),r.el.classList.add(`${r.params.containerModifierClass}${t}`),r.emitContainerClasses(),r.params.direction=t,r.slides.forEach(s=>{t==="vertical"?s.style.width="":s.style.height=""}),r.emit("changeDirection"),n&&r.update()),r}changeLanguageDirection(t){const n=this;n.rtl&&t==="rtl"||!n.rtl&&t==="ltr"||(n.rtl=t==="rtl",n.rtlTranslate=n.params.direction==="horizontal"&&n.rtl,n.rtl?(n.el.classList.add(`${n.params.containerModifierClass}rtl`),n.el.dir="rtl"):(n.el.classList.remove(`${n.params.containerModifierClass}rtl`),n.el.dir="ltr"),n.update())}mount(t){const n=this;if(n.mounted)return!0;let r=t||n.params.el;if(typeof r=="string"&&(r=document.querySelector(r)),!r)return!1;r.swiper=n,r.parentNode&&r.parentNode.host&&r.parentNode.host.nodeName===n.params.swiperElementNodeName.toUpperCase()&&(n.isElement=!0);const i=()=>`.${(n.params.wrapperClass||"").trim().split(" ").join(".")}`;let o=(()=>r&&r.shadowRoot&&r.shadowRoot.querySelector?r.shadowRoot.querySelector(i()):wn(r,i())[0])();return!o&&n.params.createElements&&(o=Vs("div",n.params.wrapperClass),r.append(o),wn(r,`.${n.params.slideClass}`).forEach(a=>{o.append(a)})),Object.assign(n,{el:r,wrapperEl:o,slidesEl:n.isElement&&!r.parentNode.host.slideSlots?r.parentNode.host:o,hostEl:n.isElement?r.parentNode.host:r,mounted:!0,rtl:r.dir.toLowerCase()==="rtl"||ir(r,"direction")==="rtl",rtlTranslate:n.params.direction==="horizontal"&&(r.dir.toLowerCase()==="rtl"||ir(r,"direction")==="rtl"),wrongRTL:ir(o,"display")==="-webkit-box"}),!0}init(t){const n=this;if(n.initialized||n.mount(t)===!1)return n;n.emit("beforeInit"),n.params.breakpoints&&n.setBreakpoint(),n.addClasses(),n.updateSize(),n.updateSlides(),n.params.watchOverflow&&n.checkOverflow(),n.params.grabCursor&&n.enabled&&n.setGrabCursor(),n.params.loop&&n.virtual&&n.params.virtual.enabled?n.slideTo(n.params.initialSlide+n.virtual.slidesBefore,0,n.params.runCallbacksOnInit,!1,!0):n.slideTo(n.params.initialSlide,0,n.params.runCallbacksOnInit,!1,!0),n.params.loop&&n.loopCreate(),n.attachEvents();const i=[...n.el.querySelectorAll('[loading="lazy"]')];return n.isElement&&i.push(...n.hostEl.querySelectorAll('[loading="lazy"]')),i.forEach(s=>{s.complete?Qo(n,s):s.addEventListener("load",o=>{Qo(n,o.target)})}),Vd(n),n.initialized=!0,Vd(n),n.emit("init"),n.emit("afterInit"),n}destroy(t,n){t===void 0&&(t=!0),n===void 0&&(n=!0);const r=this,{params:i,el:s,wrapperEl:o,slides:a}=r;return typeof r.params>"u"||r.destroyed||(r.emit("beforeDestroy"),r.initialized=!1,r.detachEvents(),i.loop&&r.loopDestroy(),n&&(r.removeClasses(),s.removeAttribute("style"),o.removeAttribute("style"),a&&a.length&&a.forEach(l=>{l.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),l.removeAttribute("style"),l.removeAttribute("data-swiper-slide-index")})),r.emit("destroy"),Object.keys(r.eventsListeners).forEach(l=>{r.off(l)}),t!==!1&&(r.el.swiper=null,JS(r)),r.destroyed=!0),null}static extendDefaults(t){Ot(Eu,t)}static get extendedDefaults(){return Eu}static get defaults(){return Gd}static installModule(t){Mn.prototype.__modules__||(Mn.prototype.__modules__=[]);const n=Mn.prototype.__modules__;typeof t=="function"&&n.indexOf(t)<0&&n.push(t)}static use(t){return Array.isArray(t)?(t.forEach(n=>Mn.installModule(n)),Mn):(Mn.installModule(t),Mn)}};Object.keys(Cu).forEach(e=>{Object.keys(Cu[e]).forEach(t=>{cf.prototype[t]=Cu[e][t]})});cf.use([uk,dk]);const F0=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function $r(e){return typeof e=="object"&&e!==null&&e.constructor&&Object.prototype.toString.call(e).slice(8,-1)==="Object"&&!e.__swiper__}function Pi(e,t){const n=["__proto__","constructor","prototype"];Object.keys(t).filter(r=>n.indexOf(r)<0).forEach(r=>{typeof e[r]>"u"?e[r]=t[r]:$r(t[r])&&$r(e[r])&&Object.keys(t[r]).length>0?t[r].__swiper__?e[r]=t[r]:Pi(e[r],t[r]):e[r]=t[r]})}function Y0(e){return e===void 0&&(e={}),e.navigation&&typeof e.navigation.nextEl>"u"&&typeof e.navigation.prevEl>"u"}function U0(e){return e===void 0&&(e={}),e.pagination&&typeof e.pagination.el>"u"}function B0(e){return e===void 0&&(e={}),e.scrollbar&&typeof e.scrollbar.el>"u"}function W0(e){e===void 0&&(e="");const t=e.split(" ").map(r=>r.trim()).filter(r=>!!r),n=[];return t.forEach(r=>{n.indexOf(r)<0&&n.push(r)}),n.join(" ")}function mC(e){return e===void 0&&(e=""),e?e.includes("swiper-wrapper")?e:`swiper-wrapper ${e}`:"swiper-wrapper"}function gC(e){let{swiper:t,slides:n,passedParams:r,changedParams:i,nextEl:s,prevEl:o,scrollbarEl:a,paginationEl:l}=e;const u=i.filter(j=>j!=="children"&&j!=="direction"&&j!=="wrapperClass"),{params:d,pagination:f,navigation:h,scrollbar:y,virtual:w,thumbs:g}=t;let k,c,p,m,x,S,M,_;i.includes("thumbs")&&r.thumbs&&r.thumbs.swiper&&d.thumbs&&!d.thumbs.swiper&&(k=!0),i.includes("controller")&&r.controller&&r.controller.control&&d.controller&&!d.controller.control&&(c=!0),i.includes("pagination")&&r.pagination&&(r.pagination.el||l)&&(d.pagination||d.pagination===!1)&&f&&!f.el&&(p=!0),i.includes("scrollbar")&&r.scrollbar&&(r.scrollbar.el||a)&&(d.scrollbar||d.scrollbar===!1)&&y&&!y.el&&(m=!0),i.includes("navigation")&&r.navigation&&(r.navigation.prevEl||o)&&(r.navigation.nextEl||s)&&(d.navigation||d.navigation===!1)&&h&&!h.prevEl&&!h.nextEl&&(x=!0);const T=j=>{t[j]&&(t[j].destroy(),j==="navigation"?(t.isElement&&(t[j].prevEl.remove(),t[j].nextEl.remove()),d[j].prevEl=void 0,d[j].nextEl=void 0,t[j].prevEl=void 0,t[j].nextEl=void 0):(t.isElement&&t[j].el.remove(),d[j].el=void 0,t[j].el=void 0))};i.includes("loop")&&t.isElement&&(d.loop&&!r.loop?S=!0:!d.loop&&r.loop?M=!0:_=!0),u.forEach(j=>{if($r(d[j])&&$r(r[j]))Object.assign(d[j],r[j]),(j==="navigation"||j==="pagination"||j==="scrollbar")&&"enabled"in r[j]&&!r[j].enabled&&T(j);else{const P=r[j];(P===!0||P===!1)&&(j==="navigation"||j==="pagination"||j==="scrollbar")?P===!1&&T(j):d[j]=r[j]}}),u.includes("controller")&&!c&&t.controller&&t.controller.control&&d.controller&&d.controller.control&&(t.controller.control=d.controller.control),i.includes("children")&&n&&w&&d.virtual.enabled?(w.slides=n,w.update(!0)):i.includes("virtual")&&w&&d.virtual.enabled&&(n&&(w.slides=n),w.update(!0)),i.includes("children")&&n&&d.loop&&(_=!0),k&&g.init()&&g.update(!0),c&&(t.controller.control=d.controller.control),p&&(t.isElement&&(!l||typeof l=="string")&&(l=document.createElement("div"),l.classList.add("swiper-pagination"),l.part.add("pagination"),t.el.appendChild(l)),l&&(d.pagination.el=l),f.init(),f.render(),f.update()),m&&(t.isElement&&(!a||typeof a=="string")&&(a=document.createElement("div"),a.classList.add("swiper-scrollbar"),a.part.add("scrollbar"),t.el.appendChild(a)),a&&(d.scrollbar.el=a),y.init(),y.updateSize(),y.setTranslate()),x&&(t.isElement&&((!s||typeof s=="string")&&(s=document.createElement("div"),s.classList.add("swiper-button-next"),s.innerHTML=t.hostEl.constructor.nextButtonSvg,s.part.add("button-next"),t.el.appendChild(s)),(!o||typeof o=="string")&&(o=document.createElement("div"),o.classList.add("swiper-button-prev"),o.innerHTML=t.hostEl.constructor.prevButtonSvg,o.part.add("button-prev"),t.el.appendChild(o))),s&&(d.navigation.nextEl=s),o&&(d.navigation.prevEl=o),h.init(),h.update()),i.includes("allowSlideNext")&&(t.allowSlideNext=r.allowSlideNext),i.includes("allowSlidePrev")&&(t.allowSlidePrev=r.allowSlidePrev),i.includes("direction")&&t.changeDirection(r.direction,!1),(S||_)&&t.loopDestroy(),(M||_)&&t.loopCreate(),t.update()}function vC(e,t){e===void 0&&(e={}),t===void 0&&(t=!0);const n={on:{}},r={},i={};Pi(n,Gd),n._emitClasses=!0,n.init=!1;const s={},o=F0.map(l=>l.replace(/_/,"")),a=Object.assign({},e);return Object.keys(a).forEach(l=>{typeof e[l]>"u"||(o.indexOf(l)>=0?$r(e[l])?(n[l]={},i[l]={},Pi(n[l],e[l]),Pi(i[l],e[l])):(n[l]=e[l],i[l]=e[l]):l.search(/on[A-Z]/)===0&&typeof e[l]=="function"?t?r[`${l[2].toLowerCase()}${l.substr(3)}`]=e[l]:n.on[`${l[2].toLowerCase()}${l.substr(3)}`]=e[l]:s[l]=e[l])}),["navigation","pagination","scrollbar"].forEach(l=>{n[l]===!0&&(n[l]={}),n[l]===!1&&delete n[l]}),{params:n,passedParams:i,rest:s,events:r}}function yC(e,t){let{el:n,nextEl:r,prevEl:i,paginationEl:s,scrollbarEl:o,swiper:a}=e;Y0(t)&&r&&i&&(a.params.navigation.nextEl=r,a.originalParams.navigation.nextEl=r,a.params.navigation.prevEl=i,a.originalParams.navigation.prevEl=i),U0(t)&&s&&(a.params.pagination.el=s,a.originalParams.pagination.el=s),B0(t)&&o&&(a.params.scrollbar.el=o,a.originalParams.scrollbar.el=o),a.init(n)}function wC(e,t,n,r,i){const s=[];if(!t)return s;const o=l=>{s.indexOf(l)<0&&s.push(l)};if(n&&r){const l=r.map(i),u=n.map(i);l.join("")!==u.join("")&&o("children"),r.length!==n.length&&o("children")}return F0.filter(l=>l[0]==="_").map(l=>l.replace(/_/,"")).forEach(l=>{if(l in e&&l in t)if($r(e[l])&&$r(t[l])){const u=Object.keys(e[l]),d=Object.keys(t[l]);u.length!==d.length?o(l):(u.forEach(f=>{e[l][f]!==t[l][f]&&o(l)}),d.forEach(f=>{e[l][f]!==t[l][f]&&o(l)}))}else e[l]!==t[l]&&o(l)}),s}const xC=e=>{!e||e.destroyed||!e.params.virtual||e.params.virtual&&!e.params.virtual.enabled||(e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.parallax&&e.params.parallax&&e.params.parallax.enabled&&e.parallax.setTranslate())};function Oa(){return Oa=Object.assign?Object.assign.bind():function(e){for(var t=1;t{H0(n)?t.push(n):n.props&&n.props.children&&V0(n.props.children).forEach(r=>t.push(r))}),t}function SC(e){const t=[],n={"container-start":[],"container-end":[],"wrapper-start":[],"wrapper-end":[]};return ve.Children.toArray(e).forEach(r=>{if(H0(r))t.push(r);else if(r.props&&r.props.slot&&n[r.props.slot])n[r.props.slot].push(r);else if(r.props&&r.props.children){const i=V0(r.props.children);i.length>0?i.forEach(s=>t.push(s)):n["container-end"].push(r)}else n["container-end"].push(r)}),{slides:t,slots:n}}function kC(e,t,n){if(!n)return null;const r=d=>{let f=d;return d<0?f=t.length+d:f>=t.length&&(f=f-t.length),f},i=e.isHorizontal()?{[e.rtlTranslate?"right":"left"]:`${n.offset}px`}:{top:`${n.offset}px`},{from:s,to:o}=n,a=e.params.loop?-t.length:0,l=e.params.loop?t.length*2:t.length,u=[];for(let d=a;d=s&&d<=o&&u.push(t[r(d)]);return u.map((d,f)=>ve.cloneElement(d,{swiper:e,style:i,key:d.props.virtualIndex||d.key||`slide-${f}`}))}function Cs(e,t){return typeof window>"u"?R.useEffect(e,t):R.useLayoutEffect(e,t)}const Ch=R.createContext(null),CC=R.createContext(null),G0=R.forwardRef(function(e,t){let{className:n,tag:r="div",wrapperTag:i="div",children:s,onSwiper:o,...a}=e===void 0?{}:e,l=!1;const[u,d]=R.useState("swiper"),[f,h]=R.useState(null),[y,w]=R.useState(!1),g=R.useRef(!1),k=R.useRef(null),c=R.useRef(null),p=R.useRef(null),m=R.useRef(null),x=R.useRef(null),S=R.useRef(null),M=R.useRef(null),_=R.useRef(null),{params:T,passedParams:j,rest:P,events:U}=vC(a),{slides:A,slots:D}=SC(s),L=()=>{w(!y)};Object.assign(T.on,{_containerClasses(I,K){d(K)}});const B=()=>{Object.assign(T.on,U),l=!0;const I={...T};if(delete I.wrapperClass,c.current=new cf(I),c.current.virtual&&c.current.params.virtual.enabled){c.current.virtual.slides=A;const K={cache:!1,slides:A,renderExternal:h,renderExternalUpdate:!1};Pi(c.current.params.virtual,K),Pi(c.current.originalParams.virtual,K)}};k.current||B(),c.current&&c.current.on("_beforeBreakpoint",L);const re=()=>{l||!U||!c.current||Object.keys(U).forEach(I=>{c.current.on(I,U[I])})},we=()=>{!U||!c.current||Object.keys(U).forEach(I=>{c.current.off(I,U[I])})};R.useEffect(()=>()=>{c.current&&c.current.off("_beforeBreakpoint",L)}),R.useEffect(()=>{!g.current&&c.current&&(c.current.emitSlidesClasses(),g.current=!0)}),Cs(()=>{if(t&&(t.current=k.current),!!k.current)return c.current.destroyed&&B(),yC({el:k.current,nextEl:x.current,prevEl:S.current,paginationEl:M.current,scrollbarEl:_.current,swiper:c.current},T),o&&!c.current.destroyed&&o(c.current),()=>{c.current&&!c.current.destroyed&&c.current.destroy(!0,!1)}},[]),Cs(()=>{re();const I=wC(j,p.current,A,m.current,K=>K.key);return p.current=j,m.current=A,I.length&&c.current&&!c.current.destroyed&&gC({swiper:c.current,slides:A,passedParams:j,changedParams:I,nextEl:x.current,prevEl:S.current,scrollbarEl:_.current,paginationEl:M.current}),()=>{we()}}),Cs(()=>{xC(c.current)},[f]);function N(){return T.virtual?kC(c.current,A,f):A.map((I,K)=>ve.cloneElement(I,{swiper:c.current,swiperSlideIndex:K}))}return ve.createElement(r,Oa({ref:k,className:W0(`${u}${n?` ${n}`:""}`)},P),ve.createElement(CC.Provider,{value:c.current},D["container-start"],ve.createElement(i,{className:mC(T.wrapperClass)},D["wrapper-start"],N(),D["wrapper-end"]),Y0(T)&&ve.createElement(ve.Fragment,null,ve.createElement("div",{ref:S,className:"swiper-button-prev"}),ve.createElement("div",{ref:x,className:"swiper-button-next"})),B0(T)&&ve.createElement("div",{ref:_,className:"swiper-scrollbar"}),U0(T)&&ve.createElement("div",{ref:M,className:"swiper-pagination"}),D["container-end"]))});G0.displayName="Swiper";const $0=R.forwardRef(function(e,t){let{tag:n="div",children:r,className:i="",swiper:s,zoom:o,lazy:a,virtualIndex:l,swiperSlideIndex:u,...d}=e===void 0?{}:e;const f=R.useRef(null),[h,y]=R.useState("swiper-slide"),[w,g]=R.useState(!1);function k(x,S,M){S===f.current&&y(M)}Cs(()=>{if(typeof u<"u"&&(f.current.swiperSlideIndex=u),t&&(t.current=f.current),!(!f.current||!s)){if(s.destroyed){h!=="swiper-slide"&&y("swiper-slide");return}return s.on("_slideClass",k),()=>{s&&s.off("_slideClass",k)}}}),Cs(()=>{s&&f.current&&!s.destroyed&&y(s.getSlideClasses(f.current))},[s]);const c={isActive:h.indexOf("swiper-slide-active")>=0,isVisible:h.indexOf("swiper-slide-visible")>=0,isPrev:h.indexOf("swiper-slide-prev")>=0,isNext:h.indexOf("swiper-slide-next")>=0},p=()=>typeof r=="function"?r(c):r,m=()=>{g(!0)};return ve.createElement(n,Oa({ref:f,className:W0(`${h}${i?` ${i}`:""}`),"data-swiper-slide-index":l,onLoad:m},d),o&&ve.createElement(Ch.Provider,{value:c},ve.createElement("div",{className:"swiper-zoom-container","data-swiper-zoom":typeof o=="number"?o:void 0},p(),a&&!w&&ve.createElement("div",{className:"swiper-lazy-preloader"}))),!o&&ve.createElement(Ch.Provider,{value:c},p(),a&&!w&&ve.createElement("div",{className:"swiper-lazy-preloader"})))});$0.displayName="SwiperSlide";function Q0(e,t,n,r){return e.params.createElements&&Object.keys(r).forEach(i=>{if(!n[i]&&n.auto===!0){let s=wn(e.el,`.${r[i]}`)[0];s||(s=Vs("div",r[i]),s.className=r[i],e.el.append(s)),n[i]=s,t[i]=s}}),n}function ni(e){return e===void 0&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function EC(e){let{swiper:t,extendParams:n,on:r,emit:i}=e;const s="swiper-pagination";n({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:c=>c,formatFractionTotal:c=>c,bulletClass:`${s}-bullet`,bulletActiveClass:`${s}-bullet-active`,modifierClass:`${s}-`,currentClass:`${s}-current`,totalClass:`${s}-total`,hiddenClass:`${s}-hidden`,progressbarFillClass:`${s}-progressbar-fill`,progressbarOppositeClass:`${s}-progressbar-opposite`,clickableClass:`${s}-clickable`,lockClass:`${s}-lock`,horizontalClass:`${s}-horizontal`,verticalClass:`${s}-vertical`,paginationDisabledClass:`${s}-disabled`}}),t.pagination={el:null,bullets:[]};let o,a=0;function l(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&t.pagination.el.length===0}function u(c,p){const{bulletActiveClass:m}=t.params.pagination;c&&(c=c[`${p==="prev"?"previous":"next"}ElementSibling`],c&&(c.classList.add(`${m}-${p}`),c=c[`${p==="prev"?"previous":"next"}ElementSibling`],c&&c.classList.add(`${m}-${p}-${p}`)))}function d(c){const p=c.target.closest(ni(t.params.pagination.bulletClass));if(!p)return;c.preventDefault();const m=_a(p)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===m)return;t.slideToLoop(m)}else t.slideTo(m)}function f(){const c=t.rtl,p=t.params.pagination;if(l())return;let m=t.pagination.el;m=hn(m);let x,S;const M=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,_=t.params.loop?Math.ceil(M/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(S=t.previousRealIndex||0,x=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):typeof t.snapIndex<"u"?(x=t.snapIndex,S=t.previousSnapIndex):(S=t.previousIndex||0,x=t.activeIndex||0),p.type==="bullets"&&t.pagination.bullets&&t.pagination.bullets.length>0){const T=t.pagination.bullets;let j,P,U;if(p.dynamicBullets&&(o=Hd(T[0],t.isHorizontal()?"width":"height",!0),m.forEach(A=>{A.style[t.isHorizontal()?"width":"height"]=`${o*(p.dynamicMainBullets+4)}px`}),p.dynamicMainBullets>1&&S!==void 0&&(a+=x-(S||0),a>p.dynamicMainBullets-1?a=p.dynamicMainBullets-1:a<0&&(a=0)),j=Math.max(x-a,0),P=j+(Math.min(T.length,p.dynamicMainBullets)-1),U=(P+j)/2),T.forEach(A=>{const D=[...["","-next","-next-next","-prev","-prev-prev","-main"].map(L=>`${p.bulletActiveClass}${L}`)].map(L=>typeof L=="string"&&L.includes(" ")?L.split(" "):L).flat();A.classList.remove(...D)}),m.length>1)T.forEach(A=>{const D=_a(A);D===x?A.classList.add(...p.bulletActiveClass.split(" ")):t.isElement&&A.setAttribute("part","bullet"),p.dynamicBullets&&(D>=j&&D<=P&&A.classList.add(...`${p.bulletActiveClass}-main`.split(" ")),D===j&&u(A,"prev"),D===P&&u(A,"next"))});else{const A=T[x];if(A&&A.classList.add(...p.bulletActiveClass.split(" ")),t.isElement&&T.forEach((D,L)=>{D.setAttribute("part",L===x?"bullet-active":"bullet")}),p.dynamicBullets){const D=T[j],L=T[P];for(let B=j;B<=P;B+=1)T[B]&&T[B].classList.add(...`${p.bulletActiveClass}-main`.split(" "));u(D,"prev"),u(L,"next")}}if(p.dynamicBullets){const A=Math.min(T.length,p.dynamicMainBullets+4),D=(o*A-o)/2-U*o,L=c?"right":"left";T.forEach(B=>{B.style[t.isHorizontal()?L:"top"]=`${D}px`})}}m.forEach((T,j)=>{if(p.type==="fraction"&&(T.querySelectorAll(ni(p.currentClass)).forEach(P=>{P.textContent=p.formatFractionCurrent(x+1)}),T.querySelectorAll(ni(p.totalClass)).forEach(P=>{P.textContent=p.formatFractionTotal(_)})),p.type==="progressbar"){let P;p.progressbarOpposite?P=t.isHorizontal()?"vertical":"horizontal":P=t.isHorizontal()?"horizontal":"vertical";const U=(x+1)/_;let A=1,D=1;P==="horizontal"?A=U:D=U,T.querySelectorAll(ni(p.progressbarFillClass)).forEach(L=>{L.style.transform=`translate3d(0,0,0) scaleX(${A}) scaleY(${D})`,L.style.transitionDuration=`${t.params.speed}ms`})}p.type==="custom"&&p.renderCustom?(T.innerHTML=p.renderCustom(t,x+1,_),j===0&&i("paginationRender",T)):(j===0&&i("paginationRender",T),i("paginationUpdate",T)),t.params.watchOverflow&&t.enabled&&T.classList[t.isLocked?"add":"remove"](p.lockClass)})}function h(){const c=t.params.pagination;if(l())return;const p=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let m=t.pagination.el;m=hn(m);let x="";if(c.type==="bullets"){let S=t.params.loop?Math.ceil(p/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&S>p&&(S=p);for(let M=0;M${c.bulletElement}>`}c.type==="fraction"&&(c.renderFraction?x=c.renderFraction.call(t,c.currentClass,c.totalClass):x=` / `),c.type==="progressbar"&&(c.renderProgressbar?x=c.renderProgressbar.call(t,c.progressbarFillClass):x=``),t.pagination.bullets=[],m.forEach(S=>{c.type!=="custom"&&(S.innerHTML=x||""),c.type==="bullets"&&t.pagination.bullets.push(...S.querySelectorAll(ni(c.bulletClass)))}),c.type!=="custom"&&i("paginationRender",m[0])}function y(){t.params.pagination=Q0(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const c=t.params.pagination;if(!c.el)return;let p;typeof c.el=="string"&&t.isElement&&(p=t.el.querySelector(c.el)),!p&&typeof c.el=="string"&&(p=[...document.querySelectorAll(c.el)]),p||(p=c.el),!(!p||p.length===0)&&(t.params.uniqueNavElements&&typeof c.el=="string"&&Array.isArray(p)&&p.length>1&&(p=[...t.el.querySelectorAll(c.el)],p.length>1&&(p=p.filter(m=>L0(m,".swiper")[0]===t.el)[0])),Array.isArray(p)&&p.length===1&&(p=p[0]),Object.assign(t.pagination,{el:p}),p=hn(p),p.forEach(m=>{c.type==="bullets"&&c.clickable&&m.classList.add(...(c.clickableClass||"").split(" ")),m.classList.add(c.modifierClass+c.type),m.classList.add(t.isHorizontal()?c.horizontalClass:c.verticalClass),c.type==="bullets"&&c.dynamicBullets&&(m.classList.add(`${c.modifierClass}${c.type}-dynamic`),a=0,c.dynamicMainBullets<1&&(c.dynamicMainBullets=1)),c.type==="progressbar"&&c.progressbarOpposite&&m.classList.add(c.progressbarOppositeClass),c.clickable&&m.addEventListener("click",d),t.enabled||m.classList.add(c.lockClass)}))}function w(){const c=t.params.pagination;if(l())return;let p=t.pagination.el;p&&(p=hn(p),p.forEach(m=>{m.classList.remove(c.hiddenClass),m.classList.remove(c.modifierClass+c.type),m.classList.remove(t.isHorizontal()?c.horizontalClass:c.verticalClass),c.clickable&&(m.classList.remove(...(c.clickableClass||"").split(" ")),m.removeEventListener("click",d))})),t.pagination.bullets&&t.pagination.bullets.forEach(m=>m.classList.remove(...c.bulletActiveClass.split(" ")))}r("changeDirection",()=>{if(!t.pagination||!t.pagination.el)return;const c=t.params.pagination;let{el:p}=t.pagination;p=hn(p),p.forEach(m=>{m.classList.remove(c.horizontalClass,c.verticalClass),m.classList.add(t.isHorizontal()?c.horizontalClass:c.verticalClass)})}),r("init",()=>{t.params.pagination.enabled===!1?k():(y(),h(),f())}),r("activeIndexChange",()=>{typeof t.snapIndex>"u"&&f()}),r("snapIndexChange",()=>{f()}),r("snapGridLengthChange",()=>{h(),f()}),r("destroy",()=>{w()}),r("enable disable",()=>{let{el:c}=t.pagination;c&&(c=hn(c),c.forEach(p=>p.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass)))}),r("lock unlock",()=>{f()}),r("click",(c,p)=>{const m=p.target,x=hn(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&x&&x.length>0&&!m.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&m===t.navigation.nextEl||t.navigation.prevEl&&m===t.navigation.prevEl))return;const S=x[0].classList.contains(t.params.pagination.hiddenClass);i(S===!0?"paginationShow":"paginationHide"),x.forEach(M=>M.classList.toggle(t.params.pagination.hiddenClass))}});const g=()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:c}=t.pagination;c&&(c=hn(c),c.forEach(p=>p.classList.remove(t.params.pagination.paginationDisabledClass))),y(),h(),f()},k=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:c}=t.pagination;c&&(c=hn(c),c.forEach(p=>p.classList.add(t.params.pagination.paginationDisabledClass))),w()};Object.assign(t.pagination,{enable:g,disable:k,render:h,update:f,init:y,destroy:w})}function bC(e){let{swiper:t,extendParams:n,on:r,emit:i}=e;const s=Er();let o=!1,a=null,l=null,u,d,f,h;n({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null};function y(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:A,rtlTranslate:D}=t,{dragEl:L,el:B}=A,re=t.params.scrollbar,we=t.params.loop?t.progressLoop:t.progress;let N=d,I=(f-d)*we;D?(I=-I,I>0?(N=d-I,I=0):-I+d>f&&(N=f+I)):I<0?(N=d+I,I=0):I+d>f&&(N=f-I),t.isHorizontal()?(L.style.transform=`translate3d(${I}px, 0, 0)`,L.style.width=`${N}px`):(L.style.transform=`translate3d(0px, ${I}px, 0)`,L.style.height=`${N}px`),re.hide&&(clearTimeout(a),B.style.opacity=1,a=setTimeout(()=>{B.style.opacity=0,B.style.transitionDuration="400ms"},1e3))}function w(A){!t.params.scrollbar.el||!t.scrollbar.el||(t.scrollbar.dragEl.style.transitionDuration=`${A}ms`)}function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:A}=t,{dragEl:D,el:L}=A;D.style.width="",D.style.height="",f=t.isHorizontal()?L.offsetWidth:L.offsetHeight,h=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),t.params.scrollbar.dragSize==="auto"?d=f*h:d=parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?D.style.width=`${d}px`:D.style.height=`${d}px`,h>=1?L.style.display="none":L.style.display="",t.params.scrollbar.hide&&(L.style.opacity=0),t.params.watchOverflow&&t.enabled&&A.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function k(A){return t.isHorizontal()?A.clientX:A.clientY}function c(A){const{scrollbar:D,rtlTranslate:L}=t,{el:B}=D;let re;re=(k(A)-nk(B)[t.isHorizontal()?"left":"top"]-(u!==null?u:d/2))/(f-d),re=Math.max(Math.min(re,1),0),L&&(re=1-re);const we=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*re;t.updateProgress(we),t.setTranslate(we),t.updateActiveIndex(),t.updateSlidesClasses()}function p(A){const D=t.params.scrollbar,{scrollbar:L,wrapperEl:B}=t,{el:re,dragEl:we}=L;o=!0,u=A.target===we?k(A)-A.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,A.preventDefault(),A.stopPropagation(),B.style.transitionDuration="100ms",we.style.transitionDuration="100ms",c(A),clearTimeout(l),re.style.transitionDuration="0ms",D.hide&&(re.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),i("scrollbarDragStart",A)}function m(A){const{scrollbar:D,wrapperEl:L}=t,{el:B,dragEl:re}=D;o&&(A.preventDefault&&A.cancelable?A.preventDefault():A.returnValue=!1,c(A),L.style.transitionDuration="0ms",B.style.transitionDuration="0ms",re.style.transitionDuration="0ms",i("scrollbarDragMove",A))}function x(A){const D=t.params.scrollbar,{scrollbar:L,wrapperEl:B}=t,{el:re}=L;o&&(o=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",B.style.transitionDuration=""),D.hide&&(clearTimeout(l),l=Pa(()=>{re.style.opacity=0,re.style.transitionDuration="400ms"},1e3)),i("scrollbarDragEnd",A),D.snapOnRelease&&t.slideToClosest())}function S(A){const{scrollbar:D,params:L}=t,B=D.el;if(!B)return;const re=B,we=L.passiveListeners?{passive:!1,capture:!1}:!1,N=L.passiveListeners?{passive:!0,capture:!1}:!1;if(!re)return;const I=A==="on"?"addEventListener":"removeEventListener";re[I]("pointerdown",p,we),s[I]("pointermove",m,we),s[I]("pointerup",x,N)}function M(){!t.params.scrollbar.el||!t.scrollbar.el||S("on")}function _(){!t.params.scrollbar.el||!t.scrollbar.el||S("off")}function T(){const{scrollbar:A,el:D}=t;t.params.scrollbar=Q0(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const L=t.params.scrollbar;if(!L.el)return;let B;if(typeof L.el=="string"&&t.isElement&&(B=t.el.querySelector(L.el)),!B&&typeof L.el=="string"){if(B=s.querySelectorAll(L.el),!B.length)return}else B||(B=L.el);t.params.uniqueNavElements&&typeof L.el=="string"&&B.length>1&&D.querySelectorAll(L.el).length===1&&(B=D.querySelector(L.el)),B.length>0&&(B=B[0]),B.classList.add(t.isHorizontal()?L.horizontalClass:L.verticalClass);let re;B&&(re=B.querySelector(ni(t.params.scrollbar.dragClass)),re||(re=Vs("div",t.params.scrollbar.dragClass),B.append(re))),Object.assign(A,{el:B,dragEl:re}),L.draggable&&M(),B&&B.classList[t.enabled?"remove":"add"](...Zn(t.params.scrollbar.lockClass))}function j(){const A=t.params.scrollbar,D=t.scrollbar.el;D&&D.classList.remove(...Zn(t.isHorizontal()?A.horizontalClass:A.verticalClass)),_()}r("changeDirection",()=>{if(!t.scrollbar||!t.scrollbar.el)return;const A=t.params.scrollbar;let{el:D}=t.scrollbar;D=hn(D),D.forEach(L=>{L.classList.remove(A.horizontalClass,A.verticalClass),L.classList.add(t.isHorizontal()?A.horizontalClass:A.verticalClass)})}),r("init",()=>{t.params.scrollbar.enabled===!1?U():(T(),g(),y())}),r("update resize observerUpdate lock unlock changeDirection",()=>{g()}),r("setTranslate",()=>{y()}),r("setTransition",(A,D)=>{w(D)}),r("enable disable",()=>{const{el:A}=t.scrollbar;A&&A.classList[t.enabled?"remove":"add"](...Zn(t.params.scrollbar.lockClass))}),r("destroy",()=>{j()});const P=()=>{t.el.classList.remove(...Zn(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...Zn(t.params.scrollbar.scrollbarDisabledClass)),T(),g(),y()},U=()=>{t.el.classList.add(...Zn(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...Zn(t.params.scrollbar.scrollbarDisabledClass)),j()};Object.assign(t.scrollbar,{enable:P,disable:U,updateSize:g,setTranslate:y,init:T,destroy:j})}const TC="/assets/cover1-55f5a95a.svg",AC="/assets/cover2-24b4960c.svg",PC="/assets/cover3-b5719c26.svg",MC="/assets/cover4-23df30ba.svg",DC=C.ul`
+ display: flex;
+ height: 100%;
+ @media screen and (max-width: 768px) {
+ display: none;
+ }
+`,_C=C.li`
+ position: relative;
+ display: flex;
+ align-items: center;
+ padding-inline: 20px;
+ /* color: #ffffff; */
+ color: ${({isActive:e})=>e?"#7680DD":"inherit"};
+ font-size: 16px;
+ line-height: 1;
+ text-transform: uppercase;
+ white-space: nowrap;
+ border-bottom: ${e=>e.isDropdown?"4px solid hsla(234, 60%, 66%, 1)":"none"};
+ transition: all 0.05s;
+ cursor: pointer;
+ @media screen and (max-width: 1024px) {
+ font-size: 14px;
+ font-weight: 300;
+ padding-inline: 16px;
+ }
+`,OC=C.ul`
+ z-index: 100;
+ position: absolute;
+ top: 86px;
+ right: 0;
+ display: ${e=>e.isDropdown?"block":"none"};
+ padding: 16px 20px;
+ background: ${({MyTheme:e})=>e==="dark"?"#fff":"rgb(36,31,56)"};
+ border: 1px solid hsl(0, 0%, 50%);
+ color: ${({MyTheme:e})=>e==="dark"?"#42424A":"#fff"};
+ border-radius: 8px;
+ transition: all 0s ease 0.1s;
+ min-width: 150px;
+`,RC=C.li`
+ display: block;
+ padding-block: 8px;
+ /* color: hsl(0, 0%, 88%); */
+ font-weight: 400;
+ font-size: 14px;
+ text-transform: none;
+ &:hover {
+ color: hsl(234, 60%, 66%);
+ }
+`,LC=C.div`
+ height: min-content;
+ font-size: 0.18rem;
+ display: flex;
+ justify-content: center;
+ font-weight: 600;
+ align-items: center;
+ padding: 0.05rem 0.195rem;
+ color: #7680dd;
+ border: 0.01rem solid #7680dd;
+ transform: translateY(60%);
+ border-radius: 0.4rem;
+ margin-left: 0.58rem;
+`,X0=(e,t)=>{t&&(t.startsWith("http")||t.startsWith("https")?window.location.href=t:e(t))},IC=({label:e,url:t})=>{const n=Gn();return v.jsx(RC,{onClick:()=>X0(n,t),children:e})},jC=({subNavItems:e,isDropdown:t,theme:n})=>v.jsx(OC,{isDropdown:t,MyTheme:n,children:e==null?void 0:e.map(({key:r,label:i,url:s})=>v.jsx(IC,{label:i,url:s},r))}),zC=({label:e,subNavItems:t,url:n,theme:r,id:i,activeId:s})=>{const o=Gn(),[a,l]=R.useState(!1);return v.jsxs(_C,{isDropdown:a,isActive:i===s,onMouseOver:()=>l(!0),onMouseOut:()=>l(!1),onClick:()=>X0(o,n),children:[e,t&&v.jsx(jC,{subNavItems:t,isDropdown:a,theme:r})]})},NC=({items:e,theme:t,activeId:n})=>v.jsxs(DC,{children:[e.map(({key:r,label:i,url:s,children:o})=>v.jsx(zC,{id:r,label:i,url:s,subNavItems:o,theme:t,activeId:n},r)),v.jsx(LC,{onClick:()=>location.href="https://datenlord.github.io/zh-cn/",children:"CN/EN"})]}),FC="/assets/menu-459d13f5.svg",YC="/assets/dropIcon-525fd0e1.svg",UC="/assets/dropIconActive-9bdef1aa.svg",BC=C.img`
+ display: none;
+ margin-left: 12px;
+ @media screen and (max-width: 768px) {
+ display: block;
+ }
+`,WC=C.ul`
+ display: ${e=>e.isDropDown?"flex":"none"};
+ flex-direction: column;
+ position: absolute;
+ top: 53px;
+ left: 0;
+ width: 100%;
+ z-index: 1000;
+ background: #111429;
+ @media screen and (min-width: 768px) {
+ display: none;
+ }
+`,HC=C.li`
+ display: flex;
+ align-items: center;
+ height: 42px;
+ padding-inline: 20px;
+`,VC=C(HC)`
+ /* background: #111429; */
+ color: ${e=>e.isDropdown?"#7680DD":"#E0E0E0"};
+ font-weight: 500;
+ font-size: 16px;
+ line-height: 1;
+ text-transform: uppercase;
+`,GC=C.p`
+ /* min-width: 100px; */
+`,$C=C.ul`
+ display: ${e=>e.isDropdown?"block":"none"};
+ height: ${e=>e.isDropdown?"min-content":"0px"};
+ transition: all 1s;
+`,QC=C.li`
+ display: flex;
+ align-items: center;
+ height: 42px;
+ padding-inline: 20px;
+`,XC=C(QC)`
+ background: #242840;
+ color: #e0e0e0;
+ font-size: 16px;
+ line-height: 1;
+`,Eh=C.img`
+ margin-left: 12px;
+ height: 12px;
+ width: 12px;
+`,K0=(e,t,n,r)=>{t?t.startsWith("http")||t.startsWith("https")?window.location.href=t:e(t):r&&r(!n)},KC=({label:e,url:t})=>{const n=Gn();return v.jsx(XC,{onClick:()=>K0(n,t),children:e})},ZC=({isDropdown:e,subNavItems:t})=>v.jsx($C,{isDropdown:e,children:t==null?void 0:t.map(({key:n,label:r,url:i})=>v.jsx(KC,{label:r,url:i},n))}),JC=({label:e,url:t,subNavItems:n})=>{const r=Gn(),[i,s]=R.useState(!1);return v.jsxs(v.Fragment,{children:[v.jsxs(VC,{isDropdown:i,onClick:()=>K0(r,t,i,s),children:[v.jsx(GC,{children:e}),n&&v.jsx(v.Fragment,{children:i?v.jsx(Eh,{src:UC}):v.jsx(Eh,{src:YC})})]}),v.jsx(ZC,{isDropdown:i,subNavItems:n})]})},qC=({items:e})=>{const[t,n]=R.useState(!1);return v.jsxs(v.Fragment,{children:[v.jsx(BC,{src:FC,onClick:()=>n(!t)}),v.jsx(WC,{isDropDown:t,children:(e||[]).map(({key:r,label:i,url:s,children:o})=>v.jsx(JC,{label:i,url:s,subNavItems:o},r))})]})},eE="/assets/logo-46733c53.svg",tE="/assets/logo-text-dark-f3978d3a.svg",nE="/assets/logo-text-light-40cbbdf3.svg",$d=[{key:"products",label:"products",children:[{key:"cloud-service",label:"DatenLord cloud Service",url:"/products/cloud-service"},{key:"appliance",label:"DatenLord Appliance",url:"/products/appliance"}]},{key:"solution",label:"solution",children:[{key:"inference",label:"AI Inference",url:"/solution"},{key:"storage",label:"High Performance Storage",url:"/solution"},{key:"network",label:"High Performance Network",url:"/solution"}]},{key:"resources",label:"resources",children:[{key:"tech-talk",label:"Tech Talk",url:"/resources/tech-talk"},{key:"blog",label:"Blog",url:"/resources/blog"},{key:"events",label:"Events",url:"https://www.youtube.com/@datenlord"}]},{key:"community",label:"Community",children:[{key:"community",label:"Open Source community",url:"community"},{key:"project",label:"Open Source Project",url:"/community/project"}]},{key:"company",label:"Company",children:[{key:"about-us",label:"About Us",url:"/company"},{key:"join-us",label:"Join Us",url:"/company"},{key:"contact-us",label:"Contact Us",url:"/company"}]}],rE=C.header`
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 86px;
+ width: 100%;
+ background-color: ${e=>e.bg};
+ z-index: 1000;
+ color: ${e=>e.headerTheme==="dark"?"#000":"#fff"};
+ @media screen and (max-width: 1024px) {
+ height: 69px;
+ }
+ @media screen and (max-width: 768px) {
+ height: 53px;
+ }
+`,iE=C.div`
+ position: relative;
+ display: flex;
+ align-items: center;
+ height: inherit;
+ width: 100%;
+ max-width: 1440px;
+ margin-inline: auto;
+ padding-inline: 72px;
+ @media screen and (max-width: 1024px) {
+ padding-inline: 64px;
+ }
+ @media screen and (max-width: 768px) {
+ padding-inline: 20px;
+ background: #111429;
+ }
+`,sE=C.img`
+ height: 50%;
+ margin-right: 16px;
+ @media screen and (max-width: 1024px) {
+ margin-right: 12px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-right: 8px;
+ }
+`,bh=C.img`
+ height: 16px;
+ @media screen and (max-width: 1024px) {
+ height: 12px;
+ }
+ @media screen and (max-width: 768px) {
+ height: 8px;
+ }
+`,oE=C.div`
+ flex: 1;
+ min-width: 32px;
+ @media screen and (max-width: 1024px) {
+ min-width: 16px;
+ }
+`,bl=({theme:e,bg:t="#fff",activeId:n})=>{const r=Gn();return v.jsx(rE,{headerTheme:e,bg:t,children:v.jsxs(iE,{children:[v.jsx(sE,{src:eE,alt:"DatenLord",onClick:()=>r("/")}),e!=="dark"||window.innerWidth<768?v.jsx(bh,{src:nE}):v.jsx(bh,{src:tE}),v.jsx(oE,{}),v.jsx(NC,{items:$d,theme:e,activeId:n}),v.jsx(qC,{items:$d,theme:e})]})})},aE="data:image/png;base64,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",lE=C.footer`
+ color: #fff;
+ background-color: #0a061f;
+`,uE=C.div`
+ max-width: 1440px;
+ margin-inline: auto;
+ padding-inline: 1.22rem;
+ padding-block: 0.64rem;
+`,dE=C.img`
+ height: 0.58rem;
+ padding-inline: 0.16rem 0.16rem;
+`,cE=C.div`
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-around;
+`,fE=C.div`
+ padding-inline: 0.16rem;
+ padding-bottom: 0.64rem;
+ color: white;
+ /* width: 1.8rem; */
+`,pE=C.h2`
+ padding-bottom: 0.16rem;
+ margin-bottom: 0.24rem;
+ font-weight: 500;
+ font-size: 0.2rem;
+ line-height: 0.4rem;
+ text-transform: capitalize;
+ border-bottom: 1px solid white;
+ cursor: default;
+`,hE=C.ul``,mE=C.li`
+ margin-bottom: 0.15rem;
+ text-transform: capitalize;
+ list-style-type: none;
+ cursor: pointer;
+`,gE=C.div`
+ display: flex;
+ align-items: center;
+ border-bottom: 1px solid #fff;
+`;C.div`
+ padding-top: 0.14rem;
+`;const Th=C.div`
+ font-weight: 400;
+ font-size: 0.18rem;
+ line-height: 0.4rem;
+`,vE=()=>{const e=Gn();return v.jsx(v.Fragment,{children:v.jsx(lE,{children:v.jsxs(uE,{children:[v.jsxs(gE,{children:[v.jsx(dE,{src:aE}),v.jsx(cE,{children:$d.map(({key:t,label:n,children:r})=>v.jsxs(fE,{children:[v.jsx(pE,{children:n}),v.jsx(hE,{children:(r||[]).map(({key:i,label:s,url:o})=>v.jsx(mE,{onClick:()=>{o&&e(o)},children:v.jsx(Th,{children:s})},i))})]},t))})]}),v.jsx(Th,{style:{textAlign:"center",paddingTop:"0.16rem"},children:"DatenLord Technology Co., Ltd. ©2024 All Rights Reserved."})]})})})},Z0=R.createContext(null),yE=()=>{const[e,t]=R.useState("light");return v.jsxs(Z0.Provider,{value:{setTheme:t},children:[v.jsx(bl,{activeId:"",theme:e,bg:"transparent"}),v.jsx(Wx,{}),v.jsx(vE,{})]})},wE=[{id:1,bgColor:"#0A061F",txtColor:"#FFFFFF",img:TC,title:"High-Performance AI+ Cloud Infrastructure Provider",desc:"By deeply integrating software and hardware, we offer high-performance storage and networking, delivering elastic, convenient, and cost-effective infrastructure services for AI+Cloud applications.",btn:"/solution"},{id:2,bgColor:"#D9DBEF",txtColor:"#42424A",img:AC,title:"High-Performance Cross-Cloud Distributed Storage",desc:"Establishing a unified storage access layer, we provide high-performance and highly secure storage support for cross-cloud applications, breaking down barriers between different cloud environments.",btn:"/solution"},{id:3,bgColor:"#F8FAFF",txtColor:"#42424A",img:PC,title:"High-Performance RDMA Network",desc:"Adopting a deep integration of software and hardware, we achieve a high-performance RDMA network.",btn:"/solution"},{id:4,bgColor:"#0A061F",txtColor:"#FFFFFF",img:MC,title:"Believe in the Power of Open Source",desc:"We attract global talents from the open-source community, including those experienced in distributed systems, Linux kernel, open-source hardware, and related fields.",btn:"/community"}],xE=({setHeaderTheme:e})=>{const t=Gn(),n=R.useContext(Z0);return v.jsx(G0,{modules:[EC,bC],pagination:{clickable:!0},onActiveIndexChange:({activeIndex:r})=>{document.documentElement.style.setProperty("--swiper-pagination-bullet-inactive-color",r===1?"#FFFFFF":"#d9dbef"),n==null||n.setTheme(r===0||r===3?"light":"dark")},style:{height:"100vh"},children:wE.map(({id:r,title:i,desc:s,img:o,bgColor:a,txtColor:l,btn:u})=>v.jsxs($0,{style:{background:a,color:l,display:"flex",alignItems:"center",padding:"1.48rem 0.96rem 0.64rem"},children:[v.jsx("img",{src:o,style:{maxWidth:"5.8rem",maxHeight:"4.4rem",marginRight:"0.64rem"}}),v.jsxs("div",{children:[v.jsx("div",{role:"h2",style:{fontSize:"0.4rem",marginBottom:"0.44rem"},children:i}),v.jsx("div",{role:"p",style:{fontSize:"0.26rem",marginBottom:"0.44rem"},children:s}),v.jsx("div",{role:"button",style:{fontSize:"0.16rem",width:"min-content",whiteSpace:"nowrap",padding:"0.08rem 0.32rem",borderRadius:"0.24rem",background:"linear-gradient(90deg, #767EE5, #9966CC)",color:"#FFFFFF"},onClick:()=>t(u),children:"Learn more"})]})]},r))})},SE="/assets/image6-50544149.png",kE="/assets/image7-f5096656.png",CE="/assets/image8-054471aa.png",bu=C.div`
+ font-size: 0.4rem;
+ line-height: 0.6rem;
+ font-weight: 700;
+ margin-inline: 1.64rem;
+ text-align: center;
+`;C.div`
+ font-size: 0.32rem;
+ line-height: 0.38rem;
+ font-weight: 600;
+ color: #101828;
+`;const EE=C.div`
+ font-size: 0.26rem;
+ line-height: 0.4rem;
+ font-weight: 400;
+`,J0=C.div`
+ font-size: 0.22rem;
+ line-height: 0.4rem;
+ font-weight: 400;
+`,Mo=C(J0)`
+ &::before {
+ content: '';
+ display: inline-block;
+ width: 0.14rem;
+ height: 0.14rem;
+ border-radius: 50%;
+ background: linear-gradient(90deg, #767ee5, #9966cc);
+ transform: translateX(-0.16rem);
+ }
+ text-indent: -0.16rem;
+`;C(J0)`
+ position: relative;
+ padding-left: 0.36rem;
+ &::before {
+ content: '√';
+ display: inline-block;
+ position: absolute;
+ top: 5px;
+ left: 0;
+ width: 0.28rem;
+ height: 0.28rem;
+ border-radius: 50%;
+ color: #fff;
+ background: #7680dd;
+ text-align: center;
+ line-height: 0.28rem;
+ }
+`;C.div`
+ border: 0.02rem solid #00000014;
+ background: linear-gradient(90deg, rgb(243, 245, 255), rgb(225, 223, 244));
+ padding: 0.6rem 0.7rem 0.7rem;
+ border-radius: 0.2rem;
+`;C.div`
+ font-size: 0.16rem;
+ width: min-content;
+ white-space: nowrap;
+ padding: 0.12rem 0.34rem;
+ border-radius: 0.24rem;
+ background: linear-gradient(90deg, #767ee5, #9966cc);
+ color: #ffffff;
+`;const bE=()=>{const[e,t]=R.useState("light");return v.jsxs(ve.Fragment,{children:[v.jsx(xE,{setHeaderTheme:t}),v.jsxs("div",{style:{color:"#42424A",padding:"1rem 1.48rem"},children:[v.jsxs("div",{style:{marginBottom:"1.28rem"},children:[v.jsx(bu,{style:{borderBottom:"0.01rem solid #D9DBEF",paddingBottom:"0.24rem",marginBottom:"0.2rem"},children:"DatenLord Integrates Storage and Network Solutions to Address the AI Computational Resource Challenges"}),v.jsx(EE,{style:{marginInline:"0.96rem"},children:"The Development of AI Lead to a Tight, Dispersed, and Expensive Situation Regarding Computational Resources."}),v.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"0.84rem",marginTop:"0.96rem"},children:[v.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"0.48rem"},children:[v.jsx(Mo,{children:"The surge in demand for high-performance GPU computational resources, driven by AI large models, has resulted in a severe imbalance between supply and demand. This has further elevated the already high prices of GPU computational power, attributed to factors such as design and manufacturing costs and market monopolies."}),v.jsx(Mo,{children:"GPU computational resources are primarily allocated to satisfy the demands of AI training scenarios, leading to a dispersed or fragmented nature of GPU computational resources for AI inference scenarios."})]}),v.jsx("img",{style:{width:"6.52rem"},src:SE})]})]}),v.jsxs("div",{style:{position:"relative",marginBottom:"1.28rem"},children:[v.jsx(bu,{style:{marginBottom:"1rem"},children:"The Dispersion and High Cost of AI Computational Resources Pose New Challenges for Cloud Computing"}),v.jsx("img",{style:{width:"100%"},src:kE}),v.jsx("div",{style:{position:"absolute",bottom:"0",left:"0",width:"2rem",height:"0.64rem",background:"#ffffff"}})]}),v.jsxs("div",{style:{marginBottom:"1.28rem"},children:[v.jsx(bu,{children:"DatenLord Integrates Storage and Network Solutions to Address the AI Computational Resource Challenges"}),v.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"0.84rem",marginTop:"0.96rem"},children:[v.jsx("img",{style:{width:"4.46rem"},src:CE}),v.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"0.48rem"},children:[v.jsx(Mo,{children:"By optimizing caching technology, it achieves data preloading and asynchronous persistence, thereby enhancing data access performance."}),v.jsx(Mo,{children:"The high-performance RDMA (Remote Direct Memory Access) facilitates multi-node memory sharing, accelerating the distribution of large models."})]})]})]})]})]})},TE=C.div`
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 6.8rem;
+ padding: calc(0.67rem + 0.9rem) 1.03rem 0.34rem;
+ background: #0a061f;
+ color: #ffffff;
+`,AE=C.div`
+ font-size: 0.72rem;
+ line-height: 0.44rem;
+ font-weight: 700;
+`,Hi=({children:e})=>v.jsx(TE,{children:v.jsx(AE,{children:e})}),PE=C.div`
+ padding: 0.96rem 2rem 1.24rem;
+ background: ${e=>e.bgColor};
+`,xr=({children:e,backgroundColor:t="#fff"})=>v.jsx(PE,{bgColor:t,children:e}),ME="/assets/github-dbd6884e.svg",DE="/assets/illustration-a72d48ba.png",q0=C.p`
+ margin-block: 0;
+ font-family: PingFang SC;
+`,ev=C(q0)`
+ font-weight: 600;
+ font-size: 0.64rem;
+ line-height: 0.72rem;
+`,_E=C(ev)`
+ font-size: 0.3rem;
+ line-height: 0.444rem;
+`,OE=C(ev)`
+ font-size: 0.32rem;
+ line-height: 0.32rem;
+`,tv=C(q0)`
+ font-weight: 400;
+ font-size: 0.16rem;
+ line-height: 0.28rem;
+`,ff=C(tv)`
+ font-size: 0.24rem;
+ line-height: 0.32rem;
+`,RE=C(tv)`
+ font-size: 0.14rem;
+ line-height: 0.2rem;
+`,LE=C.div`
+ margin-left: -0.31rem;
+ display: flex;
+`,IE=C(OE)`
+ padding-left: 0.15rem;
+`,jE=C.div`
+ width: 0.166rem;
+ background: linear-gradient(90deg, #767ee5, #9966cc);
+`,nv=({children:e,extra:t,style:n})=>v.jsxs(LE,{style:n,children:[v.jsx(jE,{}),v.jsx(IE,{children:e}),t]}),zE=[{key:1,title:"Contributing is Thinking and Learning",text:"Open source is not merely about contributing code in Github. In DatenLord, we believe that giving is thinking and learning, and together with the received feedback from the virtual community are capable of framing trust and collaboration."}],NE=[{key:1,text:"Hengyu Wang is a graduate student majoring in computer science. He joined the async-rdma project because it happens to fit in his academic interest on integrating software and hardware. Guided by his community mentor, he grows with the development of the project and is invited to share his practical experience on using Rust to package RDMA on several hands-on workshops.。在社区导师的指导下,他也随着项目的发展而逐步成长,并被邀请在一些实践研讨会上分享他使用Rust开发RDMA的实践经验。",quote:"“I am having unforgettable experience with the async-rdma project. The DatenLord community is friendly and my mentor is a seasoned engineer who encourages me to verify my ideas and assumptions about the project while pay attention to the engineering discipline, which shift my perspective from a student who merely focuses on running a program to a professional engineer who cares about its maintainability and stability as well. ”",link_text:"GitHub ID: GTwhy",url:"https://github.com/GTwhy"},{key:2,text:"Hongyu Li is passionate about open source community and Rust, and thus joined this particular project of DatenLord to add support for Rust to be merged in the Linux kernel. With the guidance of his community mentor, he honed his skills in Rust in the process of contributing code, writing document and replying revisions to the upstream.",quote:"“Working with the Rust for Linux project in DatenLord is rewarding. The community is friendly and interactive. I was encouraged by my mentor to seriously weigh different options to revise even a small bug and go beyond just write code, but lines of ELEGANT codes. What I acquire in the community is not only conceptual, but practical.”",link_text:"GitHub ID: Richardhongyu",url:"https://github.com/Richardhongyu"}],FE=C.section``,YE=C.div`
+ color: #d9dbef;
+ font-weight: 400;
+ font-family: Bodoni Bd BT serif;
+ font-size: 0.67rem;
+ line-height: 0.804rem;
+ text-transform: capitalize;
+ margin-bottom: 0.45rem;
+`;C(_E)`
+ margin-top: -0.22rem;
+ padding-left: 0.16rem;
+ padding-bottom: 0.71rem;
+ font-family: Avenir Next sans-serif;
+`;const UE=C.div`
+ display: flex;
+ align-items: center;
+ flex-direction: row-reverse;
+ height: 4.6rem;
+ margin-bottom: 0.61rem;
+`,BE=C.div`
+ padding-bottom: 0.56rem;
+ &:last-child {
+ padding-bottom: 0;
+ }
+`,WE=C(nv)``,HE=C(ff)``,VE=C.img`
+ float: right;
+ margin-left: 1rem;
+ margin-right: -0.33rem;
+ margin-bottom: 0.33rem;
+ width: 5rem;
+`;C.div`
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-left: 0.64rem;
+`;C.img`
+ width: 0.3rem;
+ height: 0.3rem;
+ margin-right: 0.14rem;
+`;C.div`
+ color: ${e=>e.theme.themeDark};
+ font-weight: 600;
+ font-size: 0.255rem;
+ line-height: 1;
+ text-transform: capitalize;
+`;const GE=C.div`
+ padding-top: 0.38rem;
+ padding-bottom: 0.46rem;
+ padding-inline: 0.63rem;
+ background: #ffffff78;
+ border-radius: 0.18rem;
+`,$E=C(nv)``,QE=C.div`
+ display: flex;
+ justify-content: space-between;
+`,XE=C.div`
+ width: 47%;
+`,KE=C(ff)`
+ padding-bottom: 0.26rem;
+`,ZE=C(RE)`
+ margin-left: -0.14rem;
+ margin-bottom: 0.33rem;
+ padding-inline: 0.11rem;
+ border-left: 0.02rem solid;
+ border-image: linear-gradient(to right, #767ee5, #9966cc) 1;
+`,JE=C.div`
+ display: flex;
+`,qE=C(ff)`
+ padding-right: 0.2rem;
+ color: #7680dd;
+ text-decoration-line: underline;
+`,eb=C.img`
+ width: 0.32rem;
+ height: 0.32rem;
+`,tb=()=>v.jsxs(FE,{children:[v.jsx(YE,{children:"Open Source Community"}),v.jsxs(UE,{children:[v.jsx(VE,{src:DE}),zE.map(({key:e,title:t,text:n})=>v.jsxs(BE,{children:[v.jsx(WE,{style:{paddingBottom:"0.23rem"},children:t}),v.jsx(HE,{children:n})]},e))]}),v.jsxs(GE,{children:[v.jsx($E,{style:{paddingBottom:"0.39rem"},children:"Story Spotlight"}),v.jsx(QE,{children:NE.map(({key:e,text:t,quote:n,link_text:r,url:i})=>v.jsxs(XE,{children:[v.jsx(KE,{children:t}),v.jsx(ZE,{children:n}),v.jsxs(JE,{children:[v.jsx(qE,{as:"a",href:i,children:r}),v.jsx(eb,{src:ME})]})]},e))})]})]}),nb="/assets/xline-74074173.png";C.div`
+ height: 100vh;
+ padding-top: 84px;
+ color: #42424a;
+ @media screen and (max-width: 1024px) {
+ padding-top: 69px;
+ }
+ @media screen and (max-width: 768px) {
+ padding-top: 53px;
+ }
+`;C.div`
+ align-items: center;
+ max-width: 1440px;
+ margin-inline: auto;
+ padding-block: 64px;
+ padding-inline: 128px;
+ overflow: hidden;
+ @media screen and (max-width: 1024px) {
+ padding-block: 48px;
+ padding-inline: 96px;
+ }
+ @media screen and (max-width: 768px) {
+ padding-block: 32px;
+ padding-inline: 64px;
+ }
+`;C.div`
+ display: flex;
+ align-items: center;
+ margin-bottom: 96px;
+ @media screen and (max-width: 1024px) {
+ flex-direction: column;
+ margin-bottom: 72px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 48px;
+ }
+`;C.div`
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 96px;
+ @media screen and (max-width: 1024px) {
+ flex-direction: column;
+ align-items: center;
+ margin-bottom: 72px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 48px;
+ }
+`;C.div``;C.div`
+ display: flex;
+ flex-direction: column;
+ @media screen and (max-width: 1024px) {
+ align-items: center;
+ }
+`;C.img`
+ margin-right: 64px;
+ width: 100%;
+ @media screen and (max-width: 1024px) {
+ margin-bottom: 48px;
+ margin-right: 0;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 32px;
+ margin-right: 0;
+ }
+`;const rb=C.div`
+ margin-bottom: 32px;
+ font-weight: 700;
+ font-size: 30px;
+ line-height: 1.1;
+ @media screen and (max-width: 1024px) {
+ margin-bottom: 24px;
+ font-size: 22.5px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 16px;
+ font-size: 15px;
+ }
+`;C(rb)`
+ padding-left: 24px;
+ border-left: 24px solid #7680dd;
+ margin-bottom: 48px;
+ @media screen and (max-width: 1024px) {
+ padding-left: 18px;
+ border-width: 18px;
+ margin-bottom: 36px;
+ }
+ @media screen and (max-width: 768px) {
+ padding-left: 12px;
+ border-width: 12px;
+ margin-bottom: 24px;
+ }
+`;const ib=C.div`
+ font-weight: 400;
+ font-size: 15px;
+ line-height: 1.5;
+ @media screen and (max-width: 1024px) {
+ font-size: 12px;
+ }
+`;C.div`
+ font-weight: 400;
+ font-size: 13.5px;
+ line-height: 1.65;
+ margin-bottom: 27px;
+ @media screen and (max-width: 1024px) {
+ font-size: 12;
+ margin-bottom: 20.25px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 13.5px;
+ }
+`;C.div`
+ display: flex;
+ align-items: center;
+ margin-bottom: 27px;
+ @media screen and (max-width: 1024px) {
+ margin-bottom: 20.25px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 13.5px;
+ }
+`;C.div`
+ height: 100%;
+ margin-right: 16px;
+ padding-right: 16px;
+ font-weight: 600;
+ font-size: 18px;
+ line-height: 0.9;
+ border-right: 2px solid #000;
+ @media screen and (max-width: 1024px) {
+ margin-right: 12px;
+ padding-right: 12px;
+ font-size: 13.5px;
+ border-width: 1.5px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-right: 8px;
+ padding-right: 8px;
+ font-size: 12px;
+ border-width: 1px;
+ }
+`;C.img`
+ width: 14px;
+ @media screen and (max-width: 1024px) {
+ width: 10.5px;
+ }
+ @media screen and (max-width: 768px) {
+ width: 7px;
+ }
+`;C.div`
+ border-radius: 16px;
+ box-shadow: 2px 5px 15px rgba(0, 0, 0, 0.160784);
+ overflow: hidden;
+`;C.div`
+ display: flex;
+ /* height: 100%; */
+ width: 100%;
+ height: 80px;
+ @media screen and (max-width: 1024px) {
+ height: 60px;
+ }
+ @media screen and (max-width: 768px) {
+ height: 40px;
+ }
+`;C.div`
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-grow: 1;
+ color: ${({isActive:e})=>e?"white":"inherit"};
+ font-weight: 600;
+ font-size: 22.5px;
+ line-height: 1.48;
+ background: ${({isActive:e})=>e?"#7680DD":"white"};
+ border-top-left-radius: 14px;
+ border-top-right-radius: 14px;
+ cursor: pointer;
+ @media screen and (max-width: 1024px) {
+ font-size: 16.875px;
+ border-top-left-radius: 10.5;
+ border-top-right-radius: 10.5px;
+ }
+ @media screen and (max-width: 768px) {
+ font-size: 11.25px;
+ border-top-left-radius: 7px;
+ border-top-right-radius: 7px;
+ }
+`;C.div`
+ padding: 64px;
+ background: #d9dbef;
+ @media screen and (max-width: 1024px) {
+ padding: 48px;
+ }
+ @media screen and (max-width: 768px) {
+ padding: 32px;
+ }
+`;C.div`
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 32px;
+ @media screen and (max-width: 1024px) {
+ flex-direction: column;
+ align-items: center;
+ margin-bottom: 24px;
+ }
+ @media screen and (max-width: 768px) {
+ margin: 16px;
+ }
+`;C(ib)`
+ width: 46%;
+ @media screen and (max-width: 1024px) {
+ width: 100%;
+ margin-bottom: 32px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 24px;
+ }
+`;C.div`
+ max-width: 1440px;
+ margin-inline: auto;
+ padding-top: 1rem;
+ padding-bottom: 1.4rem;
+ padding-inline: 2.04rem;
+`;const Ah=C.div`
+ font-size: 0.4rem;
+ line-height: 0.6rem;
+ font-weight: 700;
+ margin-inline: 1.64rem;
+ text-align: center;
+`,Tu=C.div`
+ font-size: 0.32rem;
+ line-height: 0.38rem;
+ font-weight: 600;
+ color: #101828;
+`;C.div`
+ font-size: 0.26rem;
+ line-height: 0.4rem;
+ font-weight: 400;
+`;const wi=C.div`
+ font-size: 0.22rem;
+ line-height: 0.4rem;
+ font-weight: 400;
+`;C(wi)`
+ &::before {
+ content: '';
+ display: inline-block;
+ width: 0.14rem;
+ height: 0.14rem;
+ border-radius: 50%;
+ background: linear-gradient(90deg, #767ee5, #9966cc);
+ transform: translateX(-0.16rem);
+ }
+ text-indent: -0.16rem;
+`;const ss=C(wi)`
+ position: relative;
+ padding-left: 0.36rem;
+ &::before {
+ content: '√';
+ display: inline-block;
+ position: absolute;
+ top: 5px;
+ left: 0;
+ width: 0.28rem;
+ height: 0.28rem;
+ border-radius: 50%;
+ color: #fff;
+ background: #7680dd;
+ text-align: center;
+ line-height: 0.28rem;
+ }
+`,Ph=C.div`
+ border: 0.02rem solid #00000014;
+ background: linear-gradient(90deg, rgb(243, 245, 255), rgb(225, 223, 244));
+ padding: 0.6rem 0.7rem 0.7rem;
+ border-radius: 0.2rem;
+`,Au=C.div`
+ font-size: 0.16rem;
+ width: min-content;
+ white-space: nowrap;
+ padding: 0.12rem 0.34rem;
+ border-radius: 0.24rem;
+ background: linear-gradient(90deg, #767ee5, #9966cc);
+ color: #ffffff;
+`,sb=()=>{R.useState("WangHengyu");const e=Gn();return v.jsxs(ve.Fragment,{children:[v.jsx(Hi,{children:"Open Source Community"}),v.jsxs(xr,{backgroundColor:"#EDEDF6",children:[v.jsx(Ah,{style:{marginBottom:"1.25rem"},children:"Community"}),v.jsx(tb,{})]}),v.jsxs(xr,{children:[v.jsx(Ah,{style:{marginBottom:"1.5rem"},children:"Open Source Product"}),v.jsx(Ph,{style:{display:"flex",gap:"0.48rem",alignItems:"center",marginBottom:"0.5rem"},children:v.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"0.32rem"},children:[v.jsx(Tu,{children:"DatenLord"}),v.jsx(ss,{children:"DatenLord is a cross-cloud, cross-data center storage solution designed to facilitate efficient storage access across clouds and data centers for enterprises."}),v.jsx(ss,{children:"This solution offers users a versatile system architecture, including Posix file interface, KV interface, and object storage interface, allowing users to choose the most suitable method based on their specific needs."}),v.jsx(ss,{children:"DatenLord utilizes a combination of software and hardware integration, harnessing the full potential of both to achieve unparalleled data transfer and read/write performance."}),v.jsx(Au,{style:{marginLeft:"0.36rem"},onClick:()=>window.location.href="https://github.com/datenlord/datenlord",children:"Learn more"})]})}),v.jsxs("div",{style:{padding:"0.6rem 0.7rem 0.7rem",display:"flex",alignItems:"center",gap:"0.96rem",marginBottom:"0.5rem"},children:[v.jsx("img",{style:{height:"0.66rem"},src:nb}),v.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"0.32rem"},children:[v.jsx(Tu,{children:"Xline Open Source Distributed KV Storage System"}),v.jsx(wi,{children:"Ensures data consistency when accessed across data centers and clouds, facilitating multi-site, multi-center, active-active deployment for business systems.."}),v.jsx(Au,{onClick:()=>window.location.href="https://datenlord.github.io/xline-home/",children:"Learn more"})]})]}),v.jsxs(Ph,{style:{display:"flex",flexDirection:"column",gap:"0.48rem",marginBottom:"0.5rem"},children:[v.jsx(Tu,{children:"RDMA"}),v.jsx(wi,{children:"In cross-cloud scenarios, network performance has a significant impact on data access, and DatenLord leverages high-performance RDMA (Remote Direct Memory Access) to reduce latency and enhance bandwidth. We have several related open-source projects in the RDMA domain:"}),v.jsx("div",{style:{display:"flex",alignItems:"center",gap:"0.32rem"},children:v.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"0.24rem"},children:[v.jsx(ss,{children:"async-rdma"}),v.jsx(wi,{style:{paddingLeft:"0.36rem"},children:"An RDMA asynchronous API library encapsulated in Rust, providing advanced abstractions and asynchronous API interfaces for developing RDMA applications."}),v.jsx(ss,{children:"open-rdma"}),v.jsx(wi,{style:{paddingLeft:"0.36rem"},children:"An open-source hardware implementation of the RDMA protocol, implemented using Bluespec and SpinalHDL. Currently, it primarily supports the RoCEv2 protocol. Additionally, specific extensions have been incorporated to enhance the efficiency of RDMA transfers."}),v.jsx(Au,{style:{marginLeft:"0.36rem"},onClick:()=>e("/community/project"),children:"Learn more"})]})})]})]})]})},ob="modulepreload",ab=function(e){return"/"+e},Mh={},Ra=function(t,n,r){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=ab(s),s in Mh)return;Mh[s]=!0;const o=s.endsWith(".css"),a=o?'[rel="stylesheet"]':"";if(!!r)for(let d=i.length-1;d>=0;d--){const f=i[d];if(f.href===s&&(!o||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${a}`))return;const u=document.createElement("link");if(u.rel=o?"stylesheet":ob,o||(u.as="script",u.crossOrigin=""),u.href=s,document.head.appendChild(u),o)return new Promise((d,f)=>{u.addEventListener("load",d),u.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};//! moment.js
+//! version : 2.29.4
+//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+//! license : MIT
+//! momentjs.com
+var rv;function G(){return rv.apply(null,arguments)}function lb(e){rv=e}function ln(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function zr(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function Ce(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function pf(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;var t;for(t in e)if(Ce(e,t))return!1;return!0}function Et(e){return e===void 0}function Hn(e){return typeof e=="number"||Object.prototype.toString.call(e)==="[object Number]"}function eo(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function iv(e,t){var n=[],r,i=e.length;for(r=0;r>>0,r;for(r=0;r0)for(n=0;n=0;return(s?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}var vf=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Do=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Mu={},Mi={};function ee(e,t,n,r){var i=r;typeof r=="string"&&(i=function(){return this[r]()}),e&&(Mi[e]=i),t&&(Mi[t[0]]=function(){return kn(i.apply(this,arguments),t[1],t[2])}),n&&(Mi[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function pb(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function hb(e){var t=e.match(vf),n,r;for(n=0,r=t.length;n=0&&Do.test(e);)e=e.replace(Do,r),Do.lastIndex=0,n-=1;return e}var mb={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function gb(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(vf).map(function(r){return r==="MMMM"||r==="MM"||r==="DD"||r==="dddd"?r.slice(1):r}).join(""),this._longDateFormat[e])}var vb="Invalid date";function yb(){return this._invalidDate}var wb="%d",xb=/\d{1,2}/;function Sb(e){return this._ordinal.replace("%d",e)}var kb={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function Cb(e,t,n,r){var i=this._relativeTime[n];return bn(i)?i(e,t,n,r):i.replace(/%d/i,e)}function Eb(e,t){var n=this._relativeTime[e>0?"future":"past"];return bn(n)?n(t):n.replace(/%s/i,t)}var Es={};function gt(e,t){var n=e.toLowerCase();Es[n]=Es[n+"s"]=Es[t]=e}function Kt(e){return typeof e=="string"?Es[e]||Es[e.toLowerCase()]:void 0}function yf(e){var t={},n,r;for(r in e)Ce(e,r)&&(n=Kt(r),n&&(t[n]=e[r]));return t}var lv={};function vt(e,t){lv[e]=t}function bb(e){var t=[],n;for(n in e)Ce(e,n)&&t.push({unit:n,priority:lv[n]});return t.sort(function(r,i){return r.priority-i.priority}),t}function Al(e){return e%4===0&&e%100!==0||e%400===0}function Wt(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function de(e){var t=+e,n=0;return t!==0&&isFinite(t)&&(n=Wt(t)),n}function Vi(e,t){return function(n){return n!=null?(uv(this,e,n),G.updateOffset(this,t),this):La(this,e)}}function La(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function uv(e,t,n){e.isValid()&&!isNaN(n)&&(t==="FullYear"&&Al(e.year())&&e.month()===1&&e.date()===29?(n=de(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Rl(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Tb(e){return e=Kt(e),bn(this[e])?this[e]():this}function Ab(e,t){if(typeof e=="object"){e=yf(e);var n=bb(e),r,i=n.length;for(r=0;r68?1900:2e3)};var wv=Vi("FullYear",!0);function Gb(){return Al(this.year())}function $b(e,t,n,r,i,s,o){var a;return e<100&&e>=0?(a=new Date(e+400,t,n,r,i,s,o),isFinite(a.getFullYear())&&a.setFullYear(e)):a=new Date(e,t,n,r,i,s,o),a}function Gs(e){var t,n;return e<100&&e>=0?(n=Array.prototype.slice.call(arguments),n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function ja(e,t,n){var r=7+t-n,i=(7+Gs(e,0,r).getUTCDay()-t)%7;return-i+r-1}function xv(e,t,n,r,i){var s=(7+n-r)%7,o=ja(e,r,i),a=1+7*(t-1)+s+o,l,u;return a<=0?(l=e-1,u=bs(l)+a):a>bs(e)?(l=e+1,u=a-bs(e)):(l=e,u=a),{year:l,dayOfYear:u}}function $s(e,t,n){var r=ja(e.year(),t,n),i=Math.floor((e.dayOfYear()-r-1)/7)+1,s,o;return i<1?(o=e.year()-1,s=i+Fn(o,t,n)):i>Fn(e.year(),t,n)?(s=i-Fn(e.year(),t,n),o=e.year()+1):(o=e.year(),s=i),{week:s,year:o}}function Fn(e,t,n){var r=ja(e,t,n),i=ja(e+1,t,n);return(bs(e)-r+i)/7}ee("w",["ww",2],"wo","week");ee("W",["WW",2],"Wo","isoWeek");gt("week","w");gt("isoWeek","W");vt("week",5);vt("isoWeek",5);Q("w",Le);Q("ww",Le,Yt);Q("W",Le);Q("WW",Le,Yt);ro(["w","ww","W","WW"],function(e,t,n,r){t[r.substr(0,1)]=de(e)});function Qb(e){return $s(e,this._week.dow,this._week.doy).week}var Xb={dow:0,doy:6};function Kb(){return this._week.dow}function Zb(){return this._week.doy}function Jb(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function qb(e){var t=$s(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}ee("d",0,"do","day");ee("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)});ee("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)});ee("dddd",0,0,function(e){return this.localeData().weekdays(this,e)});ee("e",0,0,"weekday");ee("E",0,0,"isoWeekday");gt("day","d");gt("weekday","e");gt("isoWeekday","E");vt("day",11);vt("weekday",11);vt("isoWeekday",11);Q("d",Le);Q("e",Le);Q("E",Le);Q("dd",function(e,t){return t.weekdaysMinRegex(e)});Q("ddd",function(e,t){return t.weekdaysShortRegex(e)});Q("dddd",function(e,t){return t.weekdaysRegex(e)});ro(["dd","ddd","dddd"],function(e,t,n,r){var i=n._locale.weekdaysParse(e,r,n._strict);i!=null?t.d=i:ae(n).invalidWeekday=e});ro(["d","e","E"],function(e,t,n,r){t[r]=de(e)});function e2(e,t){return typeof e!="string"?e:isNaN(e)?(e=t.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function t2(e,t){return typeof e=="string"?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Sf(e,t){return e.slice(t,7).concat(e.slice(0,t))}var n2="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Sv="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),r2="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),i2=no,s2=no,o2=no;function a2(e,t){var n=ln(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===!0?Sf(n,this._week.dow):e?n[e.day()]:n}function l2(e){return e===!0?Sf(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function u2(e){return e===!0?Sf(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function d2(e,t,n){var r,i,s,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)s=En([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(s,"").toLocaleLowerCase();return n?t==="dddd"?(i=$e.call(this._weekdaysParse,o),i!==-1?i:null):t==="ddd"?(i=$e.call(this._shortWeekdaysParse,o),i!==-1?i:null):(i=$e.call(this._minWeekdaysParse,o),i!==-1?i:null):t==="dddd"?(i=$e.call(this._weekdaysParse,o),i!==-1||(i=$e.call(this._shortWeekdaysParse,o),i!==-1)?i:(i=$e.call(this._minWeekdaysParse,o),i!==-1?i:null)):t==="ddd"?(i=$e.call(this._shortWeekdaysParse,o),i!==-1||(i=$e.call(this._weekdaysParse,o),i!==-1)?i:(i=$e.call(this._minWeekdaysParse,o),i!==-1?i:null)):(i=$e.call(this._minWeekdaysParse,o),i!==-1||(i=$e.call(this._weekdaysParse,o),i!==-1)?i:(i=$e.call(this._shortWeekdaysParse,o),i!==-1?i:null))}function c2(e,t,n){var r,i,s;if(this._weekdaysParseExact)return d2.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(i=En([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[r]=new RegExp(s.replace(".",""),"i")),n&&t==="dddd"&&this._fullWeekdaysParse[r].test(e))return r;if(n&&t==="ddd"&&this._shortWeekdaysParse[r].test(e))return r;if(n&&t==="dd"&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}}function f2(e){if(!this.isValid())return e!=null?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return e!=null?(e=e2(e,this.localeData()),this.add(e-t,"d")):t}function p2(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function h2(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=t2(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function m2(e){return this._weekdaysParseExact?(Ce(this,"_weekdaysRegex")||kf.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(Ce(this,"_weekdaysRegex")||(this._weekdaysRegex=i2),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function g2(e){return this._weekdaysParseExact?(Ce(this,"_weekdaysRegex")||kf.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(Ce(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=s2),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function v2(e){return this._weekdaysParseExact?(Ce(this,"_weekdaysRegex")||kf.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(Ce(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=o2),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function kf(){function e(d,f){return f.length-d.length}var t=[],n=[],r=[],i=[],s,o,a,l,u;for(s=0;s<7;s++)o=En([2e3,1]).day(s),a=Rt(this.weekdaysMin(o,"")),l=Rt(this.weekdaysShort(o,"")),u=Rt(this.weekdays(o,"")),t.push(a),n.push(l),r.push(u),i.push(a),i.push(l),i.push(u);t.sort(e),n.sort(e),r.sort(e),i.sort(e),this._weekdaysRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function Cf(){return this.hours()%12||12}function y2(){return this.hours()||24}ee("H",["HH",2],0,"hour");ee("h",["hh",2],0,Cf);ee("k",["kk",2],0,y2);ee("hmm",0,0,function(){return""+Cf.apply(this)+kn(this.minutes(),2)});ee("hmmss",0,0,function(){return""+Cf.apply(this)+kn(this.minutes(),2)+kn(this.seconds(),2)});ee("Hmm",0,0,function(){return""+this.hours()+kn(this.minutes(),2)});ee("Hmmss",0,0,function(){return""+this.hours()+kn(this.minutes(),2)+kn(this.seconds(),2)});function kv(e,t){ee(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}kv("a",!0);kv("A",!1);gt("hour","h");vt("hour",13);function Cv(e,t){return t._meridiemParse}Q("a",Cv);Q("A",Cv);Q("H",Le);Q("h",Le);Q("k",Le);Q("HH",Le,Yt);Q("hh",Le,Yt);Q("kk",Le,Yt);Q("hmm",fv);Q("hmmss",pv);Q("Hmm",fv);Q("Hmmss",pv);Me(["H","HH"],tt);Me(["k","kk"],function(e,t,n){var r=de(e);t[tt]=r===24?0:r});Me(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e});Me(["h","hh"],function(e,t,n){t[tt]=de(e),ae(n).bigHour=!0});Me("hmm",function(e,t,n){var r=e.length-2;t[tt]=de(e.substr(0,r)),t[rn]=de(e.substr(r)),ae(n).bigHour=!0});Me("hmmss",function(e,t,n){var r=e.length-4,i=e.length-2;t[tt]=de(e.substr(0,r)),t[rn]=de(e.substr(r,2)),t[zn]=de(e.substr(i)),ae(n).bigHour=!0});Me("Hmm",function(e,t,n){var r=e.length-2;t[tt]=de(e.substr(0,r)),t[rn]=de(e.substr(r))});Me("Hmmss",function(e,t,n){var r=e.length-4,i=e.length-2;t[tt]=de(e.substr(0,r)),t[rn]=de(e.substr(r,2)),t[zn]=de(e.substr(i))});function w2(e){return(e+"").toLowerCase().charAt(0)==="p"}var x2=/[ap]\.?m?\.?/i,S2=Vi("Hours",!0);function k2(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}var Ev={calendar:cb,longDateFormat:mb,invalidDate:vb,ordinal:wb,dayOfMonthOrdinalParse:xb,relativeTime:kb,months:jb,monthsShort:hv,week:Xb,weekdays:n2,weekdaysMin:r2,weekdaysShort:Sv,meridiemParse:x2},je={},os={},Qs;function C2(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n0;){if(i=Ll(s.slice(0,n).join("-")),i)return i;if(r&&r.length>=n&&C2(s,r)>=n-1)break;n--}t++}return Qs}function b2(e){return e.match("^[^/\\\\]*$")!=null}function Ll(e){var t=null,n;if(je[e]===void 0&&typeof Jo<"u"&&Jo&&Jo.exports&&b2(e))try{t=Qs._abbr,n=require,n("./locale/"+e),vr(t)}catch{je[e]=null}return je[e]}function vr(e,t){var n;return e&&(Et(t)?n=$n(e):n=Ef(e,t),n?Qs=n:typeof console<"u"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Qs._abbr}function Ef(e,t){if(t!==null){var n,r=Ev;if(t.abbr=e,je[e]!=null)ov("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=je[e]._config;else if(t.parentLocale!=null)if(je[t.parentLocale]!=null)r=je[t.parentLocale]._config;else if(n=Ll(t.parentLocale),n!=null)r=n._config;else return os[t.parentLocale]||(os[t.parentLocale]=[]),os[t.parentLocale].push({name:e,config:t}),null;return je[e]=new gf(Xd(r,t)),os[e]&&os[e].forEach(function(i){Ef(i.name,i.config)}),vr(e),je[e]}else return delete je[e],null}function T2(e,t){if(t!=null){var n,r,i=Ev;je[e]!=null&&je[e].parentLocale!=null?je[e].set(Xd(je[e]._config,t)):(r=Ll(e),r!=null&&(i=r._config),t=Xd(i,t),r==null&&(t.abbr=e),n=new gf(t),n.parentLocale=je[e],je[e]=n),vr(e)}else je[e]!=null&&(je[e].parentLocale!=null?(je[e]=je[e].parentLocale,e===vr()&&vr(e)):je[e]!=null&&delete je[e]);return je[e]}function $n(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Qs;if(!ln(e)){if(t=Ll(e),t)return t;e=[e]}return E2(e)}function A2(){return Kd(je)}function bf(e){var t,n=e._a;return n&&ae(e).overflow===-2&&(t=n[jn]<0||n[jn]>11?jn:n[yn]<1||n[yn]>Rl(n[ht],n[jn])?yn:n[tt]<0||n[tt]>24||n[tt]===24&&(n[rn]!==0||n[zn]!==0||n[Lr]!==0)?tt:n[rn]<0||n[rn]>59?rn:n[zn]<0||n[zn]>59?zn:n[Lr]<0||n[Lr]>999?Lr:-1,ae(e)._overflowDayOfYear&&(tyn)&&(t=yn),ae(e)._overflowWeeks&&t===-1&&(t=Rb),ae(e)._overflowWeekday&&t===-1&&(t=Lb),ae(e).overflow=t),e}var P2=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,M2=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,D2=/Z|[+-]\d\d(?::?\d\d)?/,_o=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Du=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],_2=/^\/?Date\((-?\d+)/i,O2=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,R2={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function bv(e){var t,n,r=e._i,i=P2.exec(r)||M2.exec(r),s,o,a,l,u=_o.length,d=Du.length;if(i){for(ae(e).iso=!0,t=0,n=u;tbs(o)||e._dayOfYear===0)&&(ae(e)._overflowDayOfYear=!0),n=Gs(o,0,e._dayOfYear),e._a[jn]=n.getUTCMonth(),e._a[yn]=n.getUTCDate()),t=0;t<3&&e._a[t]==null;++t)e._a[t]=r[t]=i[t];for(;t<7;t++)e._a[t]=r[t]=e._a[t]==null?t===2?1:0:e._a[t];e._a[tt]===24&&e._a[rn]===0&&e._a[zn]===0&&e._a[Lr]===0&&(e._nextDay=!0,e._a[tt]=0),e._d=(e._useUTC?Gs:$b).apply(null,r),s=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[tt]=24),e._w&&typeof e._w.d<"u"&&e._w.d!==s&&(ae(e).weekdayMismatch=!0)}}function U2(e){var t,n,r,i,s,o,a,l,u;t=e._w,t.GG!=null||t.W!=null||t.E!=null?(s=1,o=4,n=ri(t.GG,e._a[ht],$s(Re(),1,4).year),r=ri(t.W,1),i=ri(t.E,1),(i<1||i>7)&&(l=!0)):(s=e._locale._week.dow,o=e._locale._week.doy,u=$s(Re(),s,o),n=ri(t.gg,e._a[ht],u.year),r=ri(t.w,u.week),t.d!=null?(i=t.d,(i<0||i>6)&&(l=!0)):t.e!=null?(i=t.e+s,(t.e<0||t.e>6)&&(l=!0)):i=s),r<1||r>Fn(n,s,o)?ae(e)._overflowWeeks=!0:l!=null?ae(e)._overflowWeekday=!0:(a=xv(n,r,i,s,o),e._a[ht]=a.year,e._dayOfYear=a.dayOfYear)}G.ISO_8601=function(){};G.RFC_2822=function(){};function Af(e){if(e._f===G.ISO_8601){bv(e);return}if(e._f===G.RFC_2822){Tv(e);return}e._a=[],ae(e).empty=!0;var t=""+e._i,n,r,i,s,o,a=t.length,l=0,u,d;for(i=av(e._f,e._locale).match(vf)||[],d=i.length,n=0;n0&&ae(e).unusedInput.push(o),t=t.slice(t.indexOf(r)+r.length),l+=r.length),Mi[s]?(r?ae(e).empty=!1:ae(e).unusedTokens.push(s),Ob(s,r,e)):e._strict&&!r&&ae(e).unusedTokens.push(s);ae(e).charsLeftOver=a-l,t.length>0&&ae(e).unusedInput.push(t),e._a[tt]<=12&&ae(e).bigHour===!0&&e._a[tt]>0&&(ae(e).bigHour=void 0),ae(e).parsedDateParts=e._a.slice(0),ae(e).meridiem=e._meridiem,e._a[tt]=B2(e._locale,e._a[tt],e._meridiem),u=ae(e).era,u!==null&&(e._a[ht]=e._locale.erasConvertYear(u,e._a[ht])),Tf(e),bf(e)}function B2(e,t,n){var r;return n==null?t:e.meridiemHour!=null?e.meridiemHour(t,n):(e.isPM!=null&&(r=e.isPM(n),r&&t<12&&(t+=12),!r&&t===12&&(t=0)),t)}function W2(e){var t,n,r,i,s,o,a=!1,l=e._f.length;if(l===0){ae(e).invalidFormat=!0,e._d=new Date(NaN);return}for(i=0;ithis?this:e:Tl()});function Mv(e,t){var n,r;if(t.length===1&&ln(t[0])&&(t=t[0]),!t.length)return Re();for(n=t[0],r=1;rthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function dT(){if(!Et(this._isDSTShifted))return this._isDSTShifted;var e={},t;return mf(e,this),e=Av(e),e._a?(t=e._isUTC?En(e._a):Re(e._a),this._isDSTShifted=this.isValid()&&tT(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function cT(){return this.isValid()?!this._isUTC:!1}function fT(){return this.isValid()?this._isUTC:!1}function _v(){return this.isValid()?this._isUTC&&this._offset===0:!1}var pT=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,hT=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function dn(e,t){var n=e,r=null,i,s,o;return Ko(e)?n={ms:e._milliseconds,d:e._days,M:e._months}:Hn(e)||!isNaN(+e)?(n={},t?n[t]=+e:n.milliseconds=+e):(r=pT.exec(e))?(i=r[1]==="-"?-1:1,n={y:0,d:de(r[yn])*i,h:de(r[tt])*i,m:de(r[rn])*i,s:de(r[zn])*i,ms:de(Jd(r[Lr]*1e3))*i}):(r=hT.exec(e))?(i=r[1]==="-"?-1:1,n={y:Ar(r[2],i),M:Ar(r[3],i),w:Ar(r[4],i),d:Ar(r[5],i),h:Ar(r[6],i),m:Ar(r[7],i),s:Ar(r[8],i)}):n==null?n={}:typeof n=="object"&&("from"in n||"to"in n)&&(o=mT(Re(n.from),Re(n.to)),n={},n.ms=o.milliseconds,n.M=o.months),s=new Il(n),Ko(e)&&Ce(e,"_locale")&&(s._locale=e._locale),Ko(e)&&Ce(e,"_isValid")&&(s._isValid=e._isValid),s}dn.fn=Il.prototype;dn.invalid=eT;function Ar(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Rh(e,t){var n={};return n.months=t.month()-e.month()+(t.year()-e.year())*12,e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function mT(e,t){var n;return e.isValid()&&t.isValid()?(t=Mf(t,e),e.isBefore(t)?n=Rh(e,t):(n=Rh(t,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Ov(e,t){return function(n,r){var i,s;return r!==null&&!isNaN(+r)&&(ov(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=n,n=r,r=s),i=dn(n,r),Rv(this,i,e),this}}function Rv(e,t,n,r){var i=t._milliseconds,s=Jd(t._days),o=Jd(t._months);e.isValid()&&(r=r??!0,o&&gv(e,La(e,"Month")+o*n),s&&uv(e,"Date",La(e,"Date")+s*n),i&&e._d.setTime(e._d.valueOf()+i*n),r&&G.updateOffset(e,s||o))}var gT=Ov(1,"add"),vT=Ov(-1,"subtract");function Lv(e){return typeof e=="string"||e instanceof String}function yT(e){return un(e)||eo(e)||Lv(e)||Hn(e)||xT(e)||wT(e)||e===null||e===void 0}function wT(e){var t=zr(e)&&!pf(e),n=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],i,s,o=r.length;for(i=0;in.valueOf():n.valueOf()9999?Xo(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):bn(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",Xo(n,"Z")):Xo(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function LT(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",n,r,i,s;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",t="Z"),n="["+e+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i="-MM-DD[T]HH:mm:ss.SSS",s=t+'[")]',this.format(n+r+i+s)}function IT(e){e||(e=this.isUtc()?G.defaultFormatUtc:G.defaultFormat);var t=Xo(this,e);return this.localeData().postformat(t)}function jT(e,t){return this.isValid()&&(un(e)&&e.isValid()||Re(e).isValid())?dn({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function zT(e){return this.from(Re(),e)}function NT(e,t){return this.isValid()&&(un(e)&&e.isValid()||Re(e).isValid())?dn({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function FT(e){return this.to(Re(),e)}function Iv(e){var t;return e===void 0?this._locale._abbr:(t=$n(e),t!=null&&(this._locale=t),this)}var jv=Xt("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return e===void 0?this.localeData():this.locale(e)});function zv(){return this._locale}var za=1e3,Di=60*za,Na=60*Di,Nv=(365*400+97)*24*Na;function _i(e,t){return(e%t+t)%t}function Fv(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-Nv:new Date(e,t,n).valueOf()}function Yv(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-Nv:Date.UTC(e,t,n)}function YT(e){var t,n;if(e=Kt(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?Yv:Fv,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=_i(t+(this._isUTC?0:this.utcOffset()*Di),Na);break;case"minute":t=this._d.valueOf(),t-=_i(t,Di);break;case"second":t=this._d.valueOf(),t-=_i(t,za);break}return this._d.setTime(t),G.updateOffset(this,!0),this}function UT(e){var t,n;if(e=Kt(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?Yv:Fv,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=Na-_i(t+(this._isUTC?0:this.utcOffset()*Di),Na)-1;break;case"minute":t=this._d.valueOf(),t+=Di-_i(t,Di)-1;break;case"second":t=this._d.valueOf(),t+=za-_i(t,za)-1;break}return this._d.setTime(t),G.updateOffset(this,!0),this}function BT(){return this._d.valueOf()-(this._offset||0)*6e4}function WT(){return Math.floor(this.valueOf()/1e3)}function HT(){return new Date(this.valueOf())}function VT(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function GT(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function $T(){return this.isValid()?this.toISOString():null}function QT(){return hf(this)}function XT(){return sr({},ae(this))}function KT(){return ae(this).overflow}function ZT(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}ee("N",0,0,"eraAbbr");ee("NN",0,0,"eraAbbr");ee("NNN",0,0,"eraAbbr");ee("NNNN",0,0,"eraName");ee("NNNNN",0,0,"eraNarrow");ee("y",["y",1],"yo","eraYear");ee("y",["yy",2],0,"eraYear");ee("y",["yyy",3],0,"eraYear");ee("y",["yyyy",4],0,"eraYear");Q("N",Df);Q("NN",Df);Q("NNN",Df);Q("NNNN",lA);Q("NNNNN",uA);Me(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,r){var i=n._locale.erasParse(e,r,n._strict);i?ae(n).era=i:ae(n).invalidEra=e});Q("y",Gi);Q("yy",Gi);Q("yyy",Gi);Q("yyyy",Gi);Q("yo",dA);Me(["y","yy","yyy","yyyy"],ht);Me(["yo"],function(e,t,n,r){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[ht]=n._locale.eraYearOrdinalParse(e,i):t[ht]=parseInt(e,10)});function JT(e,t){var n,r,i,s=this._eras||$n("en")._eras;for(n=0,r=s.length;n=0)return s[r]}function eA(e,t){var n=e.since<=e.until?1:-1;return t===void 0?G(e.since).year():G(e.since).year()+(t-e.offset)*n}function tA(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;es&&(t=s),vA.call(this,e,t,n,r,i))}function vA(e,t,n,r,i){var s=xv(e,t,n,r,i),o=Gs(s.year,0,s.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}ee("Q",0,"Qo","quarter");gt("quarter","Q");vt("quarter",7);Q("Q",dv);Me("Q",function(e,t){t[jn]=(de(e)-1)*3});function yA(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}ee("D",["DD",2],"Do","date");gt("date","D");vt("date",9);Q("D",Le);Q("DD",Le,Yt);Q("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient});Me(["D","DD"],yn);Me("Do",function(e,t){t[yn]=de(e.match(Le)[0])});var Bv=Vi("Date",!0);ee("DDD",["DDDD",3],"DDDo","dayOfYear");gt("dayOfYear","DDD");vt("dayOfYear",4);Q("DDD",Ml);Q("DDDD",cv);Me(["DDD","DDDD"],function(e,t,n){n._dayOfYear=de(e)});function wA(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}ee("m",["mm",2],0,"minute");gt("minute","m");vt("minute",14);Q("m",Le);Q("mm",Le,Yt);Me(["m","mm"],rn);var xA=Vi("Minutes",!1);ee("s",["ss",2],0,"second");gt("second","s");vt("second",15);Q("s",Le);Q("ss",Le,Yt);Me(["s","ss"],zn);var SA=Vi("Seconds",!1);ee("S",0,0,function(){return~~(this.millisecond()/100)});ee(0,["SS",2],0,function(){return~~(this.millisecond()/10)});ee(0,["SSS",3],0,"millisecond");ee(0,["SSSS",4],0,function(){return this.millisecond()*10});ee(0,["SSSSS",5],0,function(){return this.millisecond()*100});ee(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});ee(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});ee(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});ee(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});gt("millisecond","ms");vt("millisecond",16);Q("S",Ml,dv);Q("SS",Ml,Yt);Q("SSS",Ml,cv);var or,Wv;for(or="SSSS";or.length<=9;or+="S")Q(or,Gi);function kA(e,t){t[Lr]=de(("0."+e)*1e3)}for(or="S";or.length<=9;or+="S")Me(or,kA);Wv=Vi("Milliseconds",!1);ee("z",0,0,"zoneAbbr");ee("zz",0,0,"zoneName");function CA(){return this._isUTC?"UTC":""}function EA(){return this._isUTC?"Coordinated Universal Time":""}var Y=to.prototype;Y.add=gT;Y.calendar=CT;Y.clone=ET;Y.diff=_T;Y.endOf=UT;Y.format=IT;Y.from=jT;Y.fromNow=zT;Y.to=NT;Y.toNow=FT;Y.get=Tb;Y.invalidAt=KT;Y.isAfter=bT;Y.isBefore=TT;Y.isBetween=AT;Y.isSame=PT;Y.isSameOrAfter=MT;Y.isSameOrBefore=DT;Y.isValid=QT;Y.lang=jv;Y.locale=Iv;Y.localeData=zv;Y.max=Q2;Y.min=$2;Y.parsingFlags=XT;Y.set=Ab;Y.startOf=YT;Y.subtract=vT;Y.toArray=VT;Y.toObject=GT;Y.toDate=HT;Y.toISOString=RT;Y.inspect=LT;typeof Symbol<"u"&&Symbol.for!=null&&(Y[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});Y.toJSON=$T;Y.toString=OT;Y.unix=WT;Y.valueOf=BT;Y.creationData=ZT;Y.eraName=tA;Y.eraNarrow=nA;Y.eraAbbr=rA;Y.eraYear=iA;Y.year=wv;Y.isLeapYear=Gb;Y.weekYear=cA;Y.isoWeekYear=fA;Y.quarter=Y.quarters=yA;Y.month=vv;Y.daysInMonth=Wb;Y.week=Y.weeks=Jb;Y.isoWeek=Y.isoWeeks=qb;Y.weeksInYear=mA;Y.weeksInWeekYear=gA;Y.isoWeeksInYear=pA;Y.isoWeeksInISOWeekYear=hA;Y.date=Bv;Y.day=Y.days=f2;Y.weekday=p2;Y.isoWeekday=h2;Y.dayOfYear=wA;Y.hour=Y.hours=S2;Y.minute=Y.minutes=xA;Y.second=Y.seconds=SA;Y.millisecond=Y.milliseconds=Wv;Y.utcOffset=rT;Y.utc=sT;Y.local=oT;Y.parseZone=aT;Y.hasAlignedHourOffset=lT;Y.isDST=uT;Y.isLocal=cT;Y.isUtcOffset=fT;Y.isUtc=_v;Y.isUTC=_v;Y.zoneAbbr=CA;Y.zoneName=EA;Y.dates=Xt("dates accessor is deprecated. Use date instead.",Bv);Y.months=Xt("months accessor is deprecated. Use month instead",vv);Y.years=Xt("years accessor is deprecated. Use year instead",wv);Y.zone=Xt("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",iT);Y.isDSTShifted=Xt("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",dT);function bA(e){return Re(e*1e3)}function TA(){return Re.apply(null,arguments).parseZone()}function Hv(e){return e}var Ee=gf.prototype;Ee.calendar=fb;Ee.longDateFormat=gb;Ee.invalidDate=yb;Ee.ordinal=Sb;Ee.preparse=Hv;Ee.postformat=Hv;Ee.relativeTime=Cb;Ee.pastFuture=Eb;Ee.set=db;Ee.eras=JT;Ee.erasParse=qT;Ee.erasConvertYear=eA;Ee.erasAbbrRegex=oA;Ee.erasNameRegex=sA;Ee.erasNarrowRegex=aA;Ee.months=Fb;Ee.monthsShort=Yb;Ee.monthsParse=Bb;Ee.monthsRegex=Vb;Ee.monthsShortRegex=Hb;Ee.week=Qb;Ee.firstDayOfYear=Zb;Ee.firstDayOfWeek=Kb;Ee.weekdays=a2;Ee.weekdaysMin=u2;Ee.weekdaysShort=l2;Ee.weekdaysParse=c2;Ee.weekdaysRegex=m2;Ee.weekdaysShortRegex=g2;Ee.weekdaysMinRegex=v2;Ee.isPM=w2;Ee.meridiem=k2;function Fa(e,t,n,r){var i=$n(),s=En().set(r,t);return i[n](s,e)}function Vv(e,t,n){if(Hn(e)&&(t=e,e=void 0),e=e||"",t!=null)return Fa(e,t,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=Fa(e,r,n,"month");return i}function Of(e,t,n,r){typeof e=="boolean"?(Hn(t)&&(n=t,t=void 0),t=t||""):(t=e,n=t,e=!1,Hn(t)&&(n=t,t=void 0),t=t||"");var i=$n(),s=e?i._week.dow:0,o,a=[];if(n!=null)return Fa(t,(n+s)%7,r,"day");for(o=0;o<7;o++)a[o]=Fa(t,(o+s)%7,r,"day");return a}function AA(e,t){return Vv(e,t,"months")}function PA(e,t){return Vv(e,t,"monthsShort")}function MA(e,t,n){return Of(e,t,n,"weekdays")}function DA(e,t,n){return Of(e,t,n,"weekdaysShort")}function _A(e,t,n){return Of(e,t,n,"weekdaysMin")}vr("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=de(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}});G.lang=Xt("moment.lang is deprecated. Use moment.locale instead.",vr);G.langData=Xt("moment.langData is deprecated. Use moment.localeData instead.",$n);var Pn=Math.abs;function OA(){var e=this._data;return this._milliseconds=Pn(this._milliseconds),this._days=Pn(this._days),this._months=Pn(this._months),e.milliseconds=Pn(e.milliseconds),e.seconds=Pn(e.seconds),e.minutes=Pn(e.minutes),e.hours=Pn(e.hours),e.months=Pn(e.months),e.years=Pn(e.years),this}function Gv(e,t,n,r){var i=dn(t,n);return e._milliseconds+=r*i._milliseconds,e._days+=r*i._days,e._months+=r*i._months,e._bubble()}function RA(e,t){return Gv(this,e,t,1)}function LA(e,t){return Gv(this,e,t,-1)}function Lh(e){return e<0?Math.floor(e):Math.ceil(e)}function IA(){var e=this._milliseconds,t=this._days,n=this._months,r=this._data,i,s,o,a,l;return e>=0&&t>=0&&n>=0||e<=0&&t<=0&&n<=0||(e+=Lh(ec(n)+t)*864e5,t=0,n=0),r.milliseconds=e%1e3,i=Wt(e/1e3),r.seconds=i%60,s=Wt(i/60),r.minutes=s%60,o=Wt(s/60),r.hours=o%24,t+=Wt(o/24),l=Wt($v(t)),n+=l,t-=Lh(ec(l)),a=Wt(n/12),n%=12,r.days=t,r.months=n,r.years=a,this}function $v(e){return e*4800/146097}function ec(e){return e*146097/4800}function jA(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if(e=Kt(e),e==="month"||e==="quarter"||e==="year")switch(t=this._days+r/864e5,n=this._months+$v(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(ec(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return t*24+r/36e5;case"minute":return t*1440+r/6e4;case"second":return t*86400+r/1e3;case"millisecond":return Math.floor(t*864e5)+r;default:throw new Error("Unknown unit "+e)}}function zA(){return this.isValid()?this._milliseconds+this._days*864e5+this._months%12*2592e6+de(this._months/12)*31536e6:NaN}function Qn(e){return function(){return this.as(e)}}var NA=Qn("ms"),FA=Qn("s"),YA=Qn("m"),UA=Qn("h"),BA=Qn("d"),WA=Qn("w"),HA=Qn("M"),VA=Qn("Q"),GA=Qn("y");function $A(){return dn(this)}function QA(e){return e=Kt(e),this.isValid()?this[e+"s"]():NaN}function Zr(e){return function(){return this.isValid()?this._data[e]:NaN}}var XA=Zr("milliseconds"),KA=Zr("seconds"),ZA=Zr("minutes"),JA=Zr("hours"),qA=Zr("days"),eP=Zr("months"),tP=Zr("years");function nP(){return Wt(this.days()/7)}var On=Math.round,xi={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function rP(e,t,n,r,i){return i.relativeTime(t||1,!!n,e,r)}function iP(e,t,n,r){var i=dn(e).abs(),s=On(i.as("s")),o=On(i.as("m")),a=On(i.as("h")),l=On(i.as("d")),u=On(i.as("M")),d=On(i.as("w")),f=On(i.as("y")),h=s<=n.ss&&["s",s]||s0,h[4]=r,rP.apply(null,h)}function sP(e){return e===void 0?On:typeof e=="function"?(On=e,!0):!1}function oP(e,t){return xi[e]===void 0?!1:t===void 0?xi[e]:(xi[e]=t,e==="s"&&(xi.ss=t-1),!0)}function aP(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=!1,r=xi,i,s;return typeof e=="object"&&(t=e,e=!1),typeof e=="boolean"&&(n=e),typeof t=="object"&&(r=Object.assign({},xi,t),t.s!=null&&t.ss==null&&(r.ss=t.s-1)),i=this.localeData(),s=iP(this,!n,r,i),n&&(s=i.pastFuture(+this,s)),i.postformat(s)}var _u=Math.abs;function ti(e){return(e>0)-(e<0)||+e}function zl(){if(!this.isValid())return this.localeData().invalidDate();var e=_u(this._milliseconds)/1e3,t=_u(this._days),n=_u(this._months),r,i,s,o,a=this.asSeconds(),l,u,d,f;return a?(r=Wt(e/60),i=Wt(r/60),e%=60,r%=60,s=Wt(n/12),n%=12,o=e?e.toFixed(3).replace(/\.?0+$/,""):"",l=a<0?"-":"",u=ti(this._months)!==ti(a)?"-":"",d=ti(this._days)!==ti(a)?"-":"",f=ti(this._milliseconds)!==ti(a)?"-":"",l+"P"+(s?u+s+"Y":"")+(n?u+n+"M":"")+(t?d+t+"D":"")+(i||r||e?"T":"")+(i?f+i+"H":"")+(r?f+r+"M":"")+(e?f+o+"S":"")):"P0D"}var me=Il.prototype;me.isValid=q2;me.abs=OA;me.add=RA;me.subtract=LA;me.as=jA;me.asMilliseconds=NA;me.asSeconds=FA;me.asMinutes=YA;me.asHours=UA;me.asDays=BA;me.asWeeks=WA;me.asMonths=HA;me.asQuarters=VA;me.asYears=GA;me.valueOf=zA;me._bubble=IA;me.clone=$A;me.get=QA;me.milliseconds=XA;me.seconds=KA;me.minutes=ZA;me.hours=JA;me.days=qA;me.weeks=nP;me.months=eP;me.years=tP;me.humanize=aP;me.toISOString=zl;me.toString=zl;me.toJSON=zl;me.locale=Iv;me.localeData=zv;me.toIsoString=Xt("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",zl);me.lang=jv;ee("X",0,0,"unix");ee("x",0,0,"valueOf");Q("x",_l);Q("X",Mb);Me("X",function(e,t,n){n._d=new Date(parseFloat(e)*1e3)});Me("x",function(e,t,n){n._d=new Date(de(e))});//! moment.js
+G.version="2.29.4";lb(Re);G.fn=Y;G.min=X2;G.max=K2;G.now=Z2;G.utc=En;G.unix=bA;G.months=AA;G.isDate=eo;G.locale=vr;G.invalid=Tl;G.duration=dn;G.isMoment=un;G.weekdays=MA;G.parseZone=TA;G.localeData=$n;G.isDuration=Ko;G.monthsShort=PA;G.weekdaysMin=_A;G.defineLocale=Ef;G.updateLocale=T2;G.locales=A2;G.weekdaysShort=DA;G.normalizeUnits=Kt;G.relativeTimeRounding=sP;G.relativeTimeThreshold=oP;G.calendarFormat=kT;G.prototype=Y;G.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};const lP="/assets/arrow-ecc6ea9b.svg",uP=[{id:"rdma",label:"rdma"},{id:"xline",label:"Xline"},{id:"rust",label:"Rust"}],dP=[{id:999999,label:"ALL"},{id:1,label:"Last 1 Month"},{id:6,label:"Last 6 Months"},{id:12,label:"Last 1 Year"}],Qv=C.div`
+ font-weight: 700;
+ font-size: 24px;
+ line-height: 1.375;
+ @media screen and (max-width: 1024px) {
+ font-size: 20px;
+ }
+ @media screen and (max-width: 768px) {
+ font-size: 16px;
+ }
+`,Ih=C.div`
+ max-width: 85%;
+ margin-bottom: 16px;
+ font-weight: 700;
+ font-size: 16px;
+ line-height: 1.5;
+ @media screen and (max-width: 1024px) {
+ margin-bottom: 12px;
+ font-size: 14px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 8px;
+ font-size: 12px;
+ }
+`,jh=C.div`
+ margin-bottom: 24px;
+ font-weight: 600;
+ font-size: 14px;
+ line-height: 16.5px;
+`,cP=C(Qv)`
+ height: 32px;
+ text-align: center;
+`,fP=C(Qv)`
+ margin-bottom: 26px;
+ color: #7680dd;
+`,pP=C.div`
+ margin-bottom: 16px;
+ font-weight: 400;
+ font-size: 8px;
+ line-height: 1.5;
+ @media screen and (max-width: 1024px) {
+ margin-bottom: 12px;
+ font-size: 6px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 8px;
+ font-size: 4px;
+ }
+`,hP=C.img`
+ display: block;
+ margin-inline: auto;
+ width: 100%;
+ margin-top: 24px;
+ border-radius: 8px;
+ @media screen and (max-width: 1024px) {
+ margin-top: 18px;
+ border-radius: 6px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-top: 12px;
+ border-radius: 4px;
+ }
+`,mP=C.div`
+ padding-top: 84px;
+ color: #42424a;
+ @media screen and (max-width: 1024px) {
+ padding-top: 69px;
+ }
+ @media screen and (max-width: 768px) {
+ padding-top: 53px;
+ }
+`,gP=C.div`
+ display: flex;
+ max-width: 1440px;
+ margin-inline: auto;
+ padding-block: 64px;
+ padding-top: 48px;
+ padding-inline: 128px;
+ @media screen and (max-width: 1024px) {
+ padding-block: 48px;
+ padding-top: 32px;
+ padding-inline: 96px;
+ }
+ @media screen and (max-width: 768px) {
+ padding-block: 32px;
+ padding-top: 24px;
+ padding-inline: 64px;
+ }
+ @media screen and (max-width: 425px) {
+ padding-block: 16px;
+ padding-top: 12px;
+ padding-inline: 32px;
+ }
+`,vP=C.div`
+ position: sticky;
+ top: calc(84px + 48px + 48px);
+ left: 0;
+`,zh=C.div`
+ margin-bottom: 32px;
+`,Nh=C.div`
+ width: 200px;
+ margin-bottom: 16px;
+ padding-block: 2px;
+ font-weight: 400;
+ font-size: 12px;
+ line-height: 1.5;
+ text-align: center;
+ background: ${({isActive:e})=>e?"#D9DBEF":"white"};
+ border: 1px solid #d9dbef;
+ border-radius: 16px;
+`,yP=C.div`
+ column-count: 2;
+ column-gap: 32px;
+ flex-grow: 1;
+
+ @media screen and (max-width: 1200px) {
+ flex-direction: column;
+ }
+`,wP=C.div`
+ position: relative;
+ margin-bottom: 32px;
+ padding: 32px;
+ border-radius: 16px;
+ box-shadow: 2px 5px 15px rgba(0, 0, 0, 0.160784);
+ cursor: pointer;
+ page-break-inside: avoid;
+
+ @media screen and (max-width: 1200px) {
+ width: 100%;
+ }
+ @media screen and (max-width: 1024px) {
+ margin-bottom: 24px;
+ padding: 24px;
+ border-radius: 12px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 16px;
+ padding: 16px;
+ border-radius: 8px;
+ }
+`,xP=C.div`
+ flex-shrink: 0;
+ width: 250px;
+ margin-right: 32px;
+ @media screen and (max-width: 1024px) {
+ display: none;
+ }
+`,SP=C.img`
+ position: absolute;
+ top: 36px;
+ right: 36px;
+ width: 18px;
+ height: 18px;
+ @media screen and (max-width: 1024px) {
+ top: 27px;
+ right: 27px;
+ width: 13.5px;
+ height: 13.5px;
+ }
+ @media screen and (max-width: 768px) {
+ top: 18px;
+ right: 27px;
+ width: 13.5px;
+ height: 13.5px;
+ }
+`,Fh=Object.assign({"/src/blogs/2022-07-21-Understanding-Functor-in-Rust/index.md":()=>Ra(()=>import("./index-99aeb84d.js"),[]),"/src/blogs/2023-12-22-Blue-Ethernet-High-Performance-FPGA-Network-Packet-Processing-Project-Overview/index.md":()=>Ra(()=>import("./index-a6688a35.js"),[])}),kP=()=>{const[e,t]=R.useState([]),[n,r]=R.useState([]),[i,s]=R.useState([]),[o,a]=R.useState(999999),l=Gn();R.useEffect(()=>{Promise.all(Object.keys(Fh).map(d=>Fh[d]())).then(d=>{t(d),r(d)})},[]);function u(d,f){const h=new Set(d);return console.log(f.some(y=>h.has(y))),f.some(y=>h.has(y))}return R.useEffect(()=>{const d=e.filter(f=>{const h=G(),y=G(f.metadata.date);return h.diff(y,"months")<=o});if(i.length===0){const f=d;console.log(f),r(f)}else{const f=d.filter(h=>u(i,h.metadata.tags));console.log(f),r(f)}},[i,o]),R.useEffect(()=>{},[e]),v.jsxs(mP,{children:[v.jsx(bl,{theme:"dark",activeId:"resources"}),v.jsx(cP,{children:"Blog"}),v.jsxs(gP,{children:[v.jsx(xP,{children:v.jsxs(vP,{children:[v.jsx(fP,{children:"Sort"}),v.jsxs(zh,{children:[v.jsx(jh,{children:"Category"}),uP.map(({id:d,label:f})=>v.jsx(Nh,{isActive:i.includes(d),onClick:()=>{i.includes(d)?s(i.filter(h=>h!==d)):s([...i,d])},children:f},d))]}),v.jsxs(zh,{children:[v.jsx(jh,{children:"Time"}),dP.map(({id:d,label:f})=>v.jsx(Nh,{isActive:d===o,onClick:()=>a(d),children:f},d))]})]})}),v.jsx(yP,{children:n.length===0?v.jsx(Ih,{children:"No match results"}):n.map(d=>v.jsxs(wP,{onClick:()=>{l(`${d.metadata.date}-${d.metadata.title.split(" ").join("-")}`)},children:[v.jsx(SP,{src:lP}),v.jsx(Ih,{children:d.metadata.title}),v.jsx(pP,{children:d.metadata.description}),d.assetURLs[0]&&v.jsx(hP,{src:d.assetURLs[0],alt:"cover"})]},d.metadata.title))})]})]})},CP=(e,t)=>{const n=R.useRef({});R.useEffect(()=>{const r=a=>{n.current=a.reduce((d,f)=>(d[f.target.innerHTML]=f,d),n.current);const l=[];Object.keys(n.current).forEach(d=>{const f=n.current[d];f.isIntersecting&&l.push(f)});const u=d=>o.findIndex(f=>f.id===d);if(l.length===1)e(l[0].target.id);else if(l.length>1){const d=l.sort((f,h)=>u(f.target.id)-u(h.target.id));e(d[0].target.id)}},i={rootMargin:"0px 0px -40% 0px"},s=new IntersectionObserver(r,i),o=Array.from(document.querySelectorAll("h2, h3"));return o.forEach(a=>s.observe(a)),()=>s.disconnect()},[t])},EP=C.div`
+ padding-top: 84px;
+ color: #42424a;
+ background: #f5f5f5;
+ min-height: 100vh;
+`,bP=C.div`
+ display: flex;
+ max-width: 1440px;
+ margin-inline: auto;
+ padding-block: 64px;
+ padding-top: 32px;
+ padding-inline: 128px;
+`,TP=C.div`
+ flex-grow: 1;
+ margin-right: 32px;
+ padding-inline: 64px;
+ background: #fff;
+ border-radius: 8px;
+`,AP=C.div`
+ flex-shrink: 0;
+ width: 300px;
+`,PP=C.div`
+ position: sticky;
+ top: calc(84px + 32px);
+ left: 0;
+ padding: 32px;
+ background: #ffffff;
+ border-radius: 8px;
+`,MP=C.div`
+ display: block;
+ margin-block: 16px;
+ padding-left: ${({level:e})=>e===3?"48px":"16px"};
+ color: ${({isActive:e})=>e?"#722ed1":"inherit"};
+ border-left: ${({isActive:e})=>e?"8px solid #722ed1":"8px solid transparent"};
+ font-weight: 700;
+ font-size: 0.18rem;
+ line-height: 1.5;
+ /* border-radius: 50%; */
+ cursor: pointer;
+`,DP=Object.assign({"/src/blogs/2022-07-21-Understanding-Functor-in-Rust/index.md":()=>Ra(()=>import("./index-99aeb84d.js"),[]),"/src/blogs/2023-12-22-Blue-Ethernet-High-Performance-FPGA-Network-Packet-Processing-Project-Overview/index.md":()=>Ra(()=>import("./index-a6688a35.js"),[])}),_P=()=>{const{params:e}=Ox(),[t,n]=R.useState(),[r,i]=R.useState("");CP(i,t),R.useEffect(()=>{DP[`/src/blogs/${e}/index.md`]().then(o=>{n(o)}).catch(o=>{console.log(o)})},[]);const s=o=>{var a;(a=document.querySelector(`#${o}`))==null||a.scrollIntoView({behavior:"smooth"})};return v.jsxs(EP,{children:[v.jsxs(bP,{children:[v.jsx(TP,{className:"content",dangerouslySetInnerHTML:{__html:(t==null?void 0:t.default)||""}}),(t==null?void 0:t.toc.length)!==0&&v.jsx(AP,{children:v.jsx(PP,{children:((t==null?void 0:t.toc)||[]).map(({label:o,level:a})=>{const l=o.split(" ").join("-").toLowerCase();return v.jsx(MP,{level:a,isActive:r===l,onClick:()=>s(l),children:o},o)})})})]}),v.jsx(bl,{theme:"dark",activeId:"resources"})]})},OP="/assets/image1-9be52310.png",RP="/assets/image2-baebe8ee.png",LP="/assets/image3-4fcf521a.png",IP="/assets/image4-feb06521.png",jP="/assets/dot-37a9b3fe.svg",zP=C.div`
+ margin-top: 84px;
+ color: #42424a;
+ font-family: PingFang SC;
+ @media screen and (max-width: 1024px) {
+ margin-top: 69px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-top: 53px;
+ }
+`,NP=C.div`
+ max-width: 1440px;
+ margin-inline: auto;
+ padding-block: 24px;
+ padding-inline: 165px;
+ @media screen and (max-width: 1024px) {
+ padding-block: 18px;
+ padding-inline: 123.75px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-block: 12px;
+ padding-inline: 82.5px;
+ }
+ @media screen and (max-width: 425px) {
+ margin-block: 6px;
+ padding-inline: 41.25px;
+ }
+`,FP=C.h1`
+ font-weight: 600px;
+ font-size: 36px;
+ line-height: 1.5;
+ text-align: center;
+ color: #42424a;
+ @media screen and (max-width: 1024px) {
+ font-size: 27px;
+ }
+ @media screen and (max-width: 768px) {
+ font-size: 18px;
+ }
+`,YP=C.ul``,UP=C.li`
+ display: flex;
+ align-items: center;
+ padding-block: 24px;
+ padding-inline: 12px;
+ border-bottom: 0.5px solid #9a9a9a;
+ cursor: pointer;
+ /* :last-child {
+ border-bottom: none;
+ } */
+ @media screen and (max-width: 1024px) {
+ flex-direction: column;
+ padding-block: 18px;
+ padding-inline: 9px;
+ }
+ @media screen and (max-width: 768px) {
+ padding-block: 12px;
+ padding-inline: 6px;
+ }
+`,BP=C.div`
+ flex-grow: 1;
+ margin-right: 48px;
+ @media screen and (max-width: 1024px) {
+ margin-right: 0;
+ }
+`,WP=C.img`
+ width: 40%;
+ @media screen and (max-width: 1024px) {
+ width: 100%;
+ }
+`,HP=C.div`
+ margin-bottom: 6px;
+ font-size: 15px;
+ line-height: 2;
+ font-weight: 600px;
+ color: #7680dd;
+ @media screen and (max-width: 1024px) {
+ margin-bottom: 4.5px;
+ font-size: 12px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 3px;
+ }
+`,VP=C.div`
+ margin-bottom: 27px;
+ font-size: 27px;
+ line-height: 1.22;
+ font-weight: 600;
+ color: #1e1e1e;
+ @media screen and (max-width: 1024px) {
+ margin-bottom: 20.25px;
+ font-size: 20.25;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 13.5px;
+ font-size: 16px;
+ }
+`,GP=C.div`
+ margin-bottom: 6px;
+ font-size: 13.5px;
+ line-height: 1.77;
+ font-weight: 400;
+ color: #7d7d7d;
+ @media screen and (max-width: 1024px) {
+ margin-bottom: 4.5px;
+ font-size: 12px;
+ }
+ @media screen and (max-width: 768px) {
+ margin-bottom: 3px;
+ }
+`,$P=C.div`
+ display: flex;
+ align-items: center;
+ font-size: 12px;
+ line-height: 1%.5;
+ font-weight: 600;
+ @media screen and (max-width: 1024px) {
+ font-size: 9px;
+ }
+ @media screen and (max-width: 768px) {
+ font-size: 6px;
+ }
+`,QP=C.img`
+ width: 22px;
+ height: 22px;
+ padding-inline: 8px;
+ @media screen and (max-width: 1024px) {
+ width: 16.5px;
+ height: 16.5px;
+ padding-inline: 6px;
+ }
+ @media screen and (max-width: 768px) {
+ width: 11px;
+ height: 11px;
+ padding-inline: 4px;
+ }
+`,XP=C.div`
+ color: #797979;
+`,KP=C.div`
+ color: #7680dd;
+`,ZP=[{date:"2023-01-19",title:"Geo-distributed Metadata Management System",description:"The webinar aims to briefly introduce DatenLord’s open source project Xline, a distributed metadata management system for multi-clusters. It reveals the motivation of Xline, the architecture of it and the important consensus protocol, CURP. The performance comparison shows the advantage of Xline over the current solution.",author:"By jicheng Shi",read:"19min",img:OP,url:"https://www.cncf.io/online-programs/cncf-on-demand-webinar-geo-distributed-metadata-management-system/"},{date:"2023-05-04",title:"Proofing the Correctness of the CURP Consensus Protocol Using TLA+",description:"The CURP Replication Protocol (NSDI ’19) aims to eliminate the additional round trips between servers in replicated state machines. We extended CURP into a consensus protocol and used it in our open source project Xline. This webinar is about how we modeled the CURP consensus protocol in TLA+ and verified the correctness of it.",author:"By Ye Tian",read:"20min",img:RP,url:"https://www.cncf.io/online-programs/cncf-on-demand-webinar-proofing-the-correctness-of-the-curp-consensus-protocol-using-tla/"},{date:"2023-09-08",title:"How to Write a Distributed Key-value store in Rust",description:"In this presentation, we will explore how to use Rust to build a distributed key-value store, taking the open-source distributed KV storage Xline as an example.",author:"By Jiawei Zhao",read:"35min",img:LP,url:"https://community.cncf.io/events/details/cncf-cncf-online-programs-presents-cncf-on-demand-webinar-how-to-write-a-distributed-key-value-store-in-rust/"},{date:"2023-12-14",title:"Application and analysis of Jepsen tests in Xline",description:"This presentation offers an overview of applying Jepsen tests to Xline, a distributed KV Store. It begins with a brief introduction to Jepsen, followed by an exploration of the application of Jepsen tests to Xline. The presentation then delves into the test results and system analysis. Finally, it discusses the lessons learned and outlines future work in chaos engineering for Xline.",author:"Zhegnhao Yin",read:"13min",img:IP,url:"https://www.cncf.io/online-programs/cncf-on-demand-webinar-application-and-analysis-of-jepsen-tests-in-xline/"}],JP=e=>{const{date:t,title:n,description:r,author:i,read:s,img:o,url:a}=e.data;return v.jsxs(UP,{onClick:()=>window.location.href=`${a}`,children:[v.jsxs(BP,{children:[v.jsx(HP,{children:G(t,"YYYY-MM-DD").format("dddd MMMM D, YYYY")}),v.jsx(VP,{children:n}),v.jsx(GP,{children:r}),v.jsxs($P,{children:[v.jsx(XP,{children:i}),v.jsx(QP,{src:jP}),v.jsx(KP,{children:s})]})]}),v.jsx(WP,{src:o})]})},qP=()=>v.jsxs(zP,{children:[v.jsx(bl,{theme:"dark",activeId:"resources"}),v.jsx(FP,{children:"Tech Talk"}),v.jsx(NP,{children:v.jsx(YP,{children:ZP.map(e=>v.jsx(JP,{data:e},e.title))})})]}),eM=C.div`
+ font-family: Inter;
+ font-size: 40px;
+ font-weight: 700;
+ line-height: 60px;
+ text-align: center;
+ color: #42424a;
+`,tM=({children:e,style:t})=>v.jsx(eM,{as:"h2",style:t,children:e}),nM="/assets/image1-c268e26b.png",rM="/assets/image2-4023a72e.png",Yh=C.img`
+ width: 100%;
+`,iM=()=>v.jsxs(ve.Fragment,{children:[v.jsx(Hi,{children:"DatenLord Cloud Service"}),v.jsx(xr,{children:v.jsx(Yh,{style:{width:"100%"},src:nM})}),v.jsxs(xr,{backgroundColor:"#F8FAFF",children:[v.jsx(tM,{style:{marginBottom:"1rem"},children:"DatenLord Innovations"}),v.jsx(Yh,{style:{width:"100%"},src:rM})]})]}),sM="/assets/all-dc78132e.png",oM=C.img`
+ width: 100%;
+ margin-bottom: 1rem;
+ &:last-child {
+ margin-bottom: 0;
+ }
+`,aM=()=>v.jsxs(ve.Fragment,{children:[v.jsx(Hi,{children:"DatenLord Appliance"}),v.jsx(xr,{children:v.jsx(oM,{src:sM})})]}),lM="data:image/png;base64,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",uM="/assets/image2-25dd7e89.png",dM="data:image/png;base64,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",cM="/assets/image4-c6d8ff14.png",fM=C.div`
+ background: #ffffff4f;
+ border-radius: 0.42rem;
+ overflow: hidden;
+ margin-bottom: 0.7rem;
+ &:last-child {
+ margin-bottom: 0;
+ }
+`,pM=C.div`
+ padding: 0.4rem 0.8rem;
+ background: #0a061f;
+ color: #ffffff;
+ font-size: 0.48rem;
+ line-height: 0.74rem;
+ font-weight: 600;
+`,hM=C.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ background: #ffffff4f;
+ padding: 0.42rem 0.32rem;
+`,mM=C.div`
+ width: 100%;
+ color: #050214;
+ font-size: 0.3rem;
+ line-height: 0.42rem;
+ font-weight: 500;
+ padding: 0.37rem 0.34rem;
+ background: #d9dbef;
+ border-radius: 0.12rem;
+ position: relative;
+ overflow: hidden;
+`,gM=C.div`
+ padding: 0.28rem 0.32rem;
+`,Uh=C.div`
+ font-size: 0.38rem;
+ line-height: 0.56rem;
+ font-weight: 600;
+ color: #000000;
+`,vM=C.div`
+ font-weight: 600;
+ font-size: 0.32rem;
+ line-height: 0.42rem;
+ color: #7767a0;
+`,yM=C.div`
+ color: #42424a;
+ font-weight: 400;
+ font-size: 0.24rem;
+ line-height: 0.42rem;
+`,wM=C.div`
+ font-size: 0.24rem;
+ line-height: 0.42rem;
+ font-weight: 400;
+ color: #42424a;
+ display: flex;
+ align-items: flex-start;
+ ::before {
+ content: '•';
+ padding-inline: 0.08rem;
+ }
+`,xM=C.div`
+ margin-bottom: 0.42rem;
+ &:last-child {
+ margin-bottom: 0;
+ }
+`,SM=[{title:"AI Inference",desc:" Integrating GPU computing power in a cloud-based manner to address the challenges of expensive and dispersed AI computing resources. Leveraging storage and networking to enhance user experience, achieving sub-second startup and recovery times.",cover:lM,challenge:{desc:"The surge in demand for high-performance GPU computing power for large AI models has led to an imbalance in supply and demand.",txt:"The scarcity of GPU computing power, exacerbated by factors such as design and manufacturing costs and market monopolies, has significantly raised GPU prices. GPU computing resources prioritize AI training scenarios, resulting in the fragmented or decentralized nature of GPU computing resources for AI inference scenarios."},options:[{title:"Solution",txt:["Optimize caching techniques to implement data preloading and asynchronous persistence, thereby improving data access performance.","Implement high-performance RDMA networking for multi-node memory sharing, accelerating the distribution and loading of large models."]},{title:"Customer's needs and challenges:",txt:["The customer is a company specializing in overseas live streaming sales, utilizing large model technology for AI presenters to achieve low-cost horizontal business expansion.",'The customer plans to customize large models for live streaming scenarios to establish an independent and controllable "Live Streaming Scene Large Model."']},{title:"DatenLord Cloud Service can provide:",txt:['Cross-cloud technology to facilitate the implementation of "large model" business scenarios.',"Efficient data synchronization mechanisms to ensure real-time and consistent large model performance across different data centers.","Effective data distribution mechanisms to ensure the large model can promptly access and process the latest data, enhancing business response speed.","Flexible management and adjustment tools, allowing customers to independently control and adapt large models based on changing business needs.","Advanced security measures, including data encryption and identity authentication, ensuring the secure operation of large models in a cross-cloud environment."]}],image:cM},{title:"High-Performance Storage",desc:"Unified high-performance cross-cloud data access and cross-cloud distributed metadata management.",cover:uM,challenge:{desc:"The disconnect between clouds leads to data isolation and data fragmentation, and when accessing data across clouds, access speed and consistency will suffer.",txt:"With the rapid implementation of AI applications, multi-cloud architecture has become the mainstream choice for enterprise-level IT. However, the isolation between clouds leads to data segregation and fragmentation. Due to data often being bound to a specific cloud provider/data center, it cannot be freely accessed. Additionally, cross-cloud data access exhibits high-latency characteristics, and existing distributed consensus protocols are limited to use within a single data center. Therefore, when accessing data across clouds, access speed and consistency are compromised."},options:[{title:"Solution",txt:["Firstly, regardless of where the data is stored, DatenLord accelerates cross-cloud data access through caching and provides unified data management for automatic data migration and backup. ","Secondly, DatenLord adopts a kernel-bypass architecture, enabling storage IO self-scheduling management to enhance performance. ","Thirdly, a low-latency cross-cloud distributed consensus protocol ensures high speed and strong consistency in wide-area network scenarios, while eliminating single-point bottlenecks within the system."]},{title:"Customer's needs and challenges:",txt:["The customer is a content-focused entertainment company primarily operating in the education, social, and short-form content sectors in the Middle East and Europe.","The customer requires a solution for data synchronization, migration, backup, and automated management across multiple countries and data centers."]},{title:"DatenLord Cloud Service offers:",txt:["An integrated solution to help the customer effectively manage the complexity of multiple-country, multiple-data-center operations, thereby enhancing business availability and stability.","Real-time data synchronization across multiple countries and data centers, ensuring consistency of content globally.","Efficient tools for data migration and backup, addressing the needs of business expansion and disaster recovery.","Automated management tools, including automated deployment, resource allocation, and monitoring.","High availability and elastic scaling solutions to address challenges posed by technical failures or peak periods."]}]},{title:"High-Performance Networking",desc:"A deep integration of software and hardware",cover:dM,challenge:{desc:"The disconnect between clouds leads to data isolation and data fragmentation, and when accessing data across clouds, access speed and consistency will suffer.",txt:" With the advent of the era of large models, whether in the transfer and migration of training data and checkpoints during model training or in the dynamic scheduling and loading of multiple models during the inference process, there is a desire to maximize the bandwidth of every bit on the network and bus. This is done in exchange for shorter training times and smaller request-response latencies. As the scale of training and inference clusters grows, and business complexity increases, occasional congestion or failures in the network become inevitable. Additionally, readjusting network card parameters after each change in network topology is a cumbersome task. A high-performance network that can rapidly and autonomously adapt to changes in network topology, providing continuous and stable data transfer capabilities, has become an essential infrastructure in the era of large models."},options:[{title:"Solution",txt:["Leveraging the optimized RoCE v2 protocol and hardware-accelerated error correction coding technology, efficient data recovery and retransmission mechanisms can be provided even in challenging network conditions.","Through a deep integration of software and hardware, a comprehensive suite enables dynamic awareness of the entire network's traffic. An intelligent decision system can rapidly and automatically adjust software and hardware parameters for each node in various network environments, ensuring optimal throughput across the entire network."]}]}],kM=({data:e})=>{const{title:t,desc:n,cover:r,challenge:i,options:s,image:o}=e;return v.jsxs(fM,{children:[v.jsx(pM,{children:t}),v.jsxs(hM,{children:[v.jsxs(mM,{children:[n,v.jsx("img",{style:{position:"absolute",top:"0",right:"0",height:"1.8rem"},src:r})]}),v.jsxs(gM,{children:[v.jsx(Uh,{style:{marginBottom:"0.16rem"},children:"Challenge"}),v.jsx(vM,{style:{marginBottom:"0.16rem"},children:i.desc}),v.jsx(yM,{style:{marginBottom:"0.42rem"},children:i.txt}),s==null?void 0:s.map(({title:a,txt:l})=>v.jsxs(xM,{style:{},children:[v.jsx(Uh,{style:{marginBottom:"0.16rem"},children:a}),l.map((u,d)=>v.jsx(wM,{children:u},d))]},a))]}),o&&v.jsx("img",{src:o,style:{width:"10rem"}})]})]})},CM=()=>v.jsxs(ve.Fragment,{children:[v.jsx(Hi,{children:"Solution"}),v.jsx(xr,{backgroundColor:"#EDEDF6",children:SM.map(e=>v.jsx(kM,{data:e},e.title))})]}),EM="/assets/image1-fc6c83ef.png",Ou=C.div`
+ padding: 0.75rem 0.4rem;
+ border-radius: 0.12rem;
+ position: relative;
+ overflow: hidden;
+`,bM=C.div`
+ font-weight: 700;
+ font-size: 0.63rem;
+ line-height: 0.84rem;
+`,Bh=C.div`
+ font-weight: 600;
+ font-size: 0.3rem;
+ line-height: 0.375rem;
+`,Oo=C.div`
+ font-weight: 400;
+ font-size: 0.24rem;
+ line-height: 0.64rem;
+ color: #0a061f;
+`,Wh=C.div`
+ font-weight: 700;
+ font-size: 0.4rem;
+ line-height: 0.53rem;
+`,Ro=C.div`
+ font-weight: 400;
+ font-size: 0.24rem;
+ line-height: 0.36rem;
+`,TM=C.img`
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 4.2rem;
+`,AM=()=>v.jsxs(ve.Fragment,{children:[v.jsx(Hi,{children:"Open Source Project"}),v.jsxs(xr,{children:[v.jsx(bM,{style:{marginBottom:"0.36rem"},children:"RDMA"}),v.jsx(Bh,{style:{marginBlock:"0.88rem"},children:"Async-RDMA is a framework designed to provide advanced abstractions and an asynchronous API for developing Remote Direct Memory Access (RDMA) applications."}),v.jsxs(Ou,{style:{background:"#7767A0",color:"#FFFFFF",marginBottom:"0.32rem"},children:[v.jsx(Ro,{style:{marginBottom:"0.16rem"},children:"RDMA enables direct memory access from one machine to another, enhancing the performance of applications that require low latency and high throughput. RDMA supports kernel bypass and zero-copy, eliminating the need for CPU involvement. However, writing RDMA applications using low-level C language libraries can be challenging and error-prone. To simplify this process, we developed Async-RDMA, which offers an easy-to-use API, abstracting the complexity of underlying RDMA operations."}),v.jsx(Wh,{children:"With Async-RDMA, most RDMA operations can be accomplished with just a single line of code. It provides the following key features:"})]}),v.jsxs(Ou,{style:{background:"#D9DBEF",marginBottom:"0.88rem"},children:[v.jsx(Oo,{children:"1. A tool for establishing connections with RDMA endpoints."}),v.jsx(Oo,{children:"2. An advanced asynchronous API for transferring data between endpoints."}),v.jsx(Oo,{children:"3. A high-level API for managing RDMA memory regions."}),v.jsx(Oo,{children:"4. A framework working behind the scenes to manage memory regions and execute RDMA requests asynchronously."}),v.jsx(TM,{src:EM})]}),v.jsx(Bh,{style:{marginBottom:"0.88rem"},children:"Open-RDMA is an open-source software and hardware implementation suite based on the optimized extension of the RoCE v2 protocol."}),v.jsxs(Ou,{style:{background:"#0A061F",color:"#FFFFFF"},children:[v.jsxs(Wh,{style:{marginBottom:"0.16rem"},children:["RoCE v2",v.jsxs("span",{style:{fontWeight:"600",fontSize:"0.32rem",lineHeight:"0.42rem"},children:[" ","(RDMA over Converged Ethernet version 2)"]})," ","is a network protocol designed to enable Remote Direct Memory Access (RDMA) over Ethernet. It represents an improvement over the original RoCE standard, offering a more efficient and scalable approach to RDMA execution on Ethernet."]}),v.jsx(Ro,{style:{marginBottom:"0.48rem"},children:"The core component of the Open-RDMA suite is a software and hardware implementation that further optimizes the RoCE v2 protocol. Taking full advantage of collaborative software and hardware design, it achieves high throughput and low latency through hardware acceleration. The suite utilizes a software user-space protocol stack for centralized management and highly configurable transfer strategies, ensuring optimal performance in various network environments. The project employs Bluespec SystemVerilog, C, and Rust for implementing hardware and software logic, ensuring correctness and maintainability of the open-source project."}),v.jsx(Ro,{style:{marginBottom:"0.48rem"},children:"In terms of testing and validation, we actively utilize open-source verification tools while also developing our own. Open-RDMA suite undergoes RTL-level verification using Bluesim and Cocotb tools, protocol packet-level verification with our in-house RoCE-Sim tool, and software-hardware co-simulation verification and debugging using the Distro-Sim tool."}),v.jsx(Ro,{children:"Currently, we have established the basic framework for the entire open-source suite and are progressively incorporating additional features."})]})]})]}),Hh="/assets/image1-63140f6c.png",PM="/assets/image2-8d0dcae7.png",MM="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANpSURBVHgBvZhdThpRFMf/5/KRPpiGHRRjbdInxxVUVqCuQFyBmKLxjcubERPpCsQVyA7EFYhPTbUGugPqk0Gd23NgZphRmS+o/4QMDHfu/Obcj/M/Q0ihir4q5M1C2ZBa4Z8WAQU5b2D6fLjmY/tYL3eQUJSksUBk6eOOMqjAAQhR3+C53tBfWpg3zJ6+4QhkzvlrEcnUHOK+3tSrg6iGsWC+618bGWTPg2fNpYLdAnKdB2DwYRSpp+IzaIOg1vn/otcS6D7ivhQFFAlT0T+LeeSv4A0L9RWetw8j5sS+vtN8qPmAWg29tB12jUKEGOQiCEKlwxiT80gvadtg1/3NT13moS4jLYxzcTEIsthHTB3Xl5q8sn5MzmROkBaGJ+yO+93AricBcdXQnyvyIOP+UNjn+YekMDJX+GA5WH3utIW0MpPoELLrSAqTR87y+oJ9jRmkSLUnfWFtajtMlfFgCKaLGTQeXnKXdRHJYeYrY+y/UW2mwxgVuWMmERF9imozHYZGSW8kA/qGGSSpxNdxNzHMEJmOrwNLkiRSykBVvJ5C5t9UmKZeHHBEOuMOUMhjoYIUki1C+SJLsM+QFEYkFsDXtBYMdzxlkdPw7eJhqSQURgySG51RV2whnM0wljhZnnBUtiY3o1JY+8il/QjadLdzlmTwXrV+Vwu7pqpv1/b0b0mwvqGNTiex/MyB7hVtmAu/R8HIyaFDxr62CV2emEUyVDBE6wRaC/Zg14/0so66TwKn12OnZ/vsRGy12U5sxmkYCSMh5yet8cdKAeIqlh+eCuM4PPEfU1K+5BrzRyoC7sSXd0iAV5AC6k0Yx/Oe4lUkzCUMtSULR03GA47oW37YUXuI4W5Tf+2HwlTrvZoytg4gsFt7REbLRogU4pVVZqjaywXAQCU/EIWBmFEeoe2GXpzJQrh6adJfAqkJ/Y0VjIg54z2mNC8QkZh0zlOrfm+TQ+7U/d+DcQo0V7wcP5fTDkuY5OHMaCceA8meVK3dVjyY11WA2sV/lADZxnh5j0jVxBWoMd3sVUBSSRnjrxqyWLBURfdk+VpjEAxmqgKSylc1ZKC2VBZPPuM9WxWQVMGqgSxFgQKd5rZy4uhhsnPL3Qv8qsWzB6J3hRmvVvf+NFBioPjVBi+1p813nS+OxHDJW40hH/8BjFhkJX9+5PYAAAAASUVORK5CYII=",DM="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA8CAYAAAAzF3kIAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAATwSURBVHgB7ZtPbBRVHMd/b7aVEi3dGkEvbdaz3VgTT3Qbt/GkjVr0oMABvBjRhED8AxgNJSYC0YOYKMYLVUPRE2hET0obV+KhJo1bLvTApr3wL3RmQ0gpMI/3neWV2WFml/fmbbM74UMWdmdnZ/Yzv9/7vT/MMqpDWnCT2voZsQwe1BQw26Vb01ftyxN194x645H0Y3mL2AgxtkW8TFNzYnPOT9ygG/sWbbsUtsM9gpWIte+1GNtBLYTL+ZdtQtQW+LdXCQq3jMseOiWeZqg1KS3xpSF/NJcFEyAnqZK05NZb1H6EWl8OZNorLh4p/NWZXruVtVibq4VwyazqWO1cX7z2r5eia7rXnaNkRM8Ht8sLl7pZZ3rdCGN0nBKIy90hixEfoYTCyNoi+nL2NCUUkZl5VNF+Siw83UYNpqtrDWX7+qi3t0c87/K2zc3Nk+M4NDc/7z1vHKwxgpDa9vZbNDgwQLnc+pr7Fgqn6bff/6CT4tEIWSa6CE6GkGLviIeMlgrjx36m/Qc/NypqTHDTxtfpwGefaon5gdzujz7xImqC1KrVD49STPbs+sCT6+jooLjgAr32qpiliT+Ff05TXGILQm73rvfJNGi7JiRjCaK9je79mBoFJB2nTFNT/5EuFmmCso+09IMikXvuedr27nalQiHbXbb/Wa/I+ME5cgPrSRftIlOcnvIk/Qy/tKEqpRDhbPYpKhbPVPq9O9JoZ/jsoIjQ/8UZOnDwi+XPZLN9VJj8s+q46EqGX95AOmj1g6iYQTnglMtVrw9/+12tw4S+jwsRBKmKKOq0R60URT8XRm9PD8UlqptBMdNBWRCRQxqtNIhiWNbUQ1kwqsGjwJjonIuiTUal9vCLL5AqyoKbN74Ruv3o+E9kim8iBAdz6tVUu5vwg8JgYtQhQbUN62Z02rhWGwyCztg0YdVUZ5xrRHClWJEiE3ZlGyEdnikOqaIhGJ6OcYZTQfyzfz8680RlweLMTOj2XM6cYNTFwhKHKsqCfxfCqyVGNyZSFceIGrVEnbsW6hEshkcQKXXy1+OxJLHkMf7jWOQxdAYSyoLo7wq+K4mGL6XxxSCJwbgKEMNnCpN/RQ4Dcc4VaYPg6LG7oxY5B8R8DkDy8Ndf0dy5s55srdk+3sM+mHrhM7Wi7z+nClqCkJJRxJwPXxLjRykJkLL1Cg8qMvap14EjcjinDtpLFjjp5k2VcSmuPF4fGfvBW0eRYkjfne99GNm1zM7O0s4d2+ueCxmiO1qKtWyI6MllC7RDfBGJlK6Hc+VCzfcx2w8uY6gQa7CNtJTLDSgO/gpoYvE2rhwwsvAbXDpEaiKlvBHJo4/X/GxUBE3IAaMr2xANVkJVQVyc/UKu3nrO/WJkPghQ5bDypVvtAKSwdGhKDhj9zxcJooiIovzv8XUdYcjUhlQj5pUNEWwmjKVos/JAsNWBoE0JxmKi66HkMm1xThOUUDgTgi65Y5RUXPpF3oy3QM1727IupfLCxScrVZS7+yhhcM49p+U7fju7154Sk9U8JQDhMeksXMjj+XI/mOKpN8U/JWp9Stc52ypfBG5KfyLjMrfFb0q3hhbt8yW5oWokY4s3LL70DDF+iFoNzg/hu/vlQOQPQ7xoWu4ocXqFmviHIULse4tSJ0RwJsJ2YPdzFCGbd4n34/5LagIsskrk1YvF6eAPQYLcBp8rD37upJIdAAAAAElFTkSuQmCC",_M="data:image/png;base64,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",OM="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADsAAAAvCAYAAABdYrI+AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALXSURBVHgB7Zo9bxNBEIbf2XP8QRIwkh1fRBNR0USkpLQlfgD5BUlqkEhNA6koaaBOQkeVUNEgYSpQJARSmtDANojDRuESn1Fi41t2LiSyIxyZ+APf+h7pvN7b8flez8zeWjuEDkhrxsbGZgBrDkOEUpBEDbdcLn/oxJ7aDbDAWDx5lwh5bZTHcCO18GJdYMV1HNnO6K9iM7npZQHc179dGiFDi15rJ7pFLHsznkit6o/cQriRNULhtOAWsdmp3HsiGqq8PC9KKRfKLzTnszh+k81NPzJFKKO1pElYGxytx+cCsdmsvUhQyzCPmXg8sXrcCcJ4Kmd/5gEYiq/z97vjFEUmY+dhsFCGGkcTriCBRZgOYYEboRP5OgyHJyvbtmdi6DKEb89exJ3ZS+gXj7f38GR7H93i+/6cCOMq6TwoJdICIwTpx47CCKB8LI2UZ0dKbAxdEpbZmInC2FSi2dhUotn4X4hm4yElEmsqkVhTicSaykDFfqn+wsN3btD+D7peVHRCpebrxcE+nn6sBH1u56+OBwuSK+MDuYWAvn4Ti2Rh6zseKnW/ZWzjUxVb3w5PRA+CvollMbzMOytkeYyXg2zLgll4P9E5Sy56CHtr4WUJ997udpybbMf2N59/xc6POvqBZUGyZ6U+ut6qDG74zS62Soc4L3yN+RdOX/K50Wi4Mf3P/TV1IbZSUzpc94IJqFdwWPPRw7CWvClNGdvOC4VXMBmFtVLJWRK8b6m9W4TBCIGVoOUXRUcdI9Fedf4Uklj88tPz5IWJycs6d2/ALKT26pLnecET52S5WE8lHujHUEeVYuGAXEEoOE3lQSdiXSndWipR0EabCD9SxUSLUMZq7hy47kG16j1LTUzu6ZC+pk+Fb+9W52itdjC/Wy7L00Ntaxd5W74B5EnRsr7CkJcikKt8f92yaFN7s9jWCh3AhVPJZHLO9yktxFDt1Es+nDOKM5v5DSBkJiWebKINAAAAAElFTkSuQmCC",RM=[{name:"Distributed storage software development senior engineer (full-time, urgent recruitment)",responsibilities:["Participate in the development and maintenance of the open source distributed storage project DatenLord;","Improve the testing of DatenLord and build a new DatenLord testing framework;","Improve the performance of DatenLord distributed performance."],requirements:["At least 5 years of experience in distributed system development or research, preferably in distributed storage system development or research;","Relevant development and usage experience of distributed storage systems such as HDFS , Ceph, GlusterFS;","Familiarity with Rust, C or C++ languages;","Experienced in developing and maintaining open source projects."]},{name:"Rust distributed storage development (internship, soon to be filled)",txt:"Participate in the development of high-performance distributed storage systems, involving development content including but not limited to:",responsibilities:["Distributed storage system development;","Distributed data consistency protocol research and development;","Distributed caching, data management services;","Kernel-driven development using Rust language."],requirements:["Proficiency in Rust language, familiar with multi-threaded, high concurrency programming;","Familiar with Linux operation system storage management related functions;","Strong learning ability, self-driven and team player;","6 months or more internship time, 4~5 days per week."],skills:["Familiarity with Rust asynchronous programming, experienced with tokio or async-std is preferred;","Familiar with distributed consistency protocol Paxos or Raft, distributed KV storage etcd, experienced in programming CSI interface of K8S is preferred;","Previously experienced with open source projects/open source contributions is preferred."]},{name:"FPGA development (internship)",responsibilities:["Responsible for implementing network IO acceleration based on FPGA, as well as the design and RTL implementation of algorithm acceleration for encryption, compression, coding, etc.;","Realize RTL design, integration and verification of commonly used peripheral interface IP;","Cooperate with upper layer software to realize software and hardware joint debugging."],requirements:["Familiar with FPGA-based design flow, familiar with Xilinx FPGA chip architecture, proficient in Xilinx FPGA development tools;","Proficiency in the use of Verilog, SystemVerilog and SystemVerilog Assertion;","Proficiency in TCL, Python scripting language;","Strong learning ability, self-driven and team player;","6 months or more of internship time, 4~5 days per week."],skills:["Familiarity with at least one new generation HDL language such as Bluespec, SpinalHDL, Chisel, Clash, etc;","Familiar with CXL, PCIe, AXI, ACE, CHI and other related bus interface development is preferred;","Familiar with TCP/IP, RDMA, NVMe protocols and experienced in encryption, compression and coding development is preferred."]},{name:"The joint hardware and software research and development internship (internship)",txt:"Participate in the hardware and software development of high performance storage SoC chips:",responsibilities:["Responsible for the RTL implementation of network IO acceleration;","Responsible for the design and RTL implementation of algorithm acceleration for encryption, compression, coding, etc.;","Responsible for Linux driver development of SoC chip;","Responsible for the implementation of hardware and software joint debugging and automated testing."],requirements:["Familiar with IC design flow, familiar with commonly used simulation, synthesis and other EDA tools;","Familiar with Xilinx's FPGA design flow, proficient in Xilinx's FPGA development tools;","Familiar with new generation HDL languages such as Bluespec, SpinalHDL, Chisel or Clash;","Familiarity with Rust for Linux development kernel modules, drivers;","Familiarity with QEMU-based toolchain of hardware and software joint debugging;","Strong learning ability, self-driven and team player."],skills:["Experienced in network or storage hardware system development is preferred;","Familiarity with TCP/IP or InfiniBand/RDMA network protocol stack is preferred;","Familiarity with protocol interface development such as CXL, PCIe, AXI, ACE, CHI, NVMe, etc. Is preferred;","Relevant experience in DSP domain, familiar with LDPC, fountain codes, elliptic curve encryption algorithms and zero-knowledge proof algorithms is preferred;","Experienced in Linux kernel network, file and storage related development is preferred;","Long-term internship (more than 1 year) is preferred."]}],Ru=C.div`
+ font-weight: 700;
+ font-size: 0.4rem;
+ line-height: 0.6rem;
+ text-align: center;
+ color: #42424a;
+ margin-inline: 2.5rem;
+ padding-bottom: 0.88rem;
+ border-bottom: 0.01rem solid #d9dbef;
+ margin-bottom: 0.88rem;
+`,Xv=C.div`
+ font-weight: 400;
+ font-size: 0.28rem;
+ line-height: 0.5rem;
+`,Vh=C(Xv)`
+ position: relative;
+ padding-left: 0.24rem;
+ &::before {
+ content: '•';
+ position: absolute;
+ top: 0;
+ left: 0;
+ }
+`,Lo=C.span`
+ font-weight: 600;
+ color: #7680dd;
+`,LM=C.div`
+ font-weight: 600;
+ font-size: 0.3rem;
+ line-height: 0.41rem;
+ margin-bottom: 0.16rem;
+`,Gh=C.div`
+ font-weight: 400;
+ font-size: 0.24rem;
+ line-height: 0.41rem;
+`,IM=C.div`
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 1.24rem;
+`,jM=C.img`
+ width: 4.4rem;
+ height: min-content;
+`,zM=C.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+`,Lu=C.div`
+ display: flex;
+ align-items: center;
+`,Iu=C.img`
+ height: 0.6rem;
+ margin-right: 0.2rem;
+`,ju=C.div`
+ font-weight: 600;
+ font-size: 0.28rem;
+ line-height: 0.5rem;
+ color: #000000;
+`,NM=({data:e})=>{const{name:t,responsibilities:n}=e;return v.jsxs("div",{style:{border:"0.01rem solid #EAEBF0",padding:"0.35rem",borderRadius:"0.01rem",color:"#42424A",position:"relative"},children:[v.jsx("div",{style:{width:"0.7rem",height:"0.7rem",background:"#D9DBEF",borderRadius:"50%",position:"relative",marginBottom:"0.35rem"},children:v.jsx("img",{src:MM,style:{width:"0.31rem",position:"absolute",top:"0.19rem",left:"0.19rem"}})}),v.jsx(LM,{children:t}),v.jsx(Gh,{children:"[ Job Responsibilities ]"}),n.map(r=>v.jsx(Gh,{children:r},r)),v.jsx("div",{style:{position:"absolute",top:"0.35rem",right:"0.4rem",fontWeight:"600",fontSize:"0.2rem",lineHeight:"0.32rem",padding:"0.17rem 0.26rem",border:"0.01rem solid #DAE0E6",borderRadius:"0.08rem"},children:"Job Details"})]})},FM=()=>v.jsxs(ve.Fragment,{children:[v.jsx(Hi,{children:"Company"}),v.jsxs(xr,{children:[v.jsx(Ru,{children:"Company Introduction"}),v.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"0.88rem",marginBottom:"0.88rem"},children:[v.jsx("img",{src:Hh,style:{width:"4.46rem",height:"min-content"}}),v.jsxs(Xv,{children:["DatenLord has consistently dedicated itself to building"," ",v.jsx(Lo,{children:"the high-performance AI+ Cloud infrastructure platform, actively driving the implementation of AI applications."})," ","Through deep integration of software and hardware, DatenLord delivers high-performance storage and networking. It provides",v.jsx(Lo,{children:"elastic , convenient, and cost-effective"})," infrastructure services for AI applications, aiming to meet the diverse demands of AI + Cloud across various industries."]})]}),v.jsxs("div",{style:{display:"flex",alignItems:"center",marginBottom:"1.2rem"},children:[v.jsxs("div",{children:[v.jsxs(Vh,{style:{marginBottom:"0.64rem"},children:["DatenLord focuses on ",v.jsx(Lo,{children:"core foundational technologies"}),", engaging in various cutting-edge technical domains such as distributed systems, Linux kernel, InfiniBand/RDMA, SoC (System on Chip), hardware acceleration, and more, through deep integration of software and hardware."]}),v.jsxs(Vh,{children:["The core members of the company mostly hail from top international technology companies like Google, Microsoft, Alibaba, bringing"," ",v.jsx(Lo,{children:"profound expertise in both software and hardware technologies along with rich industry experience"}),"."]})]}),v.jsx("img",{src:PM,style:{width:"5.11rem"}})]}),v.jsx(Ru,{children:"Join Us"}),v.jsx("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gridAutoFlow:"dense",gap:"0.88rem",marginBottom:"1.2rem"},children:RM.map(e=>v.jsx(NM,{data:e},e.name))}),v.jsx(Ru,{children:"Follow Us"}),v.jsxs(IM,{children:[v.jsx(jM,{src:Hh}),v.jsxs(zM,{children:[v.jsxs(Lu,{style:{marginBottom:"20px"},children:[v.jsx(Iu,{src:DM}),v.jsx(ju,{children:"https://datenlord.github.io"})]}),v.jsxs(Lu,{style:{marginBottom:"20px"},children:[v.jsx(Iu,{src:_M}),v.jsx(ju,{children:"https://medium.com/@datenlord"})]}),v.jsxs(Lu,{children:[v.jsx(Iu,{src:OM}),v.jsx(ju,{children:"https://substack.com/@datenlord"})]})]})]})]})]}),YM=Qx([{path:"",element:v.jsx(yE,{}),children:[{path:"",element:v.jsx(bE,{})},{path:"products",children:[{path:"cloud-service",element:v.jsx(iM,{})},{path:"appliance",element:v.jsx(aM,{})}]},{path:"solution",element:v.jsx(CM,{})},{path:"community",children:[{path:"",element:v.jsx(sb,{})},{path:"project",element:v.jsx(AM,{})}]},{path:"company",element:v.jsx(FM,{})}]},{path:"resources",children:[{path:"tech-talk",element:v.jsx(qP,{})},{path:"blog",element:v.jsx(kP,{})},{path:"blog/:params",element:v.jsx(_P,{})}]}]),UM={color:"lightpink"},BM=KS`
+ * {
+ box-sizing: border-box;
+ }
+
+ body {
+ margin: 0;
+ font-family: Inter, sans-serif;
+ line-height: 1.5;
+ }
+
+ h1, h2, h3, h4, h5, h6 {
+ margin-block: 0;
+ }
+
+ p {
+ margin-block: 0;
+ }
+
+ ol, ul {
+ margin-block: 0;
+ padding-inline-start: 0px;
+ }
+
+ a {
+ display: block;
+ text-decoration: none;
+ }
+
+ html{
+ font-size: 100px;
+ scroll-padding-top: 128px;
+
+ @media screen and (max-width: 1440px) {
+ font-size: 75px;
+ }
+
+ @media screen and (max-width: 1024px) {
+ font-size: 54px;
+ }
+
+ @media screen and (max-width: 768px) {
+ font-size: 40px;
+ }
+
+ @media screen and (max-width: 425px) {
+ font-size: 30px;
+ }
+ }
+
+ .content {
+ font-weight: 400;
+ font-size: 0.18rem;
+ line-height: 0.28rem;
+ h1 {
+ margin-block: 0.48rem;
+ font-weight: 700;
+ font-size: 0.36rem;
+ line-height: 0.52rem;
+ }
+ h2 {
+ margin-block: 0.48rem;
+ font-weight: 700;
+ font-size: 0.32rem;
+ line-height: 0.44rem;
+ }
+ h3 {
+ margin-block: 0.4rem;
+ font-weight: 700;
+ font-size: 0.28rem;
+ line-height: 0.36rem;
+ }
+ h4 {
+ margin-block: 0.32rem;
+ font-weight: 700;
+ font-size: 0.24rem;
+ line-height: 0.32rem;
+ }
+ h5 {
+ margin-block: 0.32rem;
+ font-weight: 700;
+ font-size: 0.22rem;
+ line-height: 0.28rem;
+ }
+ h6 {
+ margin-block: 0.24rem;
+ font-weight: 700;
+ font-size: 0.2rem;
+ line-height: 0.24rem;
+ }
+ p {
+ margin-block: 0.32rem;
+ font-weight: 400;
+ font-size: 0.18rem;
+ line-height: 0.28rem;
+ }
+ a {
+ display: inline;
+ text-decoration: underline;
+ color: #0052D9;
+ }
+ img {
+ margin-block: 0.64rem;
+ display: block;
+ margin-inline: auto;
+ max-width: 60%;
+ }
+ ol, ul {
+ margin-block: 0.16rem;
+ padding-inline-start: 20px;
+ }
+ blockquote {
+ margin-block: 0.32rem;
+ margin-inline: 0;
+ padding-left: 10px;
+ color: #8c8c8c;
+ border-left: 4px solid #8c8c8c
+ }
+ hr {
+ margin-block: 0.48rem;
+ }
+ pre {
+ padding: 12px;
+ background: #f0f0f0;
+ border-radius: 4px;
+ overflow-x: scroll;
+ code {
+ padding: 0;
+ }
+ }
+ code {
+ padding: 4px;
+ border-radius: 4px;
+ background: #f0f0f0;
+ font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ }
+ .hljs-comment,
+ .hljs-quote {
+ color: #998;
+ font-style: italic;
+ }
+ .hljs-keyword,
+ .hljs-selector-tag,
+ .hljs-subst {
+ color: #333;
+ font-weight: 700;
+ }
+ .hljs-literal,
+ .hljs-number,
+ .hljs-tag .hljs-attr,
+ .hljs-template-variable,
+ .hljs-variable {
+ color: teal;
+ }
+ .hljs-doctag,
+ .hljs-string {
+ color: #d14;
+ }
+ .hljs-section,
+ .hljs-selector-id,
+ .hljs-title {
+ color: #900;
+ font-weight: 700;
+ }
+ .hljs-subst {
+ font-weight: 400;
+ }
+ .hljs-class .hljs-title,
+ .hljs-type {
+ color: #458;
+ font-weight: 700;
+ }
+ .hljs-attribute,
+ .hljs-name,
+ .hljs-tag {
+ color: navy;
+ font-weight: 400;
+ }
+ .hljs-link,
+ .hljs-regexp {
+ color: #009926;
+ }
+ .hljs-bullet,
+ .hljs-symbol {
+ color: #990073;
+ }
+ .hljs-built_in,
+ .hljs-builtin-name {
+ color: #0086b3;
+ }
+ .hljs-meta {
+ color: #999;
+ font-weight: 700;
+ }
+ .hljs-deletion {
+ background: #fdd;
+ }
+ .hljs-addition {
+ background: #dfd;
+ }
+ .hljs-emphasis {
+ font-style: italic;
+ }
+ .hljs-strong {
+ font-weight: 700;
+ }
+ }
+`;Nu.createRoot(document.getElementById("root")).render(v.jsxs(QS,{theme:UM,children:[v.jsx(Bx,{router:YM}),v.jsx(BM,{})]}))});export default WM();
diff --git a/index.html b/index.html
index 6a4d763..86d6fac 100644
--- a/index.html
+++ b/index.html
@@ -5,7 +5,7 @@
DatenLord
-
+