diff --git a/backend/src/main/resources/webroot/assets/index-75wHSipM.js b/backend/src/main/resources/webroot/assets/index-De3h4CyK.js similarity index 97% rename from backend/src/main/resources/webroot/assets/index-75wHSipM.js rename to backend/src/main/resources/webroot/assets/index-De3h4CyK.js index bf49d51..95a7c47 100644 --- a/backend/src/main/resources/webroot/assets/index-75wHSipM.js +++ b/backend/src/main/resources/webroot/assets/index-De3h4CyK.js @@ -45,7 +45,7 @@ Please change the parent to o.has(p)&&o.get(p).get(r)||null,remove(p,r){if(!o.has(p))return;const d=o.get(p);d.delete(r),d.size===0&&o.delete(p)}},f="transitionend",m=p=>(p&&window.CSS&&window.CSS.escape&&(p=p.replace(/#([^\s"#']+)/g,(r,d)=>`#${CSS.escape(d)}`)),p),y=p=>{p.dispatchEvent(new Event(f))},b=p=>!(!p||typeof p!="object")&&(p.jquery!==void 0&&(p=p[0]),p.nodeType!==void 0),S=p=>b(p)?p.jquery?p[0]:p:typeof p=="string"&&p.length>0?document.querySelector(m(p)):null,E=p=>{if(!b(p)||p.getClientRects().length===0)return!1;const r=getComputedStyle(p).getPropertyValue("visibility")==="visible",d=p.closest("details:not([open])");if(!d)return r;if(d!==p){const v=p.closest("summary");if(v&&v.parentNode!==d||v===null)return!1}return r},D=p=>!p||p.nodeType!==Node.ELEMENT_NODE||!!p.classList.contains("disabled")||(p.disabled!==void 0?p.disabled:p.hasAttribute("disabled")&&p.getAttribute("disabled")!=="false"),j=p=>{if(!document.documentElement.attachShadow)return null;if(typeof p.getRootNode=="function"){const r=p.getRootNode();return r instanceof ShadowRoot?r:null}return p instanceof ShadowRoot?p:p.parentNode?j(p.parentNode):null},z=()=>{},q=p=>{p.offsetHeight},L=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,I=[],Q=()=>document.documentElement.dir==="rtl",H=p=>{var r;r=()=>{const d=L();if(d){const v=p.NAME,A=d.fn[v];d.fn[v]=p.jQueryInterface,d.fn[v].Constructor=p,d.fn[v].noConflict=()=>(d.fn[v]=A,p.jQueryInterface)}},document.readyState==="loading"?(I.length||document.addEventListener("DOMContentLoaded",()=>{for(const d of I)d()}),I.push(r)):r()},W=(p,r=[],d=p)=>typeof p=="function"?p(...r):d,P=(p,r,d=!0)=>{if(!d)return void W(p);const v=(R=>{if(!R)return 0;let{transitionDuration:X,transitionDelay:J}=window.getComputedStyle(R);const V=Number.parseFloat(X),K=Number.parseFloat(J);return V||K?(X=X.split(",")[0],J=J.split(",")[0],1e3*(Number.parseFloat(X)+Number.parseFloat(J))):0})(r)+5;let A=!1;const O=({target:R})=>{R===r&&(A=!0,r.removeEventListener(f,O),W(p))};r.addEventListener(f,O),setTimeout(()=>{A||y(r)},v)},bt=(p,r,d,v)=>{const A=p.length;let O=p.indexOf(r);return O===-1?!d&&v?p[A-1]:p[0]:(O+=d?1:-1,v&&(O=(O+A)%A),p[Math.max(0,Math.min(O,A-1))])},Ot=/[^.]*(?=\..*)\.|.*/,It=/\..*/,de=/::\d+$/,ue={};let lt=1;const St={mouseenter:"mouseover",mouseleave:"mouseout"},$e=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function il(p,r){return r&&`${r}::${lt++}`||p.uidEvent||lt++}function Fn(p){const r=il(p);return p.uidEvent=r,ue[r]=ue[r]||{},ue[r]}function Jn(p,r,d=null){return Object.values(p).find(v=>v.callable===r&&v.delegationSelector===d)}function Wn(p,r,d){const v=typeof r=="string",A=v?d:r||d;let O=Bt(p);return $e.has(O)||(O=p),[v,A,O]}function tt(p,r,d,v,A){if(typeof r!="string"||!p)return;let[O,R,X]=Wn(r,d,v);r in St&&(R=(ct=>function(ft){if(!ft.relatedTarget||ft.relatedTarget!==ft.delegateTarget&&!ft.delegateTarget.contains(ft.relatedTarget))return ct.call(this,ft)})(R));const J=Fn(p),V=J[X]||(J[X]={}),K=Jn(V,R,O?d:null);if(K)return void(K.oneOff=K.oneOff&&A);const $=il(R,r.replace(Ot,"")),pt=O?function(ut,ct,ft){return function dt(wt){const Ht=ut.querySelectorAll(ct);for(let{target:it}=wt;it&&it!==this;it=it.parentNode)for(const Dt of Ht)if(Dt===it)return Pn(wt,{delegateTarget:it}),dt.oneOff&&k.off(ut,wt.type,ct,ft),ft.apply(it,[wt])}}(p,d,R):function(ut,ct){return function ft(dt){return Pn(dt,{delegateTarget:ut}),ft.oneOff&&k.off(ut,dt.type,ct),ct.apply(ut,[dt])}}(p,R);pt.delegationSelector=O?d:null,pt.callable=R,pt.oneOff=A,pt.uidEvent=$,V[$]=pt,p.addEventListener(X,pt,O)}function gt(p,r,d,v,A){const O=Jn(r[d],v,A);O&&(p.removeEventListener(d,O,!!A),delete r[d][O.uidEvent])}function mt(p,r,d,v){const A=r[d]||{};for(const[O,R]of Object.entries(A))O.includes(v)&>(p,r,d,R.callable,R.delegationSelector)}function Bt(p){return p=p.replace(It,""),St[p]||p}const k={on(p,r,d,v){tt(p,r,d,v,!1)},one(p,r,d,v){tt(p,r,d,v,!0)},off(p,r,d,v){if(typeof r!="string"||!p)return;const[A,O,R]=Wn(r,d,v),X=R!==r,J=Fn(p),V=J[R]||{},K=r.startsWith(".");if(O===void 0){if(K)for(const $ of Object.keys(J))mt(p,J,$,r.slice(1));for(const[$,pt]of Object.entries(V)){const ut=$.replace(de,"");X&&!r.includes(ut)||gt(p,J,R,pt.callable,pt.delegationSelector)}}else{if(!Object.keys(V).length)return;gt(p,J,R,O,A?d:null)}},trigger(p,r,d){if(typeof r!="string"||!p)return null;const v=L();let A=null,O=!0,R=!0,X=!1;r!==Bt(r)&&v&&(A=v.Event(r,d),v(p).trigger(A),O=!A.isPropagationStopped(),R=!A.isImmediatePropagationStopped(),X=A.isDefaultPrevented());const J=Pn(new Event(r,{bubbles:O,cancelable:!0}),d);return X&&J.preventDefault(),R&&p.dispatchEvent(J),J.defaultPrevented&&A&&A.preventDefault(),J}};function Pn(p,r={}){for(const[d,v]of Object.entries(r))try{p[d]=v}catch{Object.defineProperty(p,d,{configurable:!0,get:()=>v})}return p}function In(p){if(p==="true")return!0;if(p==="false")return!1;if(p===Number(p).toString())return Number(p);if(p===""||p==="null")return null;if(typeof p!="string")return p;try{return JSON.parse(decodeURIComponent(p))}catch{return p}}function an(p){return p.replace(/[A-Z]/g,r=>`-${r.toLowerCase()}`)}const _t={setDataAttribute(p,r,d){p.setAttribute(`data-bs-${an(r)}`,d)},removeDataAttribute(p,r){p.removeAttribute(`data-bs-${an(r)}`)},getDataAttributes(p){if(!p)return{};const r={},d=Object.keys(p.dataset).filter(v=>v.startsWith("bs")&&!v.startsWith("bsConfig"));for(const v of d){let A=v.replace(/^bs/,"");A=A.charAt(0).toLowerCase()+A.slice(1,A.length),r[A]=In(p.dataset[v])}return r},getDataAttribute:(p,r)=>In(p.getAttribute(`data-bs-${an(r)}`))};class me{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(r){return r=this._mergeConfigObj(r),r=this._configAfterMerge(r),this._typeCheckConfig(r),r}_configAfterMerge(r){return r}_mergeConfigObj(r,d){const v=b(d)?_t.getDataAttribute(d,"config"):{};return{...this.constructor.Default,...typeof v=="object"?v:{},...b(d)?_t.getDataAttributes(d):{},...typeof r=="object"?r:{}}}_typeCheckConfig(r,d=this.constructor.DefaultType){for(const[A,O]of Object.entries(d)){const R=r[A],X=b(R)?"element":(v=R)==null?`${v}`:Object.prototype.toString.call(v).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(O).test(X))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${A}" provided type "${X}" but expected type "${O}".`)}var v}}class He extends me{constructor(r,d){super(),(r=S(r))&&(this._element=r,this._config=this._getConfig(d),c.set(this._element,this.constructor.DATA_KEY,this))}dispose(){c.remove(this._element,this.constructor.DATA_KEY),k.off(this._element,this.constructor.EVENT_KEY);for(const r of Object.getOwnPropertyNames(this))this[r]=null}_queueCallback(r,d,v=!0){P(r,d,v)}_getConfig(r){return r=this._mergeConfigObj(r,this._element),r=this._configAfterMerge(r),this._typeCheckConfig(r),r}static getInstance(r){return c.get(S(r),this.DATA_KEY)}static getOrCreateInstance(r,d={}){return this.getInstance(r)||new this(r,typeof d=="object"?d:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(r){return`${r}${this.EVENT_KEY}`}}const ta=p=>{let r=p.getAttribute("data-bs-target");if(!r||r==="#"){let d=p.getAttribute("href");if(!d||!d.includes("#")&&!d.startsWith("."))return null;d.includes("#")&&!d.startsWith("#")&&(d=`#${d.split("#")[1]}`),r=d&&d!=="#"?d.trim():null}return r?r.split(",").map(d=>m(d)).join(","):null},nt={find:(p,r=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(r,p)),findOne:(p,r=document.documentElement)=>Element.prototype.querySelector.call(r,p),children:(p,r)=>[].concat(...p.children).filter(d=>d.matches(r)),parents(p,r){const d=[];let v=p.parentNode.closest(r);for(;v;)d.push(v),v=v.parentNode.closest(r);return d},prev(p,r){let d=p.previousElementSibling;for(;d;){if(d.matches(r))return[d];d=d.previousElementSibling}return[]},next(p,r){let d=p.nextElementSibling;for(;d;){if(d.matches(r))return[d];d=d.nextElementSibling}return[]},focusableChildren(p){const r=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(d=>`${d}:not([tabindex^="-"])`).join(",");return this.find(r,p).filter(d=>!D(d)&&E(d))},getSelectorFromElement(p){const r=ta(p);return r&&nt.findOne(r)?r:null},getElementFromSelector(p){const r=ta(p);return r?nt.findOne(r):null},getMultipleElementsFromSelector(p){const r=ta(p);return r?nt.find(r):[]}},Ft=(p,r="hide")=>{const d=`click.dismiss${p.EVENT_KEY}`,v=p.NAME;k.on(document,d,`[data-bs-dismiss="${v}"]`,function(A){if(["A","AREA"].includes(this.tagName)&&A.preventDefault(),D(this))return;const O=nt.getElementFromSelector(this)||this.closest(`.${v}`);p.getOrCreateInstance(O)[r]()})},qt=".bs.alert",vn=`close${qt}`,Wl=`closed${qt}`;class Fe extends He{static get NAME(){return"alert"}close(){if(k.trigger(this._element,vn).defaultPrevented)return;this._element.classList.remove("show");const r=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,r)}_destroyElement(){this._element.remove(),k.trigger(this._element,Wl),this.dispose()}static jQueryInterface(r){return this.each(function(){const d=Fe.getOrCreateInstance(this);if(typeof r=="string"){if(d[r]===void 0||r.startsWith("_")||r==="constructor")throw new TypeError(`No method named "${r}"`);d[r](this)}})}}Ft(Fe,"close"),H(Fe);const Pl='[data-bs-toggle="button"]';class ea extends He{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(r){return this.each(function(){const d=ea.getOrCreateInstance(this);r==="toggle"&&d[r]()})}}k.on(document,"click.bs.button.data-api",Pl,p=>{p.preventDefault();const r=p.target.closest(Pl);ea.getOrCreateInstance(r).toggle()}),H(ea);const ln=".bs.swipe",Wr=`touchstart${ln}`,Gi=`touchmove${ln}`,Pr=`touchend${ln}`,Ir=`pointerdown${ln}`,ts=`pointerup${ln}`,Cc={endCallback:null,leftCallback:null,rightCallback:null},wc={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class ke extends me{constructor(r,d){super(),this._element=r,r&&ke.isSupported()&&(this._config=this._getConfig(d),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return Cc}static get DefaultType(){return wc}static get NAME(){return"swipe"}dispose(){k.off(this._element,ln)}_start(r){this._supportPointerEvents?this._eventIsPointerPenTouch(r)&&(this._deltaX=r.clientX):this._deltaX=r.touches[0].clientX}_end(r){this._eventIsPointerPenTouch(r)&&(this._deltaX=r.clientX-this._deltaX),this._handleSwipe(),W(this._config.endCallback)}_move(r){this._deltaX=r.touches&&r.touches.length>1?0:r.touches[0].clientX-this._deltaX}_handleSwipe(){const r=Math.abs(this._deltaX);if(r<=40)return;const d=r/this._deltaX;this._deltaX=0,d&&W(d>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(k.on(this._element,Ir,r=>this._start(r)),k.on(this._element,ts,r=>this._end(r)),this._element.classList.add("pointer-event")):(k.on(this._element,Wr,r=>this._start(r)),k.on(this._element,Gi,r=>this._move(r)),k.on(this._element,Pr,r=>this._end(r)))}_eventIsPointerPenTouch(r){return this._supportPointerEvents&&(r.pointerType==="pen"||r.pointerType==="touch")}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const na=".bs.carousel",es=".data-api",rl="next",Ln="prev",sl="left",Il="right",Dc=`slide${na}`,ns=`slid${na}`,ti=`keydown${na}`,Be=`mouseenter${na}`,Mc=`mouseleave${na}`,aa=`dragstart${na}`,qe=`load${na}${es}`,Nc=`click${na}${es}`,Lu="carousel",Vi="active",ei=".active",ni=".carousel-item",Ca=ei+ni,Qi={ArrowLeft:Il,ArrowRight:sl},ai={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},zc={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class wa extends He{constructor(r,d){super(r,d),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=nt.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===Lu&&this.cycle()}static get Default(){return ai}static get DefaultType(){return zc}static get NAME(){return"carousel"}next(){this._slide(rl)}nextWhenVisible(){!document.hidden&&E(this._element)&&this.next()}prev(){this._slide(Ln)}pause(){this._isSliding&&y(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?k.one(this._element,ns,()=>this.cycle()):this.cycle())}to(r){const d=this._getItems();if(r>d.length-1||r<0)return;if(this._isSliding)return void k.one(this._element,ns,()=>this.to(r));const v=this._getItemIndex(this._getActive());if(v===r)return;const A=r>v?rl:Ln;this._slide(A,d[r])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(r){return r.defaultInterval=r.interval,r}_addEventListeners(){this._config.keyboard&&k.on(this._element,ti,r=>this._keydown(r)),this._config.pause==="hover"&&(k.on(this._element,Be,()=>this.pause()),k.on(this._element,Mc,()=>this._maybeEnableCycle())),this._config.touch&&ke.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const d of nt.find(".carousel-item img",this._element))k.on(d,aa,v=>v.preventDefault());const r={leftCallback:()=>this._slide(this._directionToOrder(sl)),rightCallback:()=>this._slide(this._directionToOrder(Il)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),500+this._config.interval))}};this._swipeHelper=new ke(this._element,r)}_keydown(r){if(/input|textarea/i.test(r.target.tagName))return;const d=Qi[r.key];d&&(r.preventDefault(),this._slide(this._directionToOrder(d)))}_getItemIndex(r){return this._getItems().indexOf(r)}_setActiveIndicatorElement(r){if(!this._indicatorsElement)return;const d=nt.findOne(ei,this._indicatorsElement);d.classList.remove(Vi),d.removeAttribute("aria-current");const v=nt.findOne(`[data-bs-slide-to="${r}"]`,this._indicatorsElement);v&&(v.classList.add(Vi),v.setAttribute("aria-current","true"))}_updateInterval(){const r=this._activeElement||this._getActive();if(!r)return;const d=Number.parseInt(r.getAttribute("data-bs-interval"),10);this._config.interval=d||this._config.defaultInterval}_slide(r,d=null){if(this._isSliding)return;const v=this._getActive(),A=r===rl,O=d||bt(this._getItems(),v,A,this._config.wrap);if(O===v)return;const R=this._getItemIndex(O),X=$=>k.trigger(this._element,$,{relatedTarget:O,direction:this._orderToDirection(r),from:this._getItemIndex(v),to:R});if(X(Dc).defaultPrevented||!v||!O)return;const J=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(R),this._activeElement=O;const V=A?"carousel-item-start":"carousel-item-end",K=A?"carousel-item-next":"carousel-item-prev";O.classList.add(K),q(O),v.classList.add(V),O.classList.add(V),this._queueCallback(()=>{O.classList.remove(V,K),O.classList.add(Vi),v.classList.remove(Vi,K,V),this._isSliding=!1,X(ns)},v,this._isAnimated()),J&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return nt.findOne(Ca,this._element)}_getItems(){return nt.find(ni,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(r){return Q()?r===sl?Ln:rl:r===sl?rl:Ln}_orderToDirection(r){return Q()?r===Ln?sl:Il:r===Ln?Il:sl}static jQueryInterface(r){return this.each(function(){const d=wa.getOrCreateInstance(this,r);if(typeof r!="number"){if(typeof r=="string"){if(d[r]===void 0||r.startsWith("_")||r==="constructor")throw new TypeError(`No method named "${r}"`);d[r]()}}else d.to(r)})}}k.on(document,Nc,"[data-bs-slide], [data-bs-slide-to]",function(p){const r=nt.getElementFromSelector(this);if(!r||!r.classList.contains(Lu))return;p.preventDefault();const d=wa.getOrCreateInstance(r),v=this.getAttribute("data-bs-slide-to");return v?(d.to(v),void d._maybeEnableCycle()):_t.getDataAttribute(this,"slide")==="next"?(d.next(),void d._maybeEnableCycle()):(d.prev(),void d._maybeEnableCycle())}),k.on(window,qe,()=>{const p=nt.find('[data-bs-ride="carousel"]');for(const r of p)wa.getOrCreateInstance(r)}),H(wa);const ul=".bs.collapse",as=`show${ul}`,li=`shown${ul}`,Rc=`hide${ul}`,ju=`hidden${ul}`,Uu=`click${ul}.data-api`,Zi="show",Da="collapse",Ki="collapsing",la=`:scope .${Da} .${Da}`,oe='[data-bs-toggle="collapse"]',Me={parent:null,toggle:!0},ol={parent:"(null|element)",toggle:"boolean"};class ia extends He{constructor(r,d){super(r,d),this._isTransitioning=!1,this._triggerArray=[];const v=nt.find(oe);for(const A of v){const O=nt.getSelectorFromElement(A),R=nt.find(O).filter(X=>X===this._element);O!==null&&R.length&&this._triggerArray.push(A)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Me}static get DefaultType(){return ol}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let r=[];if(this._config.parent&&(r=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter(A=>A!==this._element).map(A=>ia.getOrCreateInstance(A,{toggle:!1}))),r.length&&r[0]._isTransitioning||k.trigger(this._element,as).defaultPrevented)return;for(const A of r)A.hide();const d=this._getDimension();this._element.classList.remove(Da),this._element.classList.add(Ki),this._element.style[d]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const v=`scroll${d[0].toUpperCase()+d.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(Ki),this._element.classList.add(Da,Zi),this._element.style[d]="",k.trigger(this._element,li)},this._element,!0),this._element.style[d]=`${this._element[v]}px`}hide(){if(this._isTransitioning||!this._isShown()||k.trigger(this._element,Rc).defaultPrevented)return;const r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,q(this._element),this._element.classList.add(Ki),this._element.classList.remove(Da,Zi);for(const d of this._triggerArray){const v=nt.getElementFromSelector(d);v&&!this._isShown(v)&&this._addAriaAndCollapsedClass([d],!1)}this._isTransitioning=!0,this._element.style[r]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(Ki),this._element.classList.add(Da),k.trigger(this._element,ju)},this._element,!0)}_isShown(r=this._element){return r.classList.contains(Zi)}_configAfterMerge(r){return r.toggle=!!r.toggle,r.parent=S(r.parent),r}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const r=this._getFirstLevelChildren(oe);for(const d of r){const v=nt.getElementFromSelector(d);v&&this._addAriaAndCollapsedClass([d],this._isShown(v))}}_getFirstLevelChildren(r){const d=nt.find(la,this._config.parent);return nt.find(r,this._config.parent).filter(v=>!d.includes(v))}_addAriaAndCollapsedClass(r,d){if(r.length)for(const v of r)v.classList.toggle("collapsed",!d),v.setAttribute("aria-expanded",d)}static jQueryInterface(r){const d={};return typeof r=="string"&&/show|hide/.test(r)&&(d.toggle=!1),this.each(function(){const v=ia.getOrCreateInstance(this,d);if(typeof r=="string"){if(v[r]===void 0)throw new TypeError(`No method named "${r}"`);v[r]()}})}}k.on(document,Uu,oe,function(p){(p.target.tagName==="A"||p.delegateTarget&&p.delegateTarget.tagName==="A")&&p.preventDefault();for(const r of nt.getMultipleElementsFromSelector(this))ia.getOrCreateInstance(r,{toggle:!1}).toggle()}),H(ia);var Ee="top",Ye="bottom",Ne="right",ie="left",cl="auto",Je=[Ee,Ye,Ne,ie],We="start",yn="end",Ma="clippingParents",te="viewport",Na="popper",ls="reference",jn=Je.reduce(function(p,r){return p.concat([r+"-"+We,r+"-"+yn])},[]),ra=[].concat(Je,[cl]).reduce(function(p,r){return p.concat([r,r+"-"+We,r+"-"+yn])},[]),bn="beforeRead",Hu="read",is="afterRead",rs="beforeMain",ku="main",ii="afterMain",ri="beforeWrite",_n="write",Xe="afterWrite",ss=[bn,Hu,is,rs,ku,ii,ri,_n,Xe];function Sn(p){return p?(p.nodeName||"").toLowerCase():null}function pe(p){if(p==null)return window;if(p.toString()!=="[object Window]"){var r=p.ownerDocument;return r&&r.defaultView||window}return p}function sa(p){return p instanceof pe(p).Element||p instanceof Element}function Ae(p){return p instanceof pe(p).HTMLElement||p instanceof HTMLElement}function us(p){return typeof ShadowRoot<"u"&&(p instanceof pe(p).ShadowRoot||p instanceof ShadowRoot)}const ze={name:"applyStyles",enabled:!0,phase:"write",fn:function(p){var r=p.state;Object.keys(r.elements).forEach(function(d){var v=r.styles[d]||{},A=r.attributes[d]||{},O=r.elements[d];Ae(O)&&Sn(O)&&(Object.assign(O.style,v),Object.keys(A).forEach(function(R){var X=A[R];X===!1?O.removeAttribute(R):O.setAttribute(R,X===!0?"":X)}))})},effect:function(p){var r=p.state,d={popper:{position:r.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(r.elements.popper.style,d.popper),r.styles=d,r.elements.arrow&&Object.assign(r.elements.arrow.style,d.arrow),function(){Object.keys(r.elements).forEach(function(v){var A=r.elements[v],O=r.attributes[v]||{},R=Object.keys(r.styles.hasOwnProperty(v)?r.styles[v]:d[v]).reduce(function(X,J){return X[J]="",X},{});Ae(A)&&Sn(A)&&(Object.assign(A.style,R),Object.keys(O).forEach(function(X){A.removeAttribute(X)}))})}},requires:["computeStyles"]};function Pe(p){return p.split("-")[0]}var ua=Math.max,fl=Math.min,rn=Math.round;function $i(){var p=navigator.userAgentData;return p!=null&&p.brands&&Array.isArray(p.brands)?p.brands.map(function(r){return r.brand+"/"+r.version}).join(" "):navigator.userAgent}function os(){return!/^((?!chrome|android).)*safari/i.test($i())}function sn(p,r,d){r===void 0&&(r=!1),d===void 0&&(d=!1);var v=p.getBoundingClientRect(),A=1,O=1;r&&Ae(p)&&(A=p.offsetWidth>0&&rn(v.width)/p.offsetWidth||1,O=p.offsetHeight>0&&rn(v.height)/p.offsetHeight||1);var R=(sa(p)?pe(p):window).visualViewport,X=!os()&&d,J=(v.left+(X&&R?R.offsetLeft:0))/A,V=(v.top+(X&&R?R.offsetTop:0))/O,K=v.width/A,$=v.height/O;return{width:K,height:$,top:V,right:J+K,bottom:V+$,left:J,x:J,y:V}}function cs(p){var r=sn(p),d=p.offsetWidth,v=p.offsetHeight;return Math.abs(r.width-d)<=1&&(d=r.width),Math.abs(r.height-v)<=1&&(v=r.height),{x:p.offsetLeft,y:p.offsetTop,width:d,height:v}}function fs(p,r){var d=r.getRootNode&&r.getRootNode();if(p.contains(r))return!0;if(d&&us(d)){var v=r;do{if(v&&p.isSameNode(v))return!0;v=v.parentNode||v.host}while(v)}return!1}function En(p){return pe(p).getComputedStyle(p)}function ds(p){return["table","td","th"].indexOf(Sn(p))>=0}function oa(p){return((sa(p)?p.ownerDocument:p.document)||window.document).documentElement}function Fi(p){return Sn(p)==="html"?p:p.assignedSlot||p.parentNode||(us(p)?p.host:null)||oa(p)}function si(p){return Ae(p)&&En(p).position!=="fixed"?p.offsetParent:null}function za(p){for(var r=pe(p),d=si(p);d&&ds(d)&&En(d).position==="static";)d=si(d);return d&&(Sn(d)==="html"||Sn(d)==="body"&&En(d).position==="static")?r:d||function(v){var A=/firefox/i.test($i());if(/Trident/i.test($i())&&Ae(v)&&En(v).position==="fixed")return null;var O=Fi(v);for(us(O)&&(O=O.host);Ae(O)&&["html","body"].indexOf(Sn(O))<0;){var R=En(O);if(R.transform!=="none"||R.perspective!=="none"||R.contain==="paint"||["transform","perspective"].indexOf(R.willChange)!==-1||A&&R.willChange==="filter"||A&&R.filter&&R.filter!=="none")return O;O=O.parentNode}return null}(p)||r}function ui(p){return["top","bottom"].indexOf(p)>=0?"x":"y"}function An(p,r,d){return ua(p,fl(r,d))}function Ra(p){return Object.assign({},{top:0,right:0,bottom:0,left:0},p)}function hs(p,r){return r.reduce(function(d,v){return d[v]=p,d},{})}const Ji={name:"arrow",enabled:!0,phase:"main",fn:function(p){var r,d=p.state,v=p.name,A=p.options,O=d.elements.arrow,R=d.modifiersData.popperOffsets,X=Pe(d.placement),J=ui(X),V=[ie,Ne].indexOf(X)>=0?"height":"width";if(O&&R){var K=function(Ut,zt){return Ra(typeof(Ut=typeof Ut=="function"?Ut(Object.assign({},zt.rects,{placement:zt.placement})):Ut)!="number"?Ut:hs(Ut,Je))}(A.padding,d),$=cs(O),pt=J==="y"?Ee:ie,ut=J==="y"?Ye:Ne,ct=d.rects.reference[V]+d.rects.reference[J]-R[J]-d.rects.popper[V],ft=R[J]-d.rects.reference[J],dt=za(O),wt=dt?J==="y"?dt.clientHeight||0:dt.clientWidth||0:0,Ht=ct/2-ft/2,it=K[pt],Dt=wt-$[V]-K[ut],vt=wt/2-$[V]/2+Ht,Et=An(it,vt,Dt),Rt=J;d.modifiersData[v]=((r={})[Rt]=Et,r.centerOffset=Et-vt,r)}},effect:function(p){var r=p.state,d=p.options.element,v=d===void 0?"[data-popper-arrow]":d;v!=null&&(typeof v!="string"||(v=r.elements.popper.querySelector(v)))&&fs(r.elements.popper,v)&&(r.elements.arrow=v)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function La(p){return p.split("-")[1]}var oi={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Wi(p){var r,d=p.popper,v=p.popperRect,A=p.placement,O=p.variation,R=p.offsets,X=p.position,J=p.gpuAcceleration,V=p.adaptive,K=p.roundOffsets,$=p.isFixed,pt=R.x,ut=pt===void 0?0:pt,ct=R.y,ft=ct===void 0?0:ct,dt=typeof K=="function"?K({x:ut,y:ft}):{x:ut,y:ft};ut=dt.x,ft=dt.y;var wt=R.hasOwnProperty("x"),Ht=R.hasOwnProperty("y"),it=ie,Dt=Ee,vt=window;if(V){var Et=za(d),Rt="clientHeight",Ut="clientWidth";Et===pe(d)&&En(Et=oa(d)).position!=="static"&&X==="absolute"&&(Rt="scrollHeight",Ut="scrollWidth"),(A===Ee||(A===ie||A===Ne)&&O===yn)&&(Dt=Ye,ft-=($&&Et===vt&&vt.visualViewport?vt.visualViewport.height:Et[Rt])-v.height,ft*=J?1:-1),A!==ie&&(A!==Ee&&A!==Ye||O!==yn)||(it=Ne,ut-=($&&Et===vt&&vt.visualViewport?vt.visualViewport.width:Et[Ut])-v.width,ut*=J?1:-1)}var zt,Kt=Object.assign({position:X},V&&oi),Oe=K===!0?function(Vt,Ct){var Ce=Vt.x,ve=Vt.y,Yt=Ct.devicePixelRatio||1;return{x:rn(Ce*Yt)/Yt||0,y:rn(ve*Yt)/Yt||0}}({x:ut,y:ft},pe(d)):{x:ut,y:ft};return ut=Oe.x,ft=Oe.y,J?Object.assign({},Kt,((zt={})[Dt]=Ht?"0":"",zt[it]=wt?"0":"",zt.transform=(vt.devicePixelRatio||1)<=1?"translate("+ut+"px, "+ft+"px)":"translate3d("+ut+"px, "+ft+"px, 0)",zt)):Object.assign({},Kt,((r={})[Dt]=Ht?ft+"px":"",r[it]=wt?ut+"px":"",r.transform="",r))}const ja={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(p){var r=p.state,d=p.options,v=d.gpuAcceleration,A=v===void 0||v,O=d.adaptive,R=O===void 0||O,X=d.roundOffsets,J=X===void 0||X,V={placement:Pe(r.placement),variation:La(r.placement),popper:r.elements.popper,popperRect:r.rects.popper,gpuAcceleration:A,isFixed:r.options.strategy==="fixed"};r.modifiersData.popperOffsets!=null&&(r.styles.popper=Object.assign({},r.styles.popper,Wi(Object.assign({},V,{offsets:r.modifiersData.popperOffsets,position:r.options.strategy,adaptive:R,roundOffsets:J})))),r.modifiersData.arrow!=null&&(r.styles.arrow=Object.assign({},r.styles.arrow,Wi(Object.assign({},V,{offsets:r.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:J})))),r.attributes.popper=Object.assign({},r.attributes.popper,{"data-popper-placement":r.placement})},data:{}};var un={passive:!0};const ci={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(p){var r=p.state,d=p.instance,v=p.options,A=v.scroll,O=A===void 0||A,R=v.resize,X=R===void 0||R,J=pe(r.elements.popper),V=[].concat(r.scrollParents.reference,r.scrollParents.popper);return O&&V.forEach(function(K){K.addEventListener("scroll",d.update,un)}),X&&J.addEventListener("resize",d.update,un),function(){O&&V.forEach(function(K){K.removeEventListener("scroll",d.update,un)}),X&&J.removeEventListener("resize",d.update,un)}},data:{}};var Pi={left:"right",right:"left",bottom:"top",top:"bottom"};function fi(p){return p.replace(/left|right|bottom|top/g,function(r){return Pi[r]})}var Ii={start:"end",end:"start"};function di(p){return p.replace(/start|end/g,function(r){return Ii[r]})}function tr(p){var r=pe(p);return{scrollLeft:r.pageXOffset,scrollTop:r.pageYOffset}}function ge(p){return sn(oa(p)).left+tr(p).scrollLeft}function Un(p){var r=En(p),d=r.overflow,v=r.overflowX,A=r.overflowY;return/auto|scroll|overlay|hidden/.test(d+A+v)}function hi(p){return["html","body","#document"].indexOf(Sn(p))>=0?p.ownerDocument.body:Ae(p)&&Un(p)?p:hi(Fi(p))}function Hn(p,r){var d;r===void 0&&(r=[]);var v=hi(p),A=v===((d=p.ownerDocument)==null?void 0:d.body),O=pe(v),R=A?[O].concat(O.visualViewport||[],Un(v)?v:[]):v,X=r.concat(R);return A?X:X.concat(Hn(Fi(R)))}function ms(p){return Object.assign({},p,{left:p.x,top:p.y,right:p.x+p.width,bottom:p.y+p.height})}function er(p,r,d){return r===te?ms(function(v,A){var O=pe(v),R=oa(v),X=O.visualViewport,J=R.clientWidth,V=R.clientHeight,K=0,$=0;if(X){J=X.width,V=X.height;var pt=os();(pt||!pt&&A==="fixed")&&(K=X.offsetLeft,$=X.offsetTop)}return{width:J,height:V,x:K+ge(v),y:$}}(p,d)):sa(r)?function(v,A){var O=sn(v,!1,A==="fixed");return O.top=O.top+v.clientTop,O.left=O.left+v.clientLeft,O.bottom=O.top+v.clientHeight,O.right=O.left+v.clientWidth,O.width=v.clientWidth,O.height=v.clientHeight,O.x=O.left,O.y=O.top,O}(r,d):ms(function(v){var A,O=oa(v),R=tr(v),X=(A=v.ownerDocument)==null?void 0:A.body,J=ua(O.scrollWidth,O.clientWidth,X?X.scrollWidth:0,X?X.clientWidth:0),V=ua(O.scrollHeight,O.clientHeight,X?X.scrollHeight:0,X?X.clientHeight:0),K=-R.scrollLeft+ge(v),$=-R.scrollTop;return En(X||O).direction==="rtl"&&(K+=ua(O.clientWidth,X?X.clientWidth:0)-J),{width:J,height:V,x:K,y:$}}(oa(p)))}function nr(p){var r,d=p.reference,v=p.element,A=p.placement,O=A?Pe(A):null,R=A?La(A):null,X=d.x+d.width/2-v.width/2,J=d.y+d.height/2-v.height/2;switch(O){case Ee:r={x:X,y:d.y-v.height};break;case Ye:r={x:X,y:d.y+d.height};break;case Ne:r={x:d.x+d.width,y:J};break;case ie:r={x:d.x-v.width,y:J};break;default:r={x:d.x,y:d.y}}var V=O?ui(O):null;if(V!=null){var K=V==="y"?"height":"width";switch(R){case We:r[V]=r[V]-(d[K]/2-v[K]/2);break;case yn:r[V]=r[V]+(d[K]/2-v[K]/2)}}return r}function xn(p,r){r===void 0&&(r={});var d=r,v=d.placement,A=v===void 0?p.placement:v,O=d.strategy,R=O===void 0?p.strategy:O,X=d.boundary,J=X===void 0?Ma:X,V=d.rootBoundary,K=V===void 0?te:V,$=d.elementContext,pt=$===void 0?Na:$,ut=d.altBoundary,ct=ut!==void 0&&ut,ft=d.padding,dt=ft===void 0?0:ft,wt=Ra(typeof dt!="number"?dt:hs(dt,Je)),Ht=pt===Na?ls:Na,it=p.rects.popper,Dt=p.elements[ct?Ht:pt],vt=function(Ct,Ce,ve,Yt){var nn=Ce==="clippingParents"?function(jt){var ye=Hn(Fi(jt)),Ze=["absolute","fixed"].indexOf(En(jt).position)>=0&&Ae(jt)?za(jt):jt;return sa(Ze)?ye.filter(function(Zn){return sa(Zn)&&fs(Zn,Ze)&&Sn(Zn)!=="body"}):[]}(Ct):[].concat(Ce),ce=[].concat(nn,[ve]),Qn=ce[0],ee=ce.reduce(function(jt,ye){var Ze=er(Ct,ye,Yt);return jt.top=ua(Ze.top,jt.top),jt.right=fl(Ze.right,jt.right),jt.bottom=fl(Ze.bottom,jt.bottom),jt.left=ua(Ze.left,jt.left),jt},er(Ct,Qn,Yt));return ee.width=ee.right-ee.left,ee.height=ee.bottom-ee.top,ee.x=ee.left,ee.y=ee.top,ee}(sa(Dt)?Dt:Dt.contextElement||oa(p.elements.popper),J,K,R),Et=sn(p.elements.reference),Rt=nr({reference:Et,element:it,placement:A}),Ut=ms(Object.assign({},it,Rt)),zt=pt===Na?Ut:Et,Kt={top:vt.top-zt.top+wt.top,bottom:zt.bottom-vt.bottom+wt.bottom,left:vt.left-zt.left+wt.left,right:zt.right-vt.right+wt.right},Oe=p.modifiersData.offset;if(pt===Na&&Oe){var Vt=Oe[A];Object.keys(Kt).forEach(function(Ct){var Ce=[Ne,Ye].indexOf(Ct)>=0?1:-1,ve=[Ee,Ye].indexOf(Ct)>=0?"y":"x";Kt[Ct]+=Vt[ve]*Ce})}return Kt}function ar(p,r){r===void 0&&(r={});var d=r,v=d.placement,A=d.boundary,O=d.rootBoundary,R=d.padding,X=d.flipVariations,J=d.allowedAutoPlacements,V=J===void 0?ra:J,K=La(v),$=K?X?jn:jn.filter(function(ct){return La(ct)===K}):Je,pt=$.filter(function(ct){return V.indexOf(ct)>=0});pt.length===0&&(pt=$);var ut=pt.reduce(function(ct,ft){return ct[ft]=xn(p,{placement:ft,boundary:A,rootBoundary:O,padding:R})[Pe(ft)],ct},{});return Object.keys(ut).sort(function(ct,ft){return ut[ct]-ut[ft]})}const ps={name:"flip",enabled:!0,phase:"main",fn:function(p){var r=p.state,d=p.options,v=p.name;if(!r.modifiersData[v]._skip){for(var A=d.mainAxis,O=A===void 0||A,R=d.altAxis,X=R===void 0||R,J=d.fallbackPlacements,V=d.padding,K=d.boundary,$=d.rootBoundary,pt=d.altBoundary,ut=d.flipVariations,ct=ut===void 0||ut,ft=d.allowedAutoPlacements,dt=r.options.placement,wt=Pe(dt),Ht=J||(wt!==dt&&ct?function(jt){if(Pe(jt)===cl)return[];var ye=fi(jt);return[di(jt),ye,di(ye)]}(dt):[fi(dt)]),it=[dt].concat(Ht).reduce(function(jt,ye){return jt.concat(Pe(ye)===cl?ar(r,{placement:ye,boundary:K,rootBoundary:$,padding:V,flipVariations:ct,allowedAutoPlacements:ft}):ye)},[]),Dt=r.rects.reference,vt=r.rects.popper,Et=new Map,Rt=!0,Ut=it[0],zt=0;zt=0,Ce=Ct?"width":"height",ve=xn(r,{placement:Kt,boundary:K,rootBoundary:$,altBoundary:pt,padding:V}),Yt=Ct?Vt?Ne:ie:Vt?Ye:Ee;Dt[Ce]>vt[Ce]&&(Yt=fi(Yt));var nn=fi(Yt),ce=[];if(O&&ce.push(ve[Oe]<=0),X&&ce.push(ve[Yt]<=0,ve[nn]<=0),ce.every(function(jt){return jt})){Ut=Kt,Rt=!1;break}Et.set(Kt,ce)}if(Rt)for(var Qn=function(jt){var ye=it.find(function(Ze){var Zn=Et.get(Ze);if(Zn)return Zn.slice(0,jt).every(function(Ti){return Ti})});if(ye)return Ut=ye,"break"},ee=ct?3:1;ee>0&&Qn(ee)!=="break";ee--);r.placement!==Ut&&(r.modifiersData[v]._skip=!0,r.placement=Ut,r.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Bu(p,r,d){return d===void 0&&(d={x:0,y:0}),{top:p.top-r.height-d.y,right:p.right-r.width+d.x,bottom:p.bottom-r.height+d.y,left:p.left-r.width-d.x}}function qu(p){return[Ee,Ne,Ye,ie].some(function(r){return p[r]>=0})}const Yu={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(p){var r=p.state,d=p.name,v=r.rects.reference,A=r.rects.popper,O=r.modifiersData.preventOverflow,R=xn(r,{elementContext:"reference"}),X=xn(r,{altBoundary:!0}),J=Bu(R,v),V=Bu(X,A,O),K=qu(J),$=qu(V);r.modifiersData[d]={referenceClippingOffsets:J,popperEscapeOffsets:V,isReferenceHidden:K,hasPopperEscaped:$},r.attributes.popper=Object.assign({},r.attributes.popper,{"data-popper-reference-hidden":K,"data-popper-escaped":$})}},lr={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(p){var r=p.state,d=p.options,v=p.name,A=d.offset,O=A===void 0?[0,0]:A,R=ra.reduce(function(K,$){return K[$]=function(pt,ut,ct){var ft=Pe(pt),dt=[ie,Ee].indexOf(ft)>=0?-1:1,wt=typeof ct=="function"?ct(Object.assign({},ut,{placement:pt})):ct,Ht=wt[0],it=wt[1];return Ht=Ht||0,it=(it||0)*dt,[ie,Ne].indexOf(ft)>=0?{x:it,y:Ht}:{x:Ht,y:it}}($,r.rects,O),K},{}),X=R[r.placement],J=X.x,V=X.y;r.modifiersData.popperOffsets!=null&&(r.modifiersData.popperOffsets.x+=J,r.modifiersData.popperOffsets.y+=V),r.modifiersData[v]=R}},gs={name:"popperOffsets",enabled:!0,phase:"read",fn:function(p){var r=p.state,d=p.name;r.modifiersData[d]=nr({reference:r.rects.reference,element:r.rects.popper,placement:r.placement})},data:{}},Xu={name:"preventOverflow",enabled:!0,phase:"main",fn:function(p){var r=p.state,d=p.options,v=p.name,A=d.mainAxis,O=A===void 0||A,R=d.altAxis,X=R!==void 0&&R,J=d.boundary,V=d.rootBoundary,K=d.altBoundary,$=d.padding,pt=d.tether,ut=pt===void 0||pt,ct=d.tetherOffset,ft=ct===void 0?0:ct,dt=xn(r,{boundary:J,rootBoundary:V,padding:$,altBoundary:K}),wt=Pe(r.placement),Ht=La(r.placement),it=!Ht,Dt=ui(wt),vt=Dt==="x"?"y":"x",Et=r.modifiersData.popperOffsets,Rt=r.rects.reference,Ut=r.rects.popper,zt=typeof ft=="function"?ft(Object.assign({},r.rects,{placement:r.placement})):ft,Kt=typeof zt=="number"?{mainAxis:zt,altAxis:zt}:Object.assign({mainAxis:0,altAxis:0},zt),Oe=r.modifiersData.offset?r.modifiersData.offset[r.placement]:null,Vt={x:0,y:0};if(Et){if(O){var Ct,Ce=Dt==="y"?Ee:ie,ve=Dt==="y"?Ye:Ne,Yt=Dt==="y"?"height":"width",nn=Et[Dt],ce=nn+dt[Ce],Qn=nn-dt[ve],ee=ut?-Ut[Yt]/2:0,jt=Ht===We?Rt[Yt]:Ut[Yt],ye=Ht===We?-Ut[Yt]:-Rt[Yt],Ze=r.elements.arrow,Zn=ut&&Ze?cs(Ze):{width:0,height:0},Ti=r.modifiersData["arrow#persistent"]?r.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},Hs=Ti[Ce],ks=Ti[ve],Dl=An(0,Rt[Yt],Zn[Yt]),_o=it?Rt[Yt]/2-ee-Dl-Hs-Kt.mainAxis:jt-Dl-Hs-Kt.mainAxis,Pc=it?-Rt[Yt]/2+ee+Dl+ks+Kt.mainAxis:ye+Dl+ks+Kt.mainAxis,Tr=r.elements.arrow&&za(r.elements.arrow),So=Tr?Dt==="y"?Tr.clientTop||0:Tr.clientLeft||0:0,Bs=(Ct=Oe==null?void 0:Oe[Dt])!=null?Ct:0,qs=nn+Pc-Bs,Ys=An(ut?fl(ce,nn+_o-Bs-So):ce,nn,ut?ua(Qn,qs):Qn);Et[Dt]=Ys,Vt[Dt]=Ys-nn}if(X){var Xs,Eo=Dt==="x"?Ee:ie,Ao=Dt==="x"?Ye:Ne,va=Et[vt],Or=vt==="y"?"height":"width",Gs=va+dt[Eo],Xa=va-dt[Ao],Cr=[Ee,ie].indexOf(wt)!==-1,Oi=(Xs=Oe==null?void 0:Oe[vt])!=null?Xs:0,Ci=Cr?Gs:va-Rt[Or]-Ut[Or]-Oi+Kt.altAxis,Vs=Cr?va+Rt[Or]+Ut[Or]-Oi-Kt.altAxis:Xa,wr=ut&&Cr?function(xo,To,Dr){var Qs=An(xo,To,Dr);return Qs>Dr?Dr:Qs}(Ci,va,Vs):An(ut?Ci:Gs,va,ut?Vs:Xa);Et[vt]=wr,Vt[vt]=wr-va}r.modifiersData[v]=Vt}},requiresIfExists:["offset"]};function Lc(p,r,d){d===void 0&&(d=!1);var v,A,O=Ae(r),R=Ae(r)&&function($){var pt=$.getBoundingClientRect(),ut=rn(pt.width)/$.offsetWidth||1,ct=rn(pt.height)/$.offsetHeight||1;return ut!==1||ct!==1}(r),X=oa(r),J=sn(p,R,d),V={scrollLeft:0,scrollTop:0},K={x:0,y:0};return(O||!O&&!d)&&((Sn(r)!=="body"||Un(X))&&(V=(v=r)!==pe(v)&&Ae(v)?{scrollLeft:(A=v).scrollLeft,scrollTop:A.scrollTop}:tr(v)),Ae(r)?((K=sn(r,!0)).x+=r.clientLeft,K.y+=r.clientTop):X&&(K.x=ge(X))),{x:J.left+V.scrollLeft-K.x,y:J.top+V.scrollTop-K.y,width:J.width,height:J.height}}function jc(p){var r=new Map,d=new Set,v=[];function A(O){d.add(O.name),[].concat(O.requires||[],O.requiresIfExists||[]).forEach(function(R){if(!d.has(R)){var X=r.get(R);X&&A(X)}}),v.push(O)}return p.forEach(function(O){r.set(O.name,O)}),p.forEach(function(O){d.has(O.name)||A(O)}),v}var Gu={placement:"bottom",modifiers:[],strategy:"absolute"};function vs(){for(var p=arguments.length,r=new Array(p),d=0;dNumber.parseInt(d,10)):typeof r=="function"?d=>r(d,this._element):r}_getPopperConfig(){const r={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(_t.setDataAttribute(this._menu,"popper","static"),r.modifiers=[{name:"applyStyles",enabled:!1}]),{...r,...W(this._config.popperConfig,[r])}}_selectMenuItem({key:r,target:d}){const v=nt.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(A=>E(A));v.length&&bt(v,d,r===Zu,!v.includes(d)).focus()}static jQueryInterface(r){return this.each(function(){const d=on.getOrCreateInstance(this,r);if(typeof r=="string"){if(d[r]===void 0)throw new TypeError(`No method named "${r}"`);d[r]()}})}static clearMenus(r){if(r.button===2||r.type==="keyup"&&r.key!=="Tab")return;const d=nt.find(mi);for(const v of d){const A=on.getInstance(v);if(!A||A._config.autoClose===!1)continue;const O=r.composedPath(),R=O.includes(A._menu);if(O.includes(A._element)||A._config.autoClose==="inside"&&!R||A._config.autoClose==="outside"&&R||A._menu.contains(r.target)&&(r.type==="keyup"&&r.key==="Tab"||/input|select|option|textarea|form/i.test(r.target.tagName)))continue;const X={relatedTarget:A._element};r.type==="click"&&(X.clickEvent=r),A._completeHide(X)}}static dataApiKeydownHandler(r){const d=/input|textarea/i.test(r.target.tagName),v=r.key==="Escape",A=[Qu,Zu].includes(r.key);if(!A&&!v||d&&!v)return;r.preventDefault();const O=this.matches(kn)?this:nt.prev(this,kn)[0]||nt.next(this,kn)[0]||nt.findOne(kn,r.delegateTarget.parentNode),R=on.getOrCreateInstance(O);if(A)return r.stopPropagation(),R.show(),void R._selectMenuItem(r);R._isShown()&&(r.stopPropagation(),R.hide(),O.focus())}}k.on(document,$u,kn,on.dataApiKeydownHandler),k.on(document,$u,sr,on.dataApiKeydownHandler),k.on(document,Ku,on.clearMenus),k.on(document,Xc,on.clearMenus),k.on(document,Ku,kn,function(p){p.preventDefault(),on.getOrCreateInstance(this).toggle()}),H(on);const _s="backdrop",Ss="show",ml=`mousedown.bs.${_s}`,pi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Qc={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class gi extends me{constructor(r){super(),this._config=this._getConfig(r),this._isAppended=!1,this._element=null}static get Default(){return pi}static get DefaultType(){return Qc}static get NAME(){return _s}show(r){if(!this._config.isVisible)return void W(r);this._append();const d=this._getElement();this._config.isAnimated&&q(d),d.classList.add(Ss),this._emulateAnimation(()=>{W(r)})}hide(r){this._config.isVisible?(this._getElement().classList.remove(Ss),this._emulateAnimation(()=>{this.dispose(),W(r)})):W(r)}dispose(){this._isAppended&&(k.off(this._element,ml),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const r=document.createElement("div");r.className=this._config.className,this._config.isAnimated&&r.classList.add("fade"),this._element=r}return this._element}_configAfterMerge(r){return r.rootElement=S(r.rootElement),r}_append(){if(this._isAppended)return;const r=this._getElement();this._config.rootElement.append(r),k.on(r,ml,()=>{W(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(r){P(r,this._getElement(),this._config.isAnimated)}}const vi=".bs.focustrap",to=`focusin${vi}`,Es=`keydown.tab${vi}`,ur="backward",eo={autofocus:!0,trapElement:null},no={autofocus:"boolean",trapElement:"element"};class As extends me{constructor(r){super(),this._config=this._getConfig(r),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return eo}static get DefaultType(){return no}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),k.off(document,vi),k.on(document,to,r=>this._handleFocusin(r)),k.on(document,Es,r=>this._handleKeydown(r)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,k.off(document,vi))}_handleFocusin(r){const{trapElement:d}=this._config;if(r.target===document||r.target===d||d.contains(r.target))return;const v=nt.focusableChildren(d);v.length===0?d.focus():this._lastTabNavDirection===ur?v[v.length-1].focus():v[0].focus()}_handleKeydown(r){r.key==="Tab"&&(this._lastTabNavDirection=r.shiftKey?ur:"forward")}}const ao=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",lo=".sticky-top",or="padding-right",io="margin-right";class xs{constructor(){this._element=document.body}getWidth(){const r=document.documentElement.clientWidth;return Math.abs(window.innerWidth-r)}hide(){const r=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,or,d=>d+r),this._setElementAttributes(ao,or,d=>d+r),this._setElementAttributes(lo,io,d=>d-r)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,or),this._resetElementAttributes(ao,or),this._resetElementAttributes(lo,io)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(r,d,v){const A=this.getWidth();this._applyManipulationCallback(r,O=>{if(O!==this._element&&window.innerWidth>O.clientWidth+A)return;this._saveInitialAttribute(O,d);const R=window.getComputedStyle(O).getPropertyValue(d);O.style.setProperty(d,`${v(Number.parseFloat(R))}px`)})}_saveInitialAttribute(r,d){const v=r.style.getPropertyValue(d);v&&_t.setDataAttribute(r,d,v)}_resetElementAttributes(r,d){this._applyManipulationCallback(r,v=>{const A=_t.getDataAttribute(v,d);A!==null?(_t.removeDataAttribute(v,d),v.style.setProperty(d,A)):v.style.removeProperty(d)})}_applyManipulationCallback(r,d){if(b(r))d(r);else for(const v of nt.find(r,this._element))d(v)}}const Gt=".bs.modal",yi=`hide${Gt}`,ro=`hidePrevented${Gt}`,Ts=`hidden${Gt}`,Os=`show${Gt}`,so=`shown${Gt}`,Cs=`resize${Gt}`,Zc=`click.dismiss${Gt}`,Kc=`mousedown.dismiss${Gt}`,pl=`keydown.dismiss${Gt}`,ws=`click${Gt}.data-api`,gl="modal-open",cr="show",fr="modal-static",Ha={backdrop:!0,focus:!0,keyboard:!0},vl={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Bn extends He{constructor(r,d){super(r,d),this._dialog=nt.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new xs,this._addEventListeners()}static get Default(){return Ha}static get DefaultType(){return vl}static get NAME(){return"modal"}toggle(r){return this._isShown?this.hide():this.show(r)}show(r){this._isShown||this._isTransitioning||k.trigger(this._element,Os,{relatedTarget:r}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(gl),this._adjustDialog(),this._backdrop.show(()=>this._showElement(r)))}hide(){this._isShown&&!this._isTransitioning&&(k.trigger(this._element,yi).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(cr),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated())))}dispose(){k.off(window,Gt),k.off(this._dialog,Gt),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new gi({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new As({trapElement:this._element})}_showElement(r){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const d=nt.findOne(".modal-body",this._dialog);d&&(d.scrollTop=0),q(this._element),this._element.classList.add(cr),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,k.trigger(this._element,so,{relatedTarget:r})},this._dialog,this._isAnimated())}_addEventListeners(){k.on(this._element,pl,r=>{r.key==="Escape"&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())}),k.on(window,Cs,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),k.on(this._element,Kc,r=>{k.one(this._element,Zc,d=>{this._element===r.target&&this._element===d.target&&(this._config.backdrop!=="static"?this._config.backdrop&&this.hide():this._triggerBackdropTransition())})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(gl),this._resetAdjustments(),this._scrollBar.reset(),k.trigger(this._element,Ts)})}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(k.trigger(this._element,ro).defaultPrevented)return;const r=this._element.scrollHeight>document.documentElement.clientHeight,d=this._element.style.overflowY;d==="hidden"||this._element.classList.contains(fr)||(r||(this._element.style.overflowY="hidden"),this._element.classList.add(fr),this._queueCallback(()=>{this._element.classList.remove(fr),this._queueCallback(()=>{this._element.style.overflowY=d},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const r=this._element.scrollHeight>document.documentElement.clientHeight,d=this._scrollBar.getWidth(),v=d>0;if(v&&!r){const A=Q()?"paddingLeft":"paddingRight";this._element.style[A]=`${d}px`}if(!v&&r){const A=Q()?"paddingRight":"paddingLeft";this._element.style[A]=`${d}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(r,d){return this.each(function(){const v=Bn.getOrCreateInstance(this,r);if(typeof r=="string"){if(v[r]===void 0)throw new TypeError(`No method named "${r}"`);v[r](d)}})}}k.on(document,ws,'[data-bs-toggle="modal"]',function(p){const r=nt.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&p.preventDefault(),k.one(r,Os,v=>{v.defaultPrevented||k.one(r,Ts,()=>{E(this)&&this.focus()})});const d=nt.findOne(".modal.show");d&&Bn.getInstance(d).hide(),Bn.getOrCreateInstance(r).toggle(this)}),Ft(Bn),H(Bn);const Tn=".bs.offcanvas",ca=".data-api",uo=`load${Tn}${ca}`,Ds="show",Ms="showing",oo="hiding",co=".offcanvas.show",$c=`show${Tn}`,fo=`shown${Tn}`,ho=`hide${Tn}`,Ns=`hidePrevented${Tn}`,Ie=`hidden${Tn}`,tn=`resize${Tn}`,yl=`click${Tn}${ca}`,zs=`keydown.dismiss${Tn}`,dr={backdrop:!0,keyboard:!0,scroll:!1},hr={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class cn extends He{constructor(r,d){super(r,d),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return dr}static get DefaultType(){return hr}static get NAME(){return"offcanvas"}toggle(r){return this._isShown?this.hide():this.show(r)}show(r){this._isShown||k.trigger(this._element,$c,{relatedTarget:r}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||new xs().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Ms),this._queueCallback(()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Ds),this._element.classList.remove(Ms),k.trigger(this._element,fo,{relatedTarget:r})},this._element,!0))}hide(){this._isShown&&(k.trigger(this._element,ho).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(oo),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove(Ds,oo),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new xs().reset(),k.trigger(this._element,Ie)},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const r=!!this._config.backdrop;return new gi({className:"offcanvas-backdrop",isVisible:r,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:r?()=>{this._config.backdrop!=="static"?this.hide():k.trigger(this._element,Ns)}:null})}_initializeFocusTrap(){return new As({trapElement:this._element})}_addEventListeners(){k.on(this._element,zs,r=>{r.key==="Escape"&&(this._config.keyboard?this.hide():k.trigger(this._element,Ns))})}static jQueryInterface(r){return this.each(function(){const d=cn.getOrCreateInstance(this,r);if(typeof r=="string"){if(d[r]===void 0||r.startsWith("_")||r==="constructor")throw new TypeError(`No method named "${r}"`);d[r](this)}})}}k.on(document,yl,'[data-bs-toggle="offcanvas"]',function(p){const r=nt.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&p.preventDefault(),D(this))return;k.one(r,Ie,()=>{E(this)&&this.focus()});const d=nt.findOne(co);d&&d!==r&&cn.getInstance(d).hide(),cn.getOrCreateInstance(r).toggle(this)}),k.on(window,uo,()=>{for(const p of nt.find(co))cn.getOrCreateInstance(p).show()}),k.on(window,tn,()=>{for(const p of nt.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(p).position!=="fixed"&&cn.getOrCreateInstance(p).hide()}),Ft(cn),H(cn);const qn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},mo=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),mr=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,bl=(p,r)=>{const d=p.nodeName.toLowerCase();return r.includes(d)?!mo.has(d)||!!mr.test(p.nodeValue):r.filter(v=>v instanceof RegExp).some(v=>v.test(d))},po={allowList:qn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},en={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},_l={entry:"(string|element|function|null)",selector:"(string|element)"};class Sl extends me{constructor(r){super(),this._config=this._getConfig(r)}static get Default(){return po}static get DefaultType(){return en}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map(r=>this._resolvePossibleFunction(r)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(r){return this._checkContent(r),this._config.content={...this._config.content,...r},this}toHtml(){const r=document.createElement("div");r.innerHTML=this._maybeSanitize(this._config.template);for(const[A,O]of Object.entries(this._config.content))this._setContent(r,O,A);const d=r.children[0],v=this._resolvePossibleFunction(this._config.extraClass);return v&&d.classList.add(...v.split(" ")),d}_typeCheckConfig(r){super._typeCheckConfig(r),this._checkContent(r.content)}_checkContent(r){for(const[d,v]of Object.entries(r))super._typeCheckConfig({selector:d,entry:v},_l)}_setContent(r,d,v){const A=nt.findOne(v,r);A&&((d=this._resolvePossibleFunction(d))?b(d)?this._putElementInTemplate(S(d),A):this._config.html?A.innerHTML=this._maybeSanitize(d):A.textContent=d:A.remove())}_maybeSanitize(r){return this._config.sanitize?function(d,v,A){if(!d.length)return d;if(A&&typeof A=="function")return A(d);const O=new window.DOMParser().parseFromString(d,"text/html"),R=[].concat(...O.body.querySelectorAll("*"));for(const X of R){const J=X.nodeName.toLowerCase();if(!Object.keys(v).includes(J)){X.remove();continue}const V=[].concat(...X.attributes),K=[].concat(v["*"]||[],v[J]||[]);for(const $ of V)bl($,K)||X.removeAttribute($.nodeName)}return O.body.innerHTML}(r,this._config.allowList,this._config.sanitizeFn):r}_resolvePossibleFunction(r){return W(r,[this])}_putElementInTemplate(r,d){if(this._config.html)return d.innerHTML="",void d.append(r);d.textContent=r.textContent}}const pr=new Set(["sanitize","allowList","sanitizeFn"]),El="fade",xe="show",Ge=".modal",fa="hide.bs.modal",Ve="hover",fn="focus",ka={AUTO:"auto",TOP:"top",RIGHT:Q()?"left":"right",BOTTOM:"bottom",LEFT:Q()?"right":"left"},go={allowList:qn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Rs={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Yn extends He{constructor(r,d){if(rr===void 0)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(r,d),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return go}static get DefaultType(){return Rs}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),k.off(this._element.closest(Ge),fa,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const r=k.trigger(this._element,this.constructor.eventName("show")),d=(j(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(r.defaultPrevented||!d)return;this._disposePopper();const v=this._getTipElement();this._element.setAttribute("aria-describedby",v.getAttribute("id"));const{container:A}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(A.append(v),k.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(v),v.classList.add(xe),"ontouchstart"in document.documentElement)for(const O of[].concat(...document.body.children))k.on(O,"mouseover",z);this._queueCallback(()=>{k.trigger(this._element,this.constructor.eventName("shown")),this._isHovered===!1&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!k.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(xe),"ontouchstart"in document.documentElement)for(const r of[].concat(...document.body.children))k.off(r,"mouseover",z);this._activeTrigger.click=!1,this._activeTrigger[fn]=!1,this._activeTrigger[Ve]=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),k.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(r){const d=this._getTemplateFactory(r).toHtml();if(!d)return null;d.classList.remove(El,xe),d.classList.add(`bs-${this.constructor.NAME}-auto`);const v=(A=>{do A+=Math.floor(1e6*Math.random());while(document.getElementById(A));return A})(this.constructor.NAME).toString();return d.setAttribute("id",v),this._isAnimated()&&d.classList.add(El),d}setContent(r){this._newContent=r,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(r){return this._templateFactory?this._templateFactory.changeContent(r):this._templateFactory=new Sl({...this._config,content:r,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(r){return this.constructor.getOrCreateInstance(r.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(El)}_isShown(){return this.tip&&this.tip.classList.contains(xe)}_createPopper(r){const d=W(this._config.placement,[this,r,this._element]),v=ka[d.toUpperCase()];return ys(this._element,r,this._getPopperConfig(v))}_getOffset(){const{offset:r}=this._config;return typeof r=="string"?r.split(",").map(d=>Number.parseInt(d,10)):typeof r=="function"?d=>r(d,this._element):r}_resolvePossibleFunction(r){return W(r,[this._element])}_getPopperConfig(r){const d={placement:r,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:v=>{this._getTipElement().setAttribute("data-popper-placement",v.state.placement)}}]};return{...d,...W(this._config.popperConfig,[d])}}_setListeners(){const r=this._config.trigger.split(" ");for(const d of r)if(d==="click")k.on(this._element,this.constructor.eventName("click"),this._config.selector,v=>{this._initializeOnDelegatedTarget(v).toggle()});else if(d!=="manual"){const v=d===Ve?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),A=d===Ve?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");k.on(this._element,v,this._config.selector,O=>{const R=this._initializeOnDelegatedTarget(O);R._activeTrigger[O.type==="focusin"?fn:Ve]=!0,R._enter()}),k.on(this._element,A,this._config.selector,O=>{const R=this._initializeOnDelegatedTarget(O);R._activeTrigger[O.type==="focusout"?fn:Ve]=R._element.contains(O.relatedTarget),R._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},k.on(this._element.closest(Ge),fa,this._hideModalHandler)}_fixTitle(){const r=this._element.getAttribute("title");r&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",r),this._element.setAttribute("data-bs-original-title",r),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(r,d){clearTimeout(this._timeout),this._timeout=setTimeout(r,d)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(r){const d=_t.getDataAttributes(this._element);for(const v of Object.keys(d))pr.has(v)&&delete d[v];return r={...d,...typeof r=="object"&&r?r:{}},r=this._mergeConfigObj(r),r=this._configAfterMerge(r),this._typeCheckConfig(r),r}_configAfterMerge(r){return r.container=r.container===!1?document.body:S(r.container),typeof r.delay=="number"&&(r.delay={show:r.delay,hide:r.delay}),typeof r.title=="number"&&(r.title=r.title.toString()),typeof r.content=="number"&&(r.content=r.content.toString()),r}_getDelegateConfig(){const r={};for(const[d,v]of Object.entries(this._config))this.constructor.Default[d]!==v&&(r[d]=v);return r.selector=!1,r.trigger="manual",r}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(r){return this.each(function(){const d=Yn.getOrCreateInstance(this,r);if(typeof r=="string"){if(d[r]===void 0)throw new TypeError(`No method named "${r}"`);d[r]()}})}}H(Yn);const Te={...Yn.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},he={...Yn.DefaultType,content:"(null|string|element|function)"};class xt extends Yn{static get Default(){return Te}static get DefaultType(){return he}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(r){return this.each(function(){const d=xt.getOrCreateInstance(this,r);if(typeof r=="string"){if(d[r]===void 0)throw new TypeError(`No method named "${r}"`);d[r]()}})}}H(xt);const Qe=".bs.scrollspy",On=`activate${Qe}`,gr=`click${Qe}`,Ba=`load${Qe}.data-api`,qa="active",vr="[href]",Al=".nav-link",bi=`${Al}, .nav-item > ${Al}, .list-group-item`,_i={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Si={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class xl extends He{constructor(r,d){super(r,d),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return _i}static get DefaultType(){return Si}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const r of this._observableSections.values())this._observer.observe(r)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(r){return r.target=S(r.target)||document.body,r.rootMargin=r.offset?`${r.offset}px 0px -30%`:r.rootMargin,typeof r.threshold=="string"&&(r.threshold=r.threshold.split(",").map(d=>Number.parseFloat(d))),r}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(k.off(this._config.target,gr),k.on(this._config.target,gr,vr,r=>{const d=this._observableSections.get(r.target.hash);if(d){r.preventDefault();const v=this._rootElement||window,A=d.offsetTop-this._element.offsetTop;if(v.scrollTo)return void v.scrollTo({top:A,behavior:"smooth"});v.scrollTop=A}}))}_getNewObserver(){const r={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(d=>this._observerCallback(d),r)}_observerCallback(r){const d=R=>this._targetLinks.get(`#${R.target.id}`),v=R=>{this._previousScrollData.visibleEntryTop=R.target.offsetTop,this._process(d(R))},A=(this._rootElement||document.documentElement).scrollTop,O=A>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=A;for(const R of r){if(!R.isIntersecting){this._activeTarget=null,this._clearActiveClass(d(R));continue}const X=R.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(O&&X){if(v(R),!A)return}else O||X||v(R)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const r=nt.find(vr,this._config.target);for(const d of r){if(!d.hash||D(d))continue;const v=nt.findOne(decodeURI(d.hash),this._element);E(v)&&(this._targetLinks.set(decodeURI(d.hash),d),this._observableSections.set(d.hash,v))}}_process(r){this._activeTarget!==r&&(this._clearActiveClass(this._config.target),this._activeTarget=r,r.classList.add(qa),this._activateParents(r),k.trigger(this._element,On,{relatedTarget:r}))}_activateParents(r){if(r.classList.contains("dropdown-item"))nt.findOne(".dropdown-toggle",r.closest(".dropdown")).classList.add(qa);else for(const d of nt.parents(r,".nav, .list-group"))for(const v of nt.prev(d,bi))v.classList.add(qa)}_clearActiveClass(r){r.classList.remove(qa);const d=nt.find(`${vr}.${qa}`,r);for(const v of d)v.classList.remove(qa)}static jQueryInterface(r){return this.each(function(){const d=xl.getOrCreateInstance(this,r);if(typeof r=="string"){if(d[r]===void 0||r.startsWith("_")||r==="constructor")throw new TypeError(`No method named "${r}"`);d[r]()}})}}k.on(window,Ba,()=>{for(const p of nt.find('[data-bs-spy="scroll"]'))xl.getOrCreateInstance(p)}),H(xl);const Xn=".bs.tab",vo=`hide${Xn}`,yr=`hidden${Xn}`,yo=`show${Xn}`,Ei=`shown${Xn}`,bo=`click${Xn}`,Tl=`keydown${Xn}`,Ai=`load${Xn}`,br="ArrowLeft",Ol="ArrowRight",_r="ArrowUp",Ls="ArrowDown",Sr="Home",da="End",ha="active",Ya="fade",Cl="show",js=".dropdown-toggle",xi=`:not(${js})`,Er='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Re=`.nav-link${xi}, .list-group-item${xi}, [role="tab"]${xi}, ${Er}`,Cn=`.${ha}[data-bs-toggle="tab"], .${ha}[data-bs-toggle="pill"], .${ha}[data-bs-toggle="list"]`;class Le extends He{constructor(r){super(r),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),k.on(this._element,Tl,d=>this._keydown(d)))}static get NAME(){return"tab"}show(){const r=this._element;if(this._elemIsActive(r))return;const d=this._getActiveElem(),v=d?k.trigger(d,vo,{relatedTarget:r}):null;k.trigger(r,yo,{relatedTarget:d}).defaultPrevented||v&&v.defaultPrevented||(this._deactivate(d,r),this._activate(r,d))}_activate(r,d){r&&(r.classList.add(ha),this._activate(nt.getElementFromSelector(r)),this._queueCallback(()=>{r.getAttribute("role")==="tab"?(r.removeAttribute("tabindex"),r.setAttribute("aria-selected",!0),this._toggleDropDown(r,!0),k.trigger(r,Ei,{relatedTarget:d})):r.classList.add(Cl)},r,r.classList.contains(Ya)))}_deactivate(r,d){r&&(r.classList.remove(ha),r.blur(),this._deactivate(nt.getElementFromSelector(r)),this._queueCallback(()=>{r.getAttribute("role")==="tab"?(r.setAttribute("aria-selected",!1),r.setAttribute("tabindex","-1"),this._toggleDropDown(r,!1),k.trigger(r,yr,{relatedTarget:d})):r.classList.remove(Cl)},r,r.classList.contains(Ya)))}_keydown(r){if(![br,Ol,_r,Ls,Sr,da].includes(r.key))return;r.stopPropagation(),r.preventDefault();const d=this._getChildren().filter(A=>!D(A));let v;if([Sr,da].includes(r.key))v=d[r.key===Sr?0:d.length-1];else{const A=[Ol,Ls].includes(r.key);v=bt(d,r.target,A,!0)}v&&(v.focus({preventScroll:!0}),Le.getOrCreateInstance(v).show())}_getChildren(){return nt.find(Re,this._parent)}_getActiveElem(){return this._getChildren().find(r=>this._elemIsActive(r))||null}_setInitialAttributes(r,d){this._setAttributeIfNotExists(r,"role","tablist");for(const v of d)this._setInitialAttributesOnChild(v)}_setInitialAttributesOnChild(r){r=this._getInnerElement(r);const d=this._elemIsActive(r),v=this._getOuterElement(r);r.setAttribute("aria-selected",d),v!==r&&this._setAttributeIfNotExists(v,"role","presentation"),d||r.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(r,"role","tab"),this._setInitialAttributesOnTargetPanel(r)}_setInitialAttributesOnTargetPanel(r){const d=nt.getElementFromSelector(r);d&&(this._setAttributeIfNotExists(d,"role","tabpanel"),r.id&&this._setAttributeIfNotExists(d,"aria-labelledby",`${r.id}`))}_toggleDropDown(r,d){const v=this._getOuterElement(r);if(!v.classList.contains("dropdown"))return;const A=(O,R)=>{const X=nt.findOne(O,v);X&&X.classList.toggle(R,d)};A(js,ha),A(".dropdown-menu",Cl),v.setAttribute("aria-expanded",d)}_setAttributeIfNotExists(r,d,v){r.hasAttribute(d)||r.setAttribute(d,v)}_elemIsActive(r){return r.classList.contains(ha)}_getInnerElement(r){return r.matches(Re)?r:nt.findOne(Re,r)}_getOuterElement(r){return r.closest(".nav-item, .list-group-item")||r}static jQueryInterface(r){return this.each(function(){const d=Le.getOrCreateInstance(this);if(typeof r=="string"){if(d[r]===void 0||r.startsWith("_")||r==="constructor")throw new TypeError(`No method named "${r}"`);d[r]()}})}}k.on(document,bo,Er,function(p){["A","AREA"].includes(this.tagName)&&p.preventDefault(),D(this)||Le.getOrCreateInstance(this).show()}),k.on(window,Ai,()=>{for(const p of nt.find(Cn))Le.getOrCreateInstance(p)}),H(Le);const Gn=".bs.toast",ma=`mouseover${Gn}`,Vn=`mouseout${Gn}`,re=`focusin${Gn}`,Ar=`focusout${Gn}`,Fc=`hide${Gn}`,Jc=`hidden${Gn}`,Wc=`show${Gn}`,se=`shown${Gn}`,xr="hide",pa="show",ga="showing",Us={animation:"boolean",autohide:"boolean",delay:"number"},wl={animation:!0,autohide:!0,delay:5e3};class wn extends He{constructor(r,d){super(r,d),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return wl}static get DefaultType(){return Us}static get NAME(){return"toast"}show(){k.trigger(this._element,Wc).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(xr),q(this._element),this._element.classList.add(pa,ga),this._queueCallback(()=>{this._element.classList.remove(ga),k.trigger(this._element,se),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(k.trigger(this._element,Fc).defaultPrevented||(this._element.classList.add(ga),this._queueCallback(()=>{this._element.classList.add(xr),this._element.classList.remove(ga,pa),k.trigger(this._element,Jc)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(pa),super.dispose()}isShown(){return this._element.classList.contains(pa)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(r,d){switch(r.type){case"mouseover":case"mouseout":this._hasMouseInteraction=d;break;case"focusin":case"focusout":this._hasKeyboardInteraction=d}if(d)return void this._clearTimeout();const v=r.relatedTarget;this._element===v||this._element.contains(v)||this._maybeScheduleHide()}_setListeners(){k.on(this._element,ma,r=>this._onInteraction(r,!0)),k.on(this._element,Vn,r=>this._onInteraction(r,!1)),k.on(this._element,re,r=>this._onInteraction(r,!0)),k.on(this._element,Ar,r=>this._onInteraction(r,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(r){return this.each(function(){const d=wn.getOrCreateInstance(this,r);if(typeof r=="string"){if(d[r]===void 0)throw new TypeError(`No method named "${r}"`);d[r](this)}})}}return Ft(wn),H(wn),{Alert:Fe,Button:ea,Carousel:wa,Collapse:ia,Dropdown:on,Modal:Bn,Offcanvas:cn,Popover:xt,ScrollSpy:xl,Tab:Le,Toast:wn,Tooltip:Yn}})}(oc)),oc.exports}Eb();const Ab=()=>G.jsxs("div",{className:"home-container",children:[G.jsxs("header",{className:"hero-section",children:[G.jsx("h1",{className:"hero-title",children:"ContaminUS"}),G.jsx("p",{className:"hero-description",children:"Proyecto universitario para monitorear la calidad del aire usando sensores IoT."}),G.jsx("button",{className:"cta-button",children:"Explorar Proyecto"})]}),G.jsxs("section",{className:"about-section",children:[G.jsx("h2",{children:"Sobre el Proyecto"}),G.jsx("p",{children:"ContaminUS es una solución basada en tecnologías IoT para medir la calidad del aire en tiempo real. Este proyecto busca crear una herramienta accesible para estudiantes, investigadores y comunidades interesadas en el monitoreo ambiental."}),G.jsxs("div",{className:"features",children:[G.jsxs("div",{className:"feature",children:[G.jsx("h3",{children:"Medición en tiempo real"}),G.jsx("p",{children:"Monitorea la calidad del aire con sensores MQ-135 y DHT11, mostrando datos precisos y actualizados."})]}),G.jsxs("div",{className:"feature",children:[G.jsx("h3",{children:"Aplicación web interactiva"}),G.jsx("p",{children:"Visualiza los datos de calidad del aire mediante mapas interactivos y gráficos."})]}),G.jsxs("div",{className:"feature",children:[G.jsx("h3",{children:"Colaboración en la universidad"}),G.jsx("p",{children:"El proyecto está orientado a estudiantes que deseen aprender y colaborar con el análisis de datos ambientales."})]})]})]})]});function zg(l,u){const o=w.useRef(u);w.useEffect(function(){u!==o.current&&l.attributionControl!=null&&(o.current!=null&&l.attributionControl.removeAttribution(o.current),u!=null&&l.attributionControl.addAttribution(u)),o.current=u},[l,u])}function xb(l,u,o){u.center!==o.center&&l.setLatLng(u.center),u.radius!=null&&u.radius!==o.radius&&l.setRadius(u.radius)}const Tb=1;function Ob(l){return Object.freeze({__version:Tb,map:l})}function Cb(l,u){return Object.freeze({...l,...u})}const lh=w.createContext(null);function ih(){const l=w.use(lh);if(l==null)throw new Error("No context provided: useLeafletContext() can only be used in a descendant of ");return l}function wb(l){function u(o,c){const{instance:f,context:m}=l(o).current;w.useImperativeHandle(c,()=>f);const{children:y}=o;return y==null?null:Bi.createElement(lh,{value:m},y)}return w.forwardRef(u)}function Db(l){function u(o,c){const[f,m]=w.useState(!1),{instance:y}=l(o,m).current;w.useImperativeHandle(c,()=>y),w.useEffect(function(){f&&y.update()},[y,f,o.children]);const b=y._contentNode;return b?_b.createPortal(o.children,b):null}return w.forwardRef(u)}function Mb(l){function u(o,c){const{instance:f}=l(o).current;return w.useImperativeHandle(c,()=>f),null}return w.forwardRef(u)}function rh(l,u){const o=w.useRef(void 0);w.useEffect(function(){return u!=null&&l.instance.on(u),o.current=u,function(){o.current!=null&&l.instance.off(o.current),o.current=null}},[l,u])}function yc(l,u){const o=l.pane??u.pane;return o?{...l,pane:o}:l}function Nb(l,u){return function(c,f){const m=ih(),y=l(yc(c,m),m);return zg(m.map,c.attribution),rh(y.current,c.eventHandlers),u(y.current,m,c,f),y}}var bc=Uy();function sh(l,u,o){return Object.freeze({instance:l,context:u,container:o})}function uh(l,u){return u==null?function(c,f){const m=w.useRef(void 0);return m.current||(m.current=l(c,f)),m}:function(c,f){const m=w.useRef(void 0);m.current||(m.current=l(c,f));const y=w.useRef(c),{instance:b}=m.current;return w.useEffect(function(){y.current!==c&&(u(b,c,y.current),y.current=c)},[b,c,u]),m}}function Rg(l,u){w.useEffect(function(){return(u.layerContainer??u.map).addLayer(l.instance),function(){var m;(m=u.layerContainer)==null||m.removeLayer(l.instance),u.map.removeLayer(l.instance)}},[u,l])}function zb(l){return function(o){const c=ih(),f=l(yc(o,c),c);return zg(c.map,o.attribution),rh(f.current,o.eventHandlers),Rg(f.current,c),f}}function Rb(l,u){const o=w.useRef(void 0);w.useEffect(function(){if(u.pathOptions!==o.current){const f=u.pathOptions??{};l.instance.setStyle(f),o.current=f}},[l,u])}function Lb(l){return function(o){const c=ih(),f=l(yc(o,c),c);return rh(f.current,o.eventHandlers),Rg(f.current,c),Rb(f.current,o),f}}function jb(l,u){const o=uh(l),c=Nb(o,u);return Db(c)}function Ub(l,u){const o=uh(l,u),c=Lb(o);return wb(c)}function Hb(l,u){const o=uh(l,u),c=zb(o);return Mb(c)}function kb(l,u,o){const{opacity:c,zIndex:f}=u;c!=null&&c!==o.opacity&&l.setOpacity(c),f!=null&&f!==o.zIndex&&l.setZIndex(f)}const Np=Ub(function({center:u,children:o,...c},f){const m=new bc.Circle(u,c);return sh(m,Cb(f,{overlayContainer:m}))},xb);function Bb({bounds:l,boundsOptions:u,center:o,children:c,className:f,id:m,placeholder:y,style:b,whenReady:S,zoom:E,...D},j){const[z]=w.useState({className:f,id:m,style:b}),[q,L]=w.useState(null),I=w.useRef(void 0);w.useImperativeHandle(j,()=>(q==null?void 0:q.map)??null,[q]);const Q=w.useCallback(W=>{if(W!==null&&!I.current){const P=new bc.Map(W,D);I.current=P,o!=null&&E!=null?P.setView(o,E):l!=null&&P.fitBounds(l,u),S!=null&&P.whenReady(S),L(Ob(P))}},[]);w.useEffect(()=>()=>{q==null||q.map.remove()},[q]);const H=q?Bi.createElement(lh,{value:q},c):y??null;return Bi.createElement("div",{...z,ref:Q},H)}const qb=w.forwardRef(Bb),Yb=jb(function(u,o){const c=new bc.Popup(u,o.overlayContainer);return sh(c,o)},function(u,o,{position:c},f){w.useEffect(function(){const{instance:y}=u;function b(E){E.popup===y&&(y.update(),f(!0))}function S(E){E.popup===y&&f(!1)}return o.map.on({popupopen:b,popupclose:S}),o.overlayContainer==null?(c!=null&&y.setLatLng(c),y.openOn(o.map)):o.overlayContainer.bindPopup(y),function(){var D;o.map.off({popupopen:b,popupclose:S}),(D=o.overlayContainer)==null||D.unbindPopup(),o.map.removeLayer(y)}},[u,o,f,c])}),Xb=Hb(function({url:u,...o},c){const f=new bc.TileLayer(u,yc(o,c));return sh(f,c)},function(u,o,c){kb(u,o,c);const{url:f}=o;f!=null&&f!==c.url&&u.setUrl(f)});var Sd={exports:{}},Ed,zp;function Gb(){if(zp)return Ed;zp=1;var l="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return Ed=l,Ed}var Ad,Rp;function Vb(){if(Rp)return Ad;Rp=1;var l=Gb();function u(){}function o(){}return o.resetWarningCache=u,Ad=function(){function c(y,b,S,E,D,j){if(j!==l){var z=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw z.name="Invariant Violation",z}}c.isRequired=c;function f(){return c}var m={array:c,bigint:c,bool:c,func:c,number:c,object:c,string:c,symbol:c,any:c,arrayOf:f,element:c,elementType:c,instanceOf:f,node:c,objectOf:f,oneOf:f,oneOfType:f,shape:f,exact:f,checkPropTypes:o,resetWarningCache:u};return m.PropTypes=m,m},Ad}var Lp;function Qb(){return Lp||(Lp=1,Sd.exports=Vb()()),Sd.exports}var Zb=Qb();const et=hg(Zb),Lg=w.createContext(),jg=({children:l})=>{const[u,o]=w.useState(null),[c,f]=w.useState(!0),[m,y]=w.useState(null);return w.useEffect(()=>{(async()=>{try{const S=await fetch("/config/settings.json");if(!S.ok)throw new Error("Error al cargar settings.json");const E=await S.json();o(E)}catch(S){y(S.message)}finally{f(!1)}})()},[]),G.jsx(Lg.Provider,{value:{config:u,configLoading:c,configError:m},children:l})};jg.propTypes={children:et.node.isRequired};const Fr=()=>w.useContext(Lg),Ug=w.createContext(),Mu=({children:l,config:u})=>{const[o,c]=w.useState(null),[f,m]=w.useState(!0),[y,b]=w.useState(null);return w.useEffect(()=>{(async()=>{try{const E=new URLSearchParams(u.params).toString(),D=`${u.baseUrl}?${E}`,j=await fetch(D);if(!j.ok)throw new Error("Error al obtener datos");const z=await j.json();c(z)}catch(E){b(E.message)}finally{m(!1)}})()},[u]),G.jsx(Ug.Provider,{value:{data:o,dataLoading:f,dataError:y},children:l})};Mu.propTypes={children:et.node.isRequired,config:et.shape({baseUrl:et.string.isRequired,params:et.object}).isRequired};const _c=()=>w.useContext(Ug),Kb=({data:l})=>l.map(({lat:u,lng:o,level:c},f)=>{const m=c<20?"#00FF85":c<60?"#FFA500":"#FF0000",y=4,S=400/y;return G.jsxs("div",{children:[[...Array(y)].map((E,D)=>{const j=S*(D+1),z=.6*((D+1)/y);return G.jsx(Np,{center:[u,o],pathOptions:{color:m,fillColor:m,fillOpacity:z,weight:1},radius:j},`${f}-${D}`)}),G.jsx(Np,{center:[u,o],pathOptions:{color:m,fillColor:m,fillOpacity:.8,weight:2},radius:50,children:G.jsxs(Yb,{children:["Contaminación: ",c," µg/m³"]})})]},f)}),Hg=({deviceId:l})=>{const{config:u,configLoading:o,configError:c}=Fr();if(o)return G.jsx("p",{children:"Cargando configuración..."});if(c)return G.jsxs("p",{children:["Error al cargar configuración: ",c]});if(!u)return G.jsx("p",{children:"Configuración no disponible."});const f=u.appConfig.endpoints.BASE_URL;let y=u.appConfig.endpoints.GET_DEVICE_POLLUTION_MAP.replace("{0}",l);const b={baseUrl:`${f}/${y}`,params:{}};return G.jsx(Mu,{config:b,children:G.jsx($b,{})})},$b=()=>{const{config:l,configLoading:u,configError:o}=Fr(),{data:c,dataLoading:f,dataError:m}=_c();if(u)return G.jsx("p",{children:"Cargando configuración..."});if(o)return G.jsxs("p",{children:["Error al cargar configuración: ",o]});if(!l)return G.jsx("p",{children:"Configuración no disponible."});if(f)return G.jsx("p",{children:"Cargando datos..."});if(m)return G.jsxs("p",{children:["Error al cargar datos: ",o]});if(!c)return G.jsx("p",{children:"Datos no disponibles."});const y=l==null?void 0:l.userConfig.city,b=c.map(S=>({lat:S.lat,lng:S.lon,level:S.carbonMonoxide}));return G.jsx("div",{className:"p-3",children:G.jsxs(qb,{center:y,zoom:13,scrollWheelZoom:!1,style:Fb,children:[G.jsx(Xb,{attribution:'© Contribuidores de OpenStreetMap',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),G.jsx(Kb,{data:b})]})})},Fb={height:"500px",width:"100%",borderRadius:"20px"};Hg.propTypes={deviceId:et.number.isRequired};const kg="label";function jp(l,u){typeof l=="function"?l(u):l&&(l.current=u)}function Jb(l,u){const o=l.options;o&&u&&Object.assign(o,u)}function Bg(l,u){l.labels=u}function qg(l,u){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:kg;const c=[];l.datasets=u.map(f=>{const m=l.datasets.find(y=>y[o]===f[o]);return!m||!f.data||c.includes(m)?{...f}:(c.push(m),Object.assign(m,f),m)})}function Wb(l){let u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:kg;const o={labels:[],datasets:[]};return Bg(o,l.labels),qg(o,l.datasets,u),o}function Pb(l,u){const{height:o=150,width:c=300,redraw:f=!1,datasetIdKey:m,type:y,data:b,options:S,plugins:E=[],fallbackContent:D,updateMode:j,...z}=l,q=w.useRef(null),L=w.useRef(null),I=()=>{q.current&&(L.current=new Pd(q.current,{type:y,data:Wb(b,m),options:S&&{...S},plugins:E}),jp(u,L.current))},Q=()=>{jp(u,null),L.current&&(L.current.destroy(),L.current=null)};return w.useEffect(()=>{!f&&L.current&&S&&Jb(L.current,S)},[f,S]),w.useEffect(()=>{!f&&L.current&&Bg(L.current.config.data,b.labels)},[f,b.labels]),w.useEffect(()=>{!f&&L.current&&b.datasets&&qg(L.current.config.data,b.datasets,m)},[f,b.datasets]),w.useEffect(()=>{L.current&&(f?(Q(),setTimeout(I)):L.current.update(j))},[f,S,b.labels,b.datasets,j]),w.useEffect(()=>{L.current&&(Q(),setTimeout(I))},[y]),w.useEffect(()=>(I(),()=>Q()),[]),Bi.createElement("canvas",{ref:q,role:"img",height:o,width:c,...z},D)}const Ib=w.forwardRef(Pb);function t1(l,u){return Pd.register(u),w.forwardRef((o,c)=>Bi.createElement(Ib,{...o,ref:c,type:l}))}const e1=t1("line",Hy),Yg=w.createContext();function Xg({children:l}){const[u,o]=w.useState(()=>localStorage.getItem("theme")||"light");w.useEffect(()=>{document.body.classList.remove("light","dark"),document.body.classList.add(u),localStorage.setItem("theme",u)},[u]);const c=()=>{o(f=>f==="light"?"dark":"light")};return G.jsx(Yg.Provider,{value:{theme:u,toggleTheme:c},children:l})}Xg.propTypes={children:et.node.isRequired};function Nu(){return w.useContext(Yg)}const Sc=({title:l,status:u,children:o,styleMode:c,className:f,titleIcon:m})=>{const y=w.useRef(null),[b,S]=w.useState(l),{theme:E}=Nu();return w.useEffect(()=>{const D=()=>{y.current&&(y.current.offsetWidth<300&&l.length>15?S(l.slice(0,10)+"."):S(l))};return D(),window.addEventListener("resize",D),()=>window.removeEventListener("resize",D)},[l]),G.jsx("div",{ref:y,className:c==="override"?`${f}`:`col-xl-3 col-sm-6 d-flex flex-column align-items-center p-3 card-container ${f}`,children:G.jsxs("div",{className:`card p-3 w-100 ${E}`,children:[G.jsxs("h3",{className:"text-center",children:[m,b]}),G.jsx("div",{className:"card-content",children:o}),u?G.jsx("span",{className:"status text-center mt-2",children:u}):null]})})};Sc.propTypes={title:et.string.isRequired,status:et.string.isRequired,children:et.node.isRequired,styleMode:et.oneOf(["override",""]),className:et.string,titleIcon:et.node};Sc.defaultProps={styleMode:""};const oh=({cards:l,className:u})=>G.jsx("div",{className:`row justify-content-center g-0 ${u}`,children:l.map((o,c)=>G.jsx(Sc,{title:o.title,status:o.status,styleMode:o.styleMode,className:o.className,titleIcon:o.titleIcon,children:G.jsx("p",{className:"card-text text-center",children:o.content})},c))});oh.propTypes={cards:et.arrayOf(et.shape({title:et.string.isRequired,content:et.string.isRequired,status:et.string.isRequired})).isRequired,className:et.string};Pd.register(ky,By,qy,Yy,Xy);const n1=()=>{const{config:l,configLoading:u,configError:o}=Fr();if(u)return G.jsx("p",{children:"Cargando configuración..."});if(o)return G.jsxs("p",{children:["Error al cargar configuración: ",o]});if(!l)return G.jsx("p",{children:"Configuración no disponible."});const c=l.appConfig.endpoints.BASE_URL,f=l.appConfig.endpoints.sensors,m={baseUrl:`${c}/${f}`,params:{}};return G.jsx(Mu,{config:m,children:G.jsx(Gg,{})})},Gg=()=>{var q,L,I,Q;const{config:l}=Fr(),{data:u,loading:o}=_c(),{theme:c}=Nu(),f=((L=(q=l==null?void 0:l.appConfig)==null?void 0:q.historyChartConfig)==null?void 0:L.chartOptionsDark)??{},m=((Q=(I=l==null?void 0:l.appConfig)==null?void 0:I.historyChartConfig)==null?void 0:Q.chartOptionsLight)??{},y=c==="dark"?f:m,b=new Date().getHours(),S=[`${b-3}:00`,`${b-2}:00`,`${b-1}:00`,`${b}:00`,`${b+1}:00`,`${b+2}:00`,`${b+3}:00`];if(o)return G.jsx("p",{children:"Cargando datos..."});const E=[],D=[],j=[];u==null||u.forEach(H=>{H.value!=null&&(H.sensor_type==="MQ-135"?j.push(H.value):H.sensor_type==="DHT-11"&&(E.push(H.value),D.push(H.value)))});const z=[{title:"🌡️ Temperatura",data:E.length?E:[0],borderColor:"#00FF85",backgroundColor:"rgba(0, 255, 133, 0.2)"},{title:"💧 Humedad",data:D.length?D:[0],borderColor:"#00D4FF",backgroundColor:"rgba(0, 212, 255, 0.2)"},{title:"☁️ Contaminación",data:j.length?j:[0],borderColor:"#FFA500",backgroundColor:"rgba(255, 165, 0, 0.2)"}];return G.jsx(oh,{cards:z.map(({title:H,data:W,borderColor:P,backgroundColor:bt})=>({title:H,content:G.jsx(e1,{data:{labels:S,datasets:[{data:W,borderColor:P,backgroundColor:bt,fill:!0,tension:.4}]},options:y}),styleMode:"override",className:"col-lg-4 col-xxs-12 d-flex flex-column align-items-center p-3 card-container"})),className:""})};Gg.propTypes={options:et.object,timeLabels:et.array,data:et.array};/*! + */var Sb=oc.exports,Mp;function Eb(){return Mp||(Mp=1,function(l,u){(function(o,c){l.exports=c()})(Sb,function(){const o=new Map,c={set(p,r,d){o.has(p)||o.set(p,new Map);const v=o.get(p);v.has(r)||v.size===0?v.set(r,d):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(v.keys())[0]}.`)},get:(p,r)=>o.has(p)&&o.get(p).get(r)||null,remove(p,r){if(!o.has(p))return;const d=o.get(p);d.delete(r),d.size===0&&o.delete(p)}},f="transitionend",m=p=>(p&&window.CSS&&window.CSS.escape&&(p=p.replace(/#([^\s"#']+)/g,(r,d)=>`#${CSS.escape(d)}`)),p),y=p=>{p.dispatchEvent(new Event(f))},b=p=>!(!p||typeof p!="object")&&(p.jquery!==void 0&&(p=p[0]),p.nodeType!==void 0),S=p=>b(p)?p.jquery?p[0]:p:typeof p=="string"&&p.length>0?document.querySelector(m(p)):null,E=p=>{if(!b(p)||p.getClientRects().length===0)return!1;const r=getComputedStyle(p).getPropertyValue("visibility")==="visible",d=p.closest("details:not([open])");if(!d)return r;if(d!==p){const v=p.closest("summary");if(v&&v.parentNode!==d||v===null)return!1}return r},D=p=>!p||p.nodeType!==Node.ELEMENT_NODE||!!p.classList.contains("disabled")||(p.disabled!==void 0?p.disabled:p.hasAttribute("disabled")&&p.getAttribute("disabled")!=="false"),j=p=>{if(!document.documentElement.attachShadow)return null;if(typeof p.getRootNode=="function"){const r=p.getRootNode();return r instanceof ShadowRoot?r:null}return p instanceof ShadowRoot?p:p.parentNode?j(p.parentNode):null},z=()=>{},q=p=>{p.offsetHeight},L=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,I=[],Q=()=>document.documentElement.dir==="rtl",H=p=>{var r;r=()=>{const d=L();if(d){const v=p.NAME,A=d.fn[v];d.fn[v]=p.jQueryInterface,d.fn[v].Constructor=p,d.fn[v].noConflict=()=>(d.fn[v]=A,p.jQueryInterface)}},document.readyState==="loading"?(I.length||document.addEventListener("DOMContentLoaded",()=>{for(const d of I)d()}),I.push(r)):r()},W=(p,r=[],d=p)=>typeof p=="function"?p(...r):d,P=(p,r,d=!0)=>{if(!d)return void W(p);const v=(R=>{if(!R)return 0;let{transitionDuration:X,transitionDelay:J}=window.getComputedStyle(R);const V=Number.parseFloat(X),K=Number.parseFloat(J);return V||K?(X=X.split(",")[0],J=J.split(",")[0],1e3*(Number.parseFloat(X)+Number.parseFloat(J))):0})(r)+5;let A=!1;const O=({target:R})=>{R===r&&(A=!0,r.removeEventListener(f,O),W(p))};r.addEventListener(f,O),setTimeout(()=>{A||y(r)},v)},bt=(p,r,d,v)=>{const A=p.length;let O=p.indexOf(r);return O===-1?!d&&v?p[A-1]:p[0]:(O+=d?1:-1,v&&(O=(O+A)%A),p[Math.max(0,Math.min(O,A-1))])},Ot=/[^.]*(?=\..*)\.|.*/,It=/\..*/,de=/::\d+$/,ue={};let lt=1;const St={mouseenter:"mouseover",mouseleave:"mouseout"},$e=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function il(p,r){return r&&`${r}::${lt++}`||p.uidEvent||lt++}function Fn(p){const r=il(p);return p.uidEvent=r,ue[r]=ue[r]||{},ue[r]}function Jn(p,r,d=null){return Object.values(p).find(v=>v.callable===r&&v.delegationSelector===d)}function Wn(p,r,d){const v=typeof r=="string",A=v?d:r||d;let O=Bt(p);return $e.has(O)||(O=p),[v,A,O]}function tt(p,r,d,v,A){if(typeof r!="string"||!p)return;let[O,R,X]=Wn(r,d,v);r in St&&(R=(ct=>function(ft){if(!ft.relatedTarget||ft.relatedTarget!==ft.delegateTarget&&!ft.delegateTarget.contains(ft.relatedTarget))return ct.call(this,ft)})(R));const J=Fn(p),V=J[X]||(J[X]={}),K=Jn(V,R,O?d:null);if(K)return void(K.oneOff=K.oneOff&&A);const $=il(R,r.replace(Ot,"")),pt=O?function(ut,ct,ft){return function dt(wt){const Ht=ut.querySelectorAll(ct);for(let{target:it}=wt;it&&it!==this;it=it.parentNode)for(const Dt of Ht)if(Dt===it)return Pn(wt,{delegateTarget:it}),dt.oneOff&&k.off(ut,wt.type,ct,ft),ft.apply(it,[wt])}}(p,d,R):function(ut,ct){return function ft(dt){return Pn(dt,{delegateTarget:ut}),ft.oneOff&&k.off(ut,dt.type,ct),ct.apply(ut,[dt])}}(p,R);pt.delegationSelector=O?d:null,pt.callable=R,pt.oneOff=A,pt.uidEvent=$,V[$]=pt,p.addEventListener(X,pt,O)}function gt(p,r,d,v,A){const O=Jn(r[d],v,A);O&&(p.removeEventListener(d,O,!!A),delete r[d][O.uidEvent])}function mt(p,r,d,v){const A=r[d]||{};for(const[O,R]of Object.entries(A))O.includes(v)&>(p,r,d,R.callable,R.delegationSelector)}function Bt(p){return p=p.replace(It,""),St[p]||p}const k={on(p,r,d,v){tt(p,r,d,v,!1)},one(p,r,d,v){tt(p,r,d,v,!0)},off(p,r,d,v){if(typeof r!="string"||!p)return;const[A,O,R]=Wn(r,d,v),X=R!==r,J=Fn(p),V=J[R]||{},K=r.startsWith(".");if(O===void 0){if(K)for(const $ of Object.keys(J))mt(p,J,$,r.slice(1));for(const[$,pt]of Object.entries(V)){const ut=$.replace(de,"");X&&!r.includes(ut)||gt(p,J,R,pt.callable,pt.delegationSelector)}}else{if(!Object.keys(V).length)return;gt(p,J,R,O,A?d:null)}},trigger(p,r,d){if(typeof r!="string"||!p)return null;const v=L();let A=null,O=!0,R=!0,X=!1;r!==Bt(r)&&v&&(A=v.Event(r,d),v(p).trigger(A),O=!A.isPropagationStopped(),R=!A.isImmediatePropagationStopped(),X=A.isDefaultPrevented());const J=Pn(new Event(r,{bubbles:O,cancelable:!0}),d);return X&&J.preventDefault(),R&&p.dispatchEvent(J),J.defaultPrevented&&A&&A.preventDefault(),J}};function Pn(p,r={}){for(const[d,v]of Object.entries(r))try{p[d]=v}catch{Object.defineProperty(p,d,{configurable:!0,get:()=>v})}return p}function In(p){if(p==="true")return!0;if(p==="false")return!1;if(p===Number(p).toString())return Number(p);if(p===""||p==="null")return null;if(typeof p!="string")return p;try{return JSON.parse(decodeURIComponent(p))}catch{return p}}function an(p){return p.replace(/[A-Z]/g,r=>`-${r.toLowerCase()}`)}const _t={setDataAttribute(p,r,d){p.setAttribute(`data-bs-${an(r)}`,d)},removeDataAttribute(p,r){p.removeAttribute(`data-bs-${an(r)}`)},getDataAttributes(p){if(!p)return{};const r={},d=Object.keys(p.dataset).filter(v=>v.startsWith("bs")&&!v.startsWith("bsConfig"));for(const v of d){let A=v.replace(/^bs/,"");A=A.charAt(0).toLowerCase()+A.slice(1,A.length),r[A]=In(p.dataset[v])}return r},getDataAttribute:(p,r)=>In(p.getAttribute(`data-bs-${an(r)}`))};class me{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(r){return r=this._mergeConfigObj(r),r=this._configAfterMerge(r),this._typeCheckConfig(r),r}_configAfterMerge(r){return r}_mergeConfigObj(r,d){const v=b(d)?_t.getDataAttribute(d,"config"):{};return{...this.constructor.Default,...typeof v=="object"?v:{},...b(d)?_t.getDataAttributes(d):{},...typeof r=="object"?r:{}}}_typeCheckConfig(r,d=this.constructor.DefaultType){for(const[A,O]of Object.entries(d)){const R=r[A],X=b(R)?"element":(v=R)==null?`${v}`:Object.prototype.toString.call(v).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(O).test(X))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${A}" provided type "${X}" but expected type "${O}".`)}var v}}class He extends me{constructor(r,d){super(),(r=S(r))&&(this._element=r,this._config=this._getConfig(d),c.set(this._element,this.constructor.DATA_KEY,this))}dispose(){c.remove(this._element,this.constructor.DATA_KEY),k.off(this._element,this.constructor.EVENT_KEY);for(const r of Object.getOwnPropertyNames(this))this[r]=null}_queueCallback(r,d,v=!0){P(r,d,v)}_getConfig(r){return r=this._mergeConfigObj(r,this._element),r=this._configAfterMerge(r),this._typeCheckConfig(r),r}static getInstance(r){return c.get(S(r),this.DATA_KEY)}static getOrCreateInstance(r,d={}){return this.getInstance(r)||new this(r,typeof d=="object"?d:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(r){return`${r}${this.EVENT_KEY}`}}const ta=p=>{let r=p.getAttribute("data-bs-target");if(!r||r==="#"){let d=p.getAttribute("href");if(!d||!d.includes("#")&&!d.startsWith("."))return null;d.includes("#")&&!d.startsWith("#")&&(d=`#${d.split("#")[1]}`),r=d&&d!=="#"?d.trim():null}return r?r.split(",").map(d=>m(d)).join(","):null},nt={find:(p,r=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(r,p)),findOne:(p,r=document.documentElement)=>Element.prototype.querySelector.call(r,p),children:(p,r)=>[].concat(...p.children).filter(d=>d.matches(r)),parents(p,r){const d=[];let v=p.parentNode.closest(r);for(;v;)d.push(v),v=v.parentNode.closest(r);return d},prev(p,r){let d=p.previousElementSibling;for(;d;){if(d.matches(r))return[d];d=d.previousElementSibling}return[]},next(p,r){let d=p.nextElementSibling;for(;d;){if(d.matches(r))return[d];d=d.nextElementSibling}return[]},focusableChildren(p){const r=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(d=>`${d}:not([tabindex^="-"])`).join(",");return this.find(r,p).filter(d=>!D(d)&&E(d))},getSelectorFromElement(p){const r=ta(p);return r&&nt.findOne(r)?r:null},getElementFromSelector(p){const r=ta(p);return r?nt.findOne(r):null},getMultipleElementsFromSelector(p){const r=ta(p);return r?nt.find(r):[]}},Ft=(p,r="hide")=>{const d=`click.dismiss${p.EVENT_KEY}`,v=p.NAME;k.on(document,d,`[data-bs-dismiss="${v}"]`,function(A){if(["A","AREA"].includes(this.tagName)&&A.preventDefault(),D(this))return;const O=nt.getElementFromSelector(this)||this.closest(`.${v}`);p.getOrCreateInstance(O)[r]()})},qt=".bs.alert",vn=`close${qt}`,Wl=`closed${qt}`;class Fe extends He{static get NAME(){return"alert"}close(){if(k.trigger(this._element,vn).defaultPrevented)return;this._element.classList.remove("show");const r=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,r)}_destroyElement(){this._element.remove(),k.trigger(this._element,Wl),this.dispose()}static jQueryInterface(r){return this.each(function(){const d=Fe.getOrCreateInstance(this);if(typeof r=="string"){if(d[r]===void 0||r.startsWith("_")||r==="constructor")throw new TypeError(`No method named "${r}"`);d[r](this)}})}}Ft(Fe,"close"),H(Fe);const Pl='[data-bs-toggle="button"]';class ea extends He{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(r){return this.each(function(){const d=ea.getOrCreateInstance(this);r==="toggle"&&d[r]()})}}k.on(document,"click.bs.button.data-api",Pl,p=>{p.preventDefault();const r=p.target.closest(Pl);ea.getOrCreateInstance(r).toggle()}),H(ea);const ln=".bs.swipe",Wr=`touchstart${ln}`,Gi=`touchmove${ln}`,Pr=`touchend${ln}`,Ir=`pointerdown${ln}`,ts=`pointerup${ln}`,Cc={endCallback:null,leftCallback:null,rightCallback:null},wc={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class ke extends me{constructor(r,d){super(),this._element=r,r&&ke.isSupported()&&(this._config=this._getConfig(d),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return Cc}static get DefaultType(){return wc}static get NAME(){return"swipe"}dispose(){k.off(this._element,ln)}_start(r){this._supportPointerEvents?this._eventIsPointerPenTouch(r)&&(this._deltaX=r.clientX):this._deltaX=r.touches[0].clientX}_end(r){this._eventIsPointerPenTouch(r)&&(this._deltaX=r.clientX-this._deltaX),this._handleSwipe(),W(this._config.endCallback)}_move(r){this._deltaX=r.touches&&r.touches.length>1?0:r.touches[0].clientX-this._deltaX}_handleSwipe(){const r=Math.abs(this._deltaX);if(r<=40)return;const d=r/this._deltaX;this._deltaX=0,d&&W(d>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(k.on(this._element,Ir,r=>this._start(r)),k.on(this._element,ts,r=>this._end(r)),this._element.classList.add("pointer-event")):(k.on(this._element,Wr,r=>this._start(r)),k.on(this._element,Gi,r=>this._move(r)),k.on(this._element,Pr,r=>this._end(r)))}_eventIsPointerPenTouch(r){return this._supportPointerEvents&&(r.pointerType==="pen"||r.pointerType==="touch")}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const na=".bs.carousel",es=".data-api",rl="next",Ln="prev",sl="left",Il="right",Dc=`slide${na}`,ns=`slid${na}`,ti=`keydown${na}`,Be=`mouseenter${na}`,Mc=`mouseleave${na}`,aa=`dragstart${na}`,qe=`load${na}${es}`,Nc=`click${na}${es}`,Lu="carousel",Vi="active",ei=".active",ni=".carousel-item",Ca=ei+ni,Qi={ArrowLeft:Il,ArrowRight:sl},ai={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},zc={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class wa extends He{constructor(r,d){super(r,d),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=nt.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===Lu&&this.cycle()}static get Default(){return ai}static get DefaultType(){return zc}static get NAME(){return"carousel"}next(){this._slide(rl)}nextWhenVisible(){!document.hidden&&E(this._element)&&this.next()}prev(){this._slide(Ln)}pause(){this._isSliding&&y(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?k.one(this._element,ns,()=>this.cycle()):this.cycle())}to(r){const d=this._getItems();if(r>d.length-1||r<0)return;if(this._isSliding)return void k.one(this._element,ns,()=>this.to(r));const v=this._getItemIndex(this._getActive());if(v===r)return;const A=r>v?rl:Ln;this._slide(A,d[r])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(r){return r.defaultInterval=r.interval,r}_addEventListeners(){this._config.keyboard&&k.on(this._element,ti,r=>this._keydown(r)),this._config.pause==="hover"&&(k.on(this._element,Be,()=>this.pause()),k.on(this._element,Mc,()=>this._maybeEnableCycle())),this._config.touch&&ke.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const d of nt.find(".carousel-item img",this._element))k.on(d,aa,v=>v.preventDefault());const r={leftCallback:()=>this._slide(this._directionToOrder(sl)),rightCallback:()=>this._slide(this._directionToOrder(Il)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),500+this._config.interval))}};this._swipeHelper=new ke(this._element,r)}_keydown(r){if(/input|textarea/i.test(r.target.tagName))return;const d=Qi[r.key];d&&(r.preventDefault(),this._slide(this._directionToOrder(d)))}_getItemIndex(r){return this._getItems().indexOf(r)}_setActiveIndicatorElement(r){if(!this._indicatorsElement)return;const d=nt.findOne(ei,this._indicatorsElement);d.classList.remove(Vi),d.removeAttribute("aria-current");const v=nt.findOne(`[data-bs-slide-to="${r}"]`,this._indicatorsElement);v&&(v.classList.add(Vi),v.setAttribute("aria-current","true"))}_updateInterval(){const r=this._activeElement||this._getActive();if(!r)return;const d=Number.parseInt(r.getAttribute("data-bs-interval"),10);this._config.interval=d||this._config.defaultInterval}_slide(r,d=null){if(this._isSliding)return;const v=this._getActive(),A=r===rl,O=d||bt(this._getItems(),v,A,this._config.wrap);if(O===v)return;const R=this._getItemIndex(O),X=$=>k.trigger(this._element,$,{relatedTarget:O,direction:this._orderToDirection(r),from:this._getItemIndex(v),to:R});if(X(Dc).defaultPrevented||!v||!O)return;const J=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(R),this._activeElement=O;const V=A?"carousel-item-start":"carousel-item-end",K=A?"carousel-item-next":"carousel-item-prev";O.classList.add(K),q(O),v.classList.add(V),O.classList.add(V),this._queueCallback(()=>{O.classList.remove(V,K),O.classList.add(Vi),v.classList.remove(Vi,K,V),this._isSliding=!1,X(ns)},v,this._isAnimated()),J&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return nt.findOne(Ca,this._element)}_getItems(){return nt.find(ni,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(r){return Q()?r===sl?Ln:rl:r===sl?rl:Ln}_orderToDirection(r){return Q()?r===Ln?sl:Il:r===Ln?Il:sl}static jQueryInterface(r){return this.each(function(){const d=wa.getOrCreateInstance(this,r);if(typeof r!="number"){if(typeof r=="string"){if(d[r]===void 0||r.startsWith("_")||r==="constructor")throw new TypeError(`No method named "${r}"`);d[r]()}}else d.to(r)})}}k.on(document,Nc,"[data-bs-slide], [data-bs-slide-to]",function(p){const r=nt.getElementFromSelector(this);if(!r||!r.classList.contains(Lu))return;p.preventDefault();const d=wa.getOrCreateInstance(r),v=this.getAttribute("data-bs-slide-to");return v?(d.to(v),void d._maybeEnableCycle()):_t.getDataAttribute(this,"slide")==="next"?(d.next(),void d._maybeEnableCycle()):(d.prev(),void d._maybeEnableCycle())}),k.on(window,qe,()=>{const p=nt.find('[data-bs-ride="carousel"]');for(const r of p)wa.getOrCreateInstance(r)}),H(wa);const ul=".bs.collapse",as=`show${ul}`,li=`shown${ul}`,Rc=`hide${ul}`,ju=`hidden${ul}`,Uu=`click${ul}.data-api`,Zi="show",Da="collapse",Ki="collapsing",la=`:scope .${Da} .${Da}`,oe='[data-bs-toggle="collapse"]',Me={parent:null,toggle:!0},ol={parent:"(null|element)",toggle:"boolean"};class ia extends He{constructor(r,d){super(r,d),this._isTransitioning=!1,this._triggerArray=[];const v=nt.find(oe);for(const A of v){const O=nt.getSelectorFromElement(A),R=nt.find(O).filter(X=>X===this._element);O!==null&&R.length&&this._triggerArray.push(A)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Me}static get DefaultType(){return ol}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let r=[];if(this._config.parent&&(r=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter(A=>A!==this._element).map(A=>ia.getOrCreateInstance(A,{toggle:!1}))),r.length&&r[0]._isTransitioning||k.trigger(this._element,as).defaultPrevented)return;for(const A of r)A.hide();const d=this._getDimension();this._element.classList.remove(Da),this._element.classList.add(Ki),this._element.style[d]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const v=`scroll${d[0].toUpperCase()+d.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(Ki),this._element.classList.add(Da,Zi),this._element.style[d]="",k.trigger(this._element,li)},this._element,!0),this._element.style[d]=`${this._element[v]}px`}hide(){if(this._isTransitioning||!this._isShown()||k.trigger(this._element,Rc).defaultPrevented)return;const r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,q(this._element),this._element.classList.add(Ki),this._element.classList.remove(Da,Zi);for(const d of this._triggerArray){const v=nt.getElementFromSelector(d);v&&!this._isShown(v)&&this._addAriaAndCollapsedClass([d],!1)}this._isTransitioning=!0,this._element.style[r]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(Ki),this._element.classList.add(Da),k.trigger(this._element,ju)},this._element,!0)}_isShown(r=this._element){return r.classList.contains(Zi)}_configAfterMerge(r){return r.toggle=!!r.toggle,r.parent=S(r.parent),r}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const r=this._getFirstLevelChildren(oe);for(const d of r){const v=nt.getElementFromSelector(d);v&&this._addAriaAndCollapsedClass([d],this._isShown(v))}}_getFirstLevelChildren(r){const d=nt.find(la,this._config.parent);return nt.find(r,this._config.parent).filter(v=>!d.includes(v))}_addAriaAndCollapsedClass(r,d){if(r.length)for(const v of r)v.classList.toggle("collapsed",!d),v.setAttribute("aria-expanded",d)}static jQueryInterface(r){const d={};return typeof r=="string"&&/show|hide/.test(r)&&(d.toggle=!1),this.each(function(){const v=ia.getOrCreateInstance(this,d);if(typeof r=="string"){if(v[r]===void 0)throw new TypeError(`No method named "${r}"`);v[r]()}})}}k.on(document,Uu,oe,function(p){(p.target.tagName==="A"||p.delegateTarget&&p.delegateTarget.tagName==="A")&&p.preventDefault();for(const r of nt.getMultipleElementsFromSelector(this))ia.getOrCreateInstance(r,{toggle:!1}).toggle()}),H(ia);var Ee="top",Ye="bottom",Ne="right",ie="left",cl="auto",Je=[Ee,Ye,Ne,ie],We="start",yn="end",Ma="clippingParents",te="viewport",Na="popper",ls="reference",jn=Je.reduce(function(p,r){return p.concat([r+"-"+We,r+"-"+yn])},[]),ra=[].concat(Je,[cl]).reduce(function(p,r){return p.concat([r,r+"-"+We,r+"-"+yn])},[]),bn="beforeRead",Hu="read",is="afterRead",rs="beforeMain",ku="main",ii="afterMain",ri="beforeWrite",_n="write",Xe="afterWrite",ss=[bn,Hu,is,rs,ku,ii,ri,_n,Xe];function Sn(p){return p?(p.nodeName||"").toLowerCase():null}function pe(p){if(p==null)return window;if(p.toString()!=="[object Window]"){var r=p.ownerDocument;return r&&r.defaultView||window}return p}function sa(p){return p instanceof pe(p).Element||p instanceof Element}function Ae(p){return p instanceof pe(p).HTMLElement||p instanceof HTMLElement}function us(p){return typeof ShadowRoot<"u"&&(p instanceof pe(p).ShadowRoot||p instanceof ShadowRoot)}const ze={name:"applyStyles",enabled:!0,phase:"write",fn:function(p){var r=p.state;Object.keys(r.elements).forEach(function(d){var v=r.styles[d]||{},A=r.attributes[d]||{},O=r.elements[d];Ae(O)&&Sn(O)&&(Object.assign(O.style,v),Object.keys(A).forEach(function(R){var X=A[R];X===!1?O.removeAttribute(R):O.setAttribute(R,X===!0?"":X)}))})},effect:function(p){var r=p.state,d={popper:{position:r.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(r.elements.popper.style,d.popper),r.styles=d,r.elements.arrow&&Object.assign(r.elements.arrow.style,d.arrow),function(){Object.keys(r.elements).forEach(function(v){var A=r.elements[v],O=r.attributes[v]||{},R=Object.keys(r.styles.hasOwnProperty(v)?r.styles[v]:d[v]).reduce(function(X,J){return X[J]="",X},{});Ae(A)&&Sn(A)&&(Object.assign(A.style,R),Object.keys(O).forEach(function(X){A.removeAttribute(X)}))})}},requires:["computeStyles"]};function Pe(p){return p.split("-")[0]}var ua=Math.max,fl=Math.min,rn=Math.round;function $i(){var p=navigator.userAgentData;return p!=null&&p.brands&&Array.isArray(p.brands)?p.brands.map(function(r){return r.brand+"/"+r.version}).join(" "):navigator.userAgent}function os(){return!/^((?!chrome|android).)*safari/i.test($i())}function sn(p,r,d){r===void 0&&(r=!1),d===void 0&&(d=!1);var v=p.getBoundingClientRect(),A=1,O=1;r&&Ae(p)&&(A=p.offsetWidth>0&&rn(v.width)/p.offsetWidth||1,O=p.offsetHeight>0&&rn(v.height)/p.offsetHeight||1);var R=(sa(p)?pe(p):window).visualViewport,X=!os()&&d,J=(v.left+(X&&R?R.offsetLeft:0))/A,V=(v.top+(X&&R?R.offsetTop:0))/O,K=v.width/A,$=v.height/O;return{width:K,height:$,top:V,right:J+K,bottom:V+$,left:J,x:J,y:V}}function cs(p){var r=sn(p),d=p.offsetWidth,v=p.offsetHeight;return Math.abs(r.width-d)<=1&&(d=r.width),Math.abs(r.height-v)<=1&&(v=r.height),{x:p.offsetLeft,y:p.offsetTop,width:d,height:v}}function fs(p,r){var d=r.getRootNode&&r.getRootNode();if(p.contains(r))return!0;if(d&&us(d)){var v=r;do{if(v&&p.isSameNode(v))return!0;v=v.parentNode||v.host}while(v)}return!1}function En(p){return pe(p).getComputedStyle(p)}function ds(p){return["table","td","th"].indexOf(Sn(p))>=0}function oa(p){return((sa(p)?p.ownerDocument:p.document)||window.document).documentElement}function Fi(p){return Sn(p)==="html"?p:p.assignedSlot||p.parentNode||(us(p)?p.host:null)||oa(p)}function si(p){return Ae(p)&&En(p).position!=="fixed"?p.offsetParent:null}function za(p){for(var r=pe(p),d=si(p);d&&ds(d)&&En(d).position==="static";)d=si(d);return d&&(Sn(d)==="html"||Sn(d)==="body"&&En(d).position==="static")?r:d||function(v){var A=/firefox/i.test($i());if(/Trident/i.test($i())&&Ae(v)&&En(v).position==="fixed")return null;var O=Fi(v);for(us(O)&&(O=O.host);Ae(O)&&["html","body"].indexOf(Sn(O))<0;){var R=En(O);if(R.transform!=="none"||R.perspective!=="none"||R.contain==="paint"||["transform","perspective"].indexOf(R.willChange)!==-1||A&&R.willChange==="filter"||A&&R.filter&&R.filter!=="none")return O;O=O.parentNode}return null}(p)||r}function ui(p){return["top","bottom"].indexOf(p)>=0?"x":"y"}function An(p,r,d){return ua(p,fl(r,d))}function Ra(p){return Object.assign({},{top:0,right:0,bottom:0,left:0},p)}function hs(p,r){return r.reduce(function(d,v){return d[v]=p,d},{})}const Ji={name:"arrow",enabled:!0,phase:"main",fn:function(p){var r,d=p.state,v=p.name,A=p.options,O=d.elements.arrow,R=d.modifiersData.popperOffsets,X=Pe(d.placement),J=ui(X),V=[ie,Ne].indexOf(X)>=0?"height":"width";if(O&&R){var K=function(Ut,zt){return Ra(typeof(Ut=typeof Ut=="function"?Ut(Object.assign({},zt.rects,{placement:zt.placement})):Ut)!="number"?Ut:hs(Ut,Je))}(A.padding,d),$=cs(O),pt=J==="y"?Ee:ie,ut=J==="y"?Ye:Ne,ct=d.rects.reference[V]+d.rects.reference[J]-R[J]-d.rects.popper[V],ft=R[J]-d.rects.reference[J],dt=za(O),wt=dt?J==="y"?dt.clientHeight||0:dt.clientWidth||0:0,Ht=ct/2-ft/2,it=K[pt],Dt=wt-$[V]-K[ut],vt=wt/2-$[V]/2+Ht,Et=An(it,vt,Dt),Rt=J;d.modifiersData[v]=((r={})[Rt]=Et,r.centerOffset=Et-vt,r)}},effect:function(p){var r=p.state,d=p.options.element,v=d===void 0?"[data-popper-arrow]":d;v!=null&&(typeof v!="string"||(v=r.elements.popper.querySelector(v)))&&fs(r.elements.popper,v)&&(r.elements.arrow=v)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function La(p){return p.split("-")[1]}var oi={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Wi(p){var r,d=p.popper,v=p.popperRect,A=p.placement,O=p.variation,R=p.offsets,X=p.position,J=p.gpuAcceleration,V=p.adaptive,K=p.roundOffsets,$=p.isFixed,pt=R.x,ut=pt===void 0?0:pt,ct=R.y,ft=ct===void 0?0:ct,dt=typeof K=="function"?K({x:ut,y:ft}):{x:ut,y:ft};ut=dt.x,ft=dt.y;var wt=R.hasOwnProperty("x"),Ht=R.hasOwnProperty("y"),it=ie,Dt=Ee,vt=window;if(V){var Et=za(d),Rt="clientHeight",Ut="clientWidth";Et===pe(d)&&En(Et=oa(d)).position!=="static"&&X==="absolute"&&(Rt="scrollHeight",Ut="scrollWidth"),(A===Ee||(A===ie||A===Ne)&&O===yn)&&(Dt=Ye,ft-=($&&Et===vt&&vt.visualViewport?vt.visualViewport.height:Et[Rt])-v.height,ft*=J?1:-1),A!==ie&&(A!==Ee&&A!==Ye||O!==yn)||(it=Ne,ut-=($&&Et===vt&&vt.visualViewport?vt.visualViewport.width:Et[Ut])-v.width,ut*=J?1:-1)}var zt,Kt=Object.assign({position:X},V&&oi),Oe=K===!0?function(Vt,Ct){var Ce=Vt.x,ve=Vt.y,Yt=Ct.devicePixelRatio||1;return{x:rn(Ce*Yt)/Yt||0,y:rn(ve*Yt)/Yt||0}}({x:ut,y:ft},pe(d)):{x:ut,y:ft};return ut=Oe.x,ft=Oe.y,J?Object.assign({},Kt,((zt={})[Dt]=Ht?"0":"",zt[it]=wt?"0":"",zt.transform=(vt.devicePixelRatio||1)<=1?"translate("+ut+"px, "+ft+"px)":"translate3d("+ut+"px, "+ft+"px, 0)",zt)):Object.assign({},Kt,((r={})[Dt]=Ht?ft+"px":"",r[it]=wt?ut+"px":"",r.transform="",r))}const ja={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(p){var r=p.state,d=p.options,v=d.gpuAcceleration,A=v===void 0||v,O=d.adaptive,R=O===void 0||O,X=d.roundOffsets,J=X===void 0||X,V={placement:Pe(r.placement),variation:La(r.placement),popper:r.elements.popper,popperRect:r.rects.popper,gpuAcceleration:A,isFixed:r.options.strategy==="fixed"};r.modifiersData.popperOffsets!=null&&(r.styles.popper=Object.assign({},r.styles.popper,Wi(Object.assign({},V,{offsets:r.modifiersData.popperOffsets,position:r.options.strategy,adaptive:R,roundOffsets:J})))),r.modifiersData.arrow!=null&&(r.styles.arrow=Object.assign({},r.styles.arrow,Wi(Object.assign({},V,{offsets:r.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:J})))),r.attributes.popper=Object.assign({},r.attributes.popper,{"data-popper-placement":r.placement})},data:{}};var un={passive:!0};const ci={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(p){var r=p.state,d=p.instance,v=p.options,A=v.scroll,O=A===void 0||A,R=v.resize,X=R===void 0||R,J=pe(r.elements.popper),V=[].concat(r.scrollParents.reference,r.scrollParents.popper);return O&&V.forEach(function(K){K.addEventListener("scroll",d.update,un)}),X&&J.addEventListener("resize",d.update,un),function(){O&&V.forEach(function(K){K.removeEventListener("scroll",d.update,un)}),X&&J.removeEventListener("resize",d.update,un)}},data:{}};var Pi={left:"right",right:"left",bottom:"top",top:"bottom"};function fi(p){return p.replace(/left|right|bottom|top/g,function(r){return Pi[r]})}var Ii={start:"end",end:"start"};function di(p){return p.replace(/start|end/g,function(r){return Ii[r]})}function tr(p){var r=pe(p);return{scrollLeft:r.pageXOffset,scrollTop:r.pageYOffset}}function ge(p){return sn(oa(p)).left+tr(p).scrollLeft}function Un(p){var r=En(p),d=r.overflow,v=r.overflowX,A=r.overflowY;return/auto|scroll|overlay|hidden/.test(d+A+v)}function hi(p){return["html","body","#document"].indexOf(Sn(p))>=0?p.ownerDocument.body:Ae(p)&&Un(p)?p:hi(Fi(p))}function Hn(p,r){var d;r===void 0&&(r=[]);var v=hi(p),A=v===((d=p.ownerDocument)==null?void 0:d.body),O=pe(v),R=A?[O].concat(O.visualViewport||[],Un(v)?v:[]):v,X=r.concat(R);return A?X:X.concat(Hn(Fi(R)))}function ms(p){return Object.assign({},p,{left:p.x,top:p.y,right:p.x+p.width,bottom:p.y+p.height})}function er(p,r,d){return r===te?ms(function(v,A){var O=pe(v),R=oa(v),X=O.visualViewport,J=R.clientWidth,V=R.clientHeight,K=0,$=0;if(X){J=X.width,V=X.height;var pt=os();(pt||!pt&&A==="fixed")&&(K=X.offsetLeft,$=X.offsetTop)}return{width:J,height:V,x:K+ge(v),y:$}}(p,d)):sa(r)?function(v,A){var O=sn(v,!1,A==="fixed");return O.top=O.top+v.clientTop,O.left=O.left+v.clientLeft,O.bottom=O.top+v.clientHeight,O.right=O.left+v.clientWidth,O.width=v.clientWidth,O.height=v.clientHeight,O.x=O.left,O.y=O.top,O}(r,d):ms(function(v){var A,O=oa(v),R=tr(v),X=(A=v.ownerDocument)==null?void 0:A.body,J=ua(O.scrollWidth,O.clientWidth,X?X.scrollWidth:0,X?X.clientWidth:0),V=ua(O.scrollHeight,O.clientHeight,X?X.scrollHeight:0,X?X.clientHeight:0),K=-R.scrollLeft+ge(v),$=-R.scrollTop;return En(X||O).direction==="rtl"&&(K+=ua(O.clientWidth,X?X.clientWidth:0)-J),{width:J,height:V,x:K,y:$}}(oa(p)))}function nr(p){var r,d=p.reference,v=p.element,A=p.placement,O=A?Pe(A):null,R=A?La(A):null,X=d.x+d.width/2-v.width/2,J=d.y+d.height/2-v.height/2;switch(O){case Ee:r={x:X,y:d.y-v.height};break;case Ye:r={x:X,y:d.y+d.height};break;case Ne:r={x:d.x+d.width,y:J};break;case ie:r={x:d.x-v.width,y:J};break;default:r={x:d.x,y:d.y}}var V=O?ui(O):null;if(V!=null){var K=V==="y"?"height":"width";switch(R){case We:r[V]=r[V]-(d[K]/2-v[K]/2);break;case yn:r[V]=r[V]+(d[K]/2-v[K]/2)}}return r}function xn(p,r){r===void 0&&(r={});var d=r,v=d.placement,A=v===void 0?p.placement:v,O=d.strategy,R=O===void 0?p.strategy:O,X=d.boundary,J=X===void 0?Ma:X,V=d.rootBoundary,K=V===void 0?te:V,$=d.elementContext,pt=$===void 0?Na:$,ut=d.altBoundary,ct=ut!==void 0&&ut,ft=d.padding,dt=ft===void 0?0:ft,wt=Ra(typeof dt!="number"?dt:hs(dt,Je)),Ht=pt===Na?ls:Na,it=p.rects.popper,Dt=p.elements[ct?Ht:pt],vt=function(Ct,Ce,ve,Yt){var nn=Ce==="clippingParents"?function(jt){var ye=Hn(Fi(jt)),Ze=["absolute","fixed"].indexOf(En(jt).position)>=0&&Ae(jt)?za(jt):jt;return sa(Ze)?ye.filter(function(Zn){return sa(Zn)&&fs(Zn,Ze)&&Sn(Zn)!=="body"}):[]}(Ct):[].concat(Ce),ce=[].concat(nn,[ve]),Qn=ce[0],ee=ce.reduce(function(jt,ye){var Ze=er(Ct,ye,Yt);return jt.top=ua(Ze.top,jt.top),jt.right=fl(Ze.right,jt.right),jt.bottom=fl(Ze.bottom,jt.bottom),jt.left=ua(Ze.left,jt.left),jt},er(Ct,Qn,Yt));return ee.width=ee.right-ee.left,ee.height=ee.bottom-ee.top,ee.x=ee.left,ee.y=ee.top,ee}(sa(Dt)?Dt:Dt.contextElement||oa(p.elements.popper),J,K,R),Et=sn(p.elements.reference),Rt=nr({reference:Et,element:it,placement:A}),Ut=ms(Object.assign({},it,Rt)),zt=pt===Na?Ut:Et,Kt={top:vt.top-zt.top+wt.top,bottom:zt.bottom-vt.bottom+wt.bottom,left:vt.left-zt.left+wt.left,right:zt.right-vt.right+wt.right},Oe=p.modifiersData.offset;if(pt===Na&&Oe){var Vt=Oe[A];Object.keys(Kt).forEach(function(Ct){var Ce=[Ne,Ye].indexOf(Ct)>=0?1:-1,ve=[Ee,Ye].indexOf(Ct)>=0?"y":"x";Kt[Ct]+=Vt[ve]*Ce})}return Kt}function ar(p,r){r===void 0&&(r={});var d=r,v=d.placement,A=d.boundary,O=d.rootBoundary,R=d.padding,X=d.flipVariations,J=d.allowedAutoPlacements,V=J===void 0?ra:J,K=La(v),$=K?X?jn:jn.filter(function(ct){return La(ct)===K}):Je,pt=$.filter(function(ct){return V.indexOf(ct)>=0});pt.length===0&&(pt=$);var ut=pt.reduce(function(ct,ft){return ct[ft]=xn(p,{placement:ft,boundary:A,rootBoundary:O,padding:R})[Pe(ft)],ct},{});return Object.keys(ut).sort(function(ct,ft){return ut[ct]-ut[ft]})}const ps={name:"flip",enabled:!0,phase:"main",fn:function(p){var r=p.state,d=p.options,v=p.name;if(!r.modifiersData[v]._skip){for(var A=d.mainAxis,O=A===void 0||A,R=d.altAxis,X=R===void 0||R,J=d.fallbackPlacements,V=d.padding,K=d.boundary,$=d.rootBoundary,pt=d.altBoundary,ut=d.flipVariations,ct=ut===void 0||ut,ft=d.allowedAutoPlacements,dt=r.options.placement,wt=Pe(dt),Ht=J||(wt!==dt&&ct?function(jt){if(Pe(jt)===cl)return[];var ye=fi(jt);return[di(jt),ye,di(ye)]}(dt):[fi(dt)]),it=[dt].concat(Ht).reduce(function(jt,ye){return jt.concat(Pe(ye)===cl?ar(r,{placement:ye,boundary:K,rootBoundary:$,padding:V,flipVariations:ct,allowedAutoPlacements:ft}):ye)},[]),Dt=r.rects.reference,vt=r.rects.popper,Et=new Map,Rt=!0,Ut=it[0],zt=0;zt=0,Ce=Ct?"width":"height",ve=xn(r,{placement:Kt,boundary:K,rootBoundary:$,altBoundary:pt,padding:V}),Yt=Ct?Vt?Ne:ie:Vt?Ye:Ee;Dt[Ce]>vt[Ce]&&(Yt=fi(Yt));var nn=fi(Yt),ce=[];if(O&&ce.push(ve[Oe]<=0),X&&ce.push(ve[Yt]<=0,ve[nn]<=0),ce.every(function(jt){return jt})){Ut=Kt,Rt=!1;break}Et.set(Kt,ce)}if(Rt)for(var Qn=function(jt){var ye=it.find(function(Ze){var Zn=Et.get(Ze);if(Zn)return Zn.slice(0,jt).every(function(Ti){return Ti})});if(ye)return Ut=ye,"break"},ee=ct?3:1;ee>0&&Qn(ee)!=="break";ee--);r.placement!==Ut&&(r.modifiersData[v]._skip=!0,r.placement=Ut,r.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Bu(p,r,d){return d===void 0&&(d={x:0,y:0}),{top:p.top-r.height-d.y,right:p.right-r.width+d.x,bottom:p.bottom-r.height+d.y,left:p.left-r.width-d.x}}function qu(p){return[Ee,Ne,Ye,ie].some(function(r){return p[r]>=0})}const Yu={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(p){var r=p.state,d=p.name,v=r.rects.reference,A=r.rects.popper,O=r.modifiersData.preventOverflow,R=xn(r,{elementContext:"reference"}),X=xn(r,{altBoundary:!0}),J=Bu(R,v),V=Bu(X,A,O),K=qu(J),$=qu(V);r.modifiersData[d]={referenceClippingOffsets:J,popperEscapeOffsets:V,isReferenceHidden:K,hasPopperEscaped:$},r.attributes.popper=Object.assign({},r.attributes.popper,{"data-popper-reference-hidden":K,"data-popper-escaped":$})}},lr={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(p){var r=p.state,d=p.options,v=p.name,A=d.offset,O=A===void 0?[0,0]:A,R=ra.reduce(function(K,$){return K[$]=function(pt,ut,ct){var ft=Pe(pt),dt=[ie,Ee].indexOf(ft)>=0?-1:1,wt=typeof ct=="function"?ct(Object.assign({},ut,{placement:pt})):ct,Ht=wt[0],it=wt[1];return Ht=Ht||0,it=(it||0)*dt,[ie,Ne].indexOf(ft)>=0?{x:it,y:Ht}:{x:Ht,y:it}}($,r.rects,O),K},{}),X=R[r.placement],J=X.x,V=X.y;r.modifiersData.popperOffsets!=null&&(r.modifiersData.popperOffsets.x+=J,r.modifiersData.popperOffsets.y+=V),r.modifiersData[v]=R}},gs={name:"popperOffsets",enabled:!0,phase:"read",fn:function(p){var r=p.state,d=p.name;r.modifiersData[d]=nr({reference:r.rects.reference,element:r.rects.popper,placement:r.placement})},data:{}},Xu={name:"preventOverflow",enabled:!0,phase:"main",fn:function(p){var r=p.state,d=p.options,v=p.name,A=d.mainAxis,O=A===void 0||A,R=d.altAxis,X=R!==void 0&&R,J=d.boundary,V=d.rootBoundary,K=d.altBoundary,$=d.padding,pt=d.tether,ut=pt===void 0||pt,ct=d.tetherOffset,ft=ct===void 0?0:ct,dt=xn(r,{boundary:J,rootBoundary:V,padding:$,altBoundary:K}),wt=Pe(r.placement),Ht=La(r.placement),it=!Ht,Dt=ui(wt),vt=Dt==="x"?"y":"x",Et=r.modifiersData.popperOffsets,Rt=r.rects.reference,Ut=r.rects.popper,zt=typeof ft=="function"?ft(Object.assign({},r.rects,{placement:r.placement})):ft,Kt=typeof zt=="number"?{mainAxis:zt,altAxis:zt}:Object.assign({mainAxis:0,altAxis:0},zt),Oe=r.modifiersData.offset?r.modifiersData.offset[r.placement]:null,Vt={x:0,y:0};if(Et){if(O){var Ct,Ce=Dt==="y"?Ee:ie,ve=Dt==="y"?Ye:Ne,Yt=Dt==="y"?"height":"width",nn=Et[Dt],ce=nn+dt[Ce],Qn=nn-dt[ve],ee=ut?-Ut[Yt]/2:0,jt=Ht===We?Rt[Yt]:Ut[Yt],ye=Ht===We?-Ut[Yt]:-Rt[Yt],Ze=r.elements.arrow,Zn=ut&&Ze?cs(Ze):{width:0,height:0},Ti=r.modifiersData["arrow#persistent"]?r.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},Hs=Ti[Ce],ks=Ti[ve],Dl=An(0,Rt[Yt],Zn[Yt]),_o=it?Rt[Yt]/2-ee-Dl-Hs-Kt.mainAxis:jt-Dl-Hs-Kt.mainAxis,Pc=it?-Rt[Yt]/2+ee+Dl+ks+Kt.mainAxis:ye+Dl+ks+Kt.mainAxis,Tr=r.elements.arrow&&za(r.elements.arrow),So=Tr?Dt==="y"?Tr.clientTop||0:Tr.clientLeft||0:0,Bs=(Ct=Oe==null?void 0:Oe[Dt])!=null?Ct:0,qs=nn+Pc-Bs,Ys=An(ut?fl(ce,nn+_o-Bs-So):ce,nn,ut?ua(Qn,qs):Qn);Et[Dt]=Ys,Vt[Dt]=Ys-nn}if(X){var Xs,Eo=Dt==="x"?Ee:ie,Ao=Dt==="x"?Ye:Ne,va=Et[vt],Or=vt==="y"?"height":"width",Gs=va+dt[Eo],Xa=va-dt[Ao],Cr=[Ee,ie].indexOf(wt)!==-1,Oi=(Xs=Oe==null?void 0:Oe[vt])!=null?Xs:0,Ci=Cr?Gs:va-Rt[Or]-Ut[Or]-Oi+Kt.altAxis,Vs=Cr?va+Rt[Or]+Ut[Or]-Oi-Kt.altAxis:Xa,wr=ut&&Cr?function(xo,To,Dr){var Qs=An(xo,To,Dr);return Qs>Dr?Dr:Qs}(Ci,va,Vs):An(ut?Ci:Gs,va,ut?Vs:Xa);Et[vt]=wr,Vt[vt]=wr-va}r.modifiersData[v]=Vt}},requiresIfExists:["offset"]};function Lc(p,r,d){d===void 0&&(d=!1);var v,A,O=Ae(r),R=Ae(r)&&function($){var pt=$.getBoundingClientRect(),ut=rn(pt.width)/$.offsetWidth||1,ct=rn(pt.height)/$.offsetHeight||1;return ut!==1||ct!==1}(r),X=oa(r),J=sn(p,R,d),V={scrollLeft:0,scrollTop:0},K={x:0,y:0};return(O||!O&&!d)&&((Sn(r)!=="body"||Un(X))&&(V=(v=r)!==pe(v)&&Ae(v)?{scrollLeft:(A=v).scrollLeft,scrollTop:A.scrollTop}:tr(v)),Ae(r)?((K=sn(r,!0)).x+=r.clientLeft,K.y+=r.clientTop):X&&(K.x=ge(X))),{x:J.left+V.scrollLeft-K.x,y:J.top+V.scrollTop-K.y,width:J.width,height:J.height}}function jc(p){var r=new Map,d=new Set,v=[];function A(O){d.add(O.name),[].concat(O.requires||[],O.requiresIfExists||[]).forEach(function(R){if(!d.has(R)){var X=r.get(R);X&&A(X)}}),v.push(O)}return p.forEach(function(O){r.set(O.name,O)}),p.forEach(function(O){d.has(O.name)||A(O)}),v}var Gu={placement:"bottom",modifiers:[],strategy:"absolute"};function vs(){for(var p=arguments.length,r=new Array(p),d=0;dNumber.parseInt(d,10)):typeof r=="function"?d=>r(d,this._element):r}_getPopperConfig(){const r={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(_t.setDataAttribute(this._menu,"popper","static"),r.modifiers=[{name:"applyStyles",enabled:!1}]),{...r,...W(this._config.popperConfig,[r])}}_selectMenuItem({key:r,target:d}){const v=nt.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(A=>E(A));v.length&&bt(v,d,r===Zu,!v.includes(d)).focus()}static jQueryInterface(r){return this.each(function(){const d=on.getOrCreateInstance(this,r);if(typeof r=="string"){if(d[r]===void 0)throw new TypeError(`No method named "${r}"`);d[r]()}})}static clearMenus(r){if(r.button===2||r.type==="keyup"&&r.key!=="Tab")return;const d=nt.find(mi);for(const v of d){const A=on.getInstance(v);if(!A||A._config.autoClose===!1)continue;const O=r.composedPath(),R=O.includes(A._menu);if(O.includes(A._element)||A._config.autoClose==="inside"&&!R||A._config.autoClose==="outside"&&R||A._menu.contains(r.target)&&(r.type==="keyup"&&r.key==="Tab"||/input|select|option|textarea|form/i.test(r.target.tagName)))continue;const X={relatedTarget:A._element};r.type==="click"&&(X.clickEvent=r),A._completeHide(X)}}static dataApiKeydownHandler(r){const d=/input|textarea/i.test(r.target.tagName),v=r.key==="Escape",A=[Qu,Zu].includes(r.key);if(!A&&!v||d&&!v)return;r.preventDefault();const O=this.matches(kn)?this:nt.prev(this,kn)[0]||nt.next(this,kn)[0]||nt.findOne(kn,r.delegateTarget.parentNode),R=on.getOrCreateInstance(O);if(A)return r.stopPropagation(),R.show(),void R._selectMenuItem(r);R._isShown()&&(r.stopPropagation(),R.hide(),O.focus())}}k.on(document,$u,kn,on.dataApiKeydownHandler),k.on(document,$u,sr,on.dataApiKeydownHandler),k.on(document,Ku,on.clearMenus),k.on(document,Xc,on.clearMenus),k.on(document,Ku,kn,function(p){p.preventDefault(),on.getOrCreateInstance(this).toggle()}),H(on);const _s="backdrop",Ss="show",ml=`mousedown.bs.${_s}`,pi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Qc={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class gi extends me{constructor(r){super(),this._config=this._getConfig(r),this._isAppended=!1,this._element=null}static get Default(){return pi}static get DefaultType(){return Qc}static get NAME(){return _s}show(r){if(!this._config.isVisible)return void W(r);this._append();const d=this._getElement();this._config.isAnimated&&q(d),d.classList.add(Ss),this._emulateAnimation(()=>{W(r)})}hide(r){this._config.isVisible?(this._getElement().classList.remove(Ss),this._emulateAnimation(()=>{this.dispose(),W(r)})):W(r)}dispose(){this._isAppended&&(k.off(this._element,ml),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const r=document.createElement("div");r.className=this._config.className,this._config.isAnimated&&r.classList.add("fade"),this._element=r}return this._element}_configAfterMerge(r){return r.rootElement=S(r.rootElement),r}_append(){if(this._isAppended)return;const r=this._getElement();this._config.rootElement.append(r),k.on(r,ml,()=>{W(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(r){P(r,this._getElement(),this._config.isAnimated)}}const vi=".bs.focustrap",to=`focusin${vi}`,Es=`keydown.tab${vi}`,ur="backward",eo={autofocus:!0,trapElement:null},no={autofocus:"boolean",trapElement:"element"};class As extends me{constructor(r){super(),this._config=this._getConfig(r),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return eo}static get DefaultType(){return no}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),k.off(document,vi),k.on(document,to,r=>this._handleFocusin(r)),k.on(document,Es,r=>this._handleKeydown(r)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,k.off(document,vi))}_handleFocusin(r){const{trapElement:d}=this._config;if(r.target===document||r.target===d||d.contains(r.target))return;const v=nt.focusableChildren(d);v.length===0?d.focus():this._lastTabNavDirection===ur?v[v.length-1].focus():v[0].focus()}_handleKeydown(r){r.key==="Tab"&&(this._lastTabNavDirection=r.shiftKey?ur:"forward")}}const ao=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",lo=".sticky-top",or="padding-right",io="margin-right";class xs{constructor(){this._element=document.body}getWidth(){const r=document.documentElement.clientWidth;return Math.abs(window.innerWidth-r)}hide(){const r=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,or,d=>d+r),this._setElementAttributes(ao,or,d=>d+r),this._setElementAttributes(lo,io,d=>d-r)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,or),this._resetElementAttributes(ao,or),this._resetElementAttributes(lo,io)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(r,d,v){const A=this.getWidth();this._applyManipulationCallback(r,O=>{if(O!==this._element&&window.innerWidth>O.clientWidth+A)return;this._saveInitialAttribute(O,d);const R=window.getComputedStyle(O).getPropertyValue(d);O.style.setProperty(d,`${v(Number.parseFloat(R))}px`)})}_saveInitialAttribute(r,d){const v=r.style.getPropertyValue(d);v&&_t.setDataAttribute(r,d,v)}_resetElementAttributes(r,d){this._applyManipulationCallback(r,v=>{const A=_t.getDataAttribute(v,d);A!==null?(_t.removeDataAttribute(v,d),v.style.setProperty(d,A)):v.style.removeProperty(d)})}_applyManipulationCallback(r,d){if(b(r))d(r);else for(const v of nt.find(r,this._element))d(v)}}const Gt=".bs.modal",yi=`hide${Gt}`,ro=`hidePrevented${Gt}`,Ts=`hidden${Gt}`,Os=`show${Gt}`,so=`shown${Gt}`,Cs=`resize${Gt}`,Zc=`click.dismiss${Gt}`,Kc=`mousedown.dismiss${Gt}`,pl=`keydown.dismiss${Gt}`,ws=`click${Gt}.data-api`,gl="modal-open",cr="show",fr="modal-static",Ha={backdrop:!0,focus:!0,keyboard:!0},vl={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Bn extends He{constructor(r,d){super(r,d),this._dialog=nt.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new xs,this._addEventListeners()}static get Default(){return Ha}static get DefaultType(){return vl}static get NAME(){return"modal"}toggle(r){return this._isShown?this.hide():this.show(r)}show(r){this._isShown||this._isTransitioning||k.trigger(this._element,Os,{relatedTarget:r}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(gl),this._adjustDialog(),this._backdrop.show(()=>this._showElement(r)))}hide(){this._isShown&&!this._isTransitioning&&(k.trigger(this._element,yi).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(cr),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated())))}dispose(){k.off(window,Gt),k.off(this._dialog,Gt),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new gi({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new As({trapElement:this._element})}_showElement(r){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const d=nt.findOne(".modal-body",this._dialog);d&&(d.scrollTop=0),q(this._element),this._element.classList.add(cr),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,k.trigger(this._element,so,{relatedTarget:r})},this._dialog,this._isAnimated())}_addEventListeners(){k.on(this._element,pl,r=>{r.key==="Escape"&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())}),k.on(window,Cs,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),k.on(this._element,Kc,r=>{k.one(this._element,Zc,d=>{this._element===r.target&&this._element===d.target&&(this._config.backdrop!=="static"?this._config.backdrop&&this.hide():this._triggerBackdropTransition())})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(gl),this._resetAdjustments(),this._scrollBar.reset(),k.trigger(this._element,Ts)})}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(k.trigger(this._element,ro).defaultPrevented)return;const r=this._element.scrollHeight>document.documentElement.clientHeight,d=this._element.style.overflowY;d==="hidden"||this._element.classList.contains(fr)||(r||(this._element.style.overflowY="hidden"),this._element.classList.add(fr),this._queueCallback(()=>{this._element.classList.remove(fr),this._queueCallback(()=>{this._element.style.overflowY=d},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const r=this._element.scrollHeight>document.documentElement.clientHeight,d=this._scrollBar.getWidth(),v=d>0;if(v&&!r){const A=Q()?"paddingLeft":"paddingRight";this._element.style[A]=`${d}px`}if(!v&&r){const A=Q()?"paddingRight":"paddingLeft";this._element.style[A]=`${d}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(r,d){return this.each(function(){const v=Bn.getOrCreateInstance(this,r);if(typeof r=="string"){if(v[r]===void 0)throw new TypeError(`No method named "${r}"`);v[r](d)}})}}k.on(document,ws,'[data-bs-toggle="modal"]',function(p){const r=nt.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&p.preventDefault(),k.one(r,Os,v=>{v.defaultPrevented||k.one(r,Ts,()=>{E(this)&&this.focus()})});const d=nt.findOne(".modal.show");d&&Bn.getInstance(d).hide(),Bn.getOrCreateInstance(r).toggle(this)}),Ft(Bn),H(Bn);const Tn=".bs.offcanvas",ca=".data-api",uo=`load${Tn}${ca}`,Ds="show",Ms="showing",oo="hiding",co=".offcanvas.show",$c=`show${Tn}`,fo=`shown${Tn}`,ho=`hide${Tn}`,Ns=`hidePrevented${Tn}`,Ie=`hidden${Tn}`,tn=`resize${Tn}`,yl=`click${Tn}${ca}`,zs=`keydown.dismiss${Tn}`,dr={backdrop:!0,keyboard:!0,scroll:!1},hr={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class cn extends He{constructor(r,d){super(r,d),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return dr}static get DefaultType(){return hr}static get NAME(){return"offcanvas"}toggle(r){return this._isShown?this.hide():this.show(r)}show(r){this._isShown||k.trigger(this._element,$c,{relatedTarget:r}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||new xs().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Ms),this._queueCallback(()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Ds),this._element.classList.remove(Ms),k.trigger(this._element,fo,{relatedTarget:r})},this._element,!0))}hide(){this._isShown&&(k.trigger(this._element,ho).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(oo),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove(Ds,oo),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new xs().reset(),k.trigger(this._element,Ie)},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const r=!!this._config.backdrop;return new gi({className:"offcanvas-backdrop",isVisible:r,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:r?()=>{this._config.backdrop!=="static"?this.hide():k.trigger(this._element,Ns)}:null})}_initializeFocusTrap(){return new As({trapElement:this._element})}_addEventListeners(){k.on(this._element,zs,r=>{r.key==="Escape"&&(this._config.keyboard?this.hide():k.trigger(this._element,Ns))})}static jQueryInterface(r){return this.each(function(){const d=cn.getOrCreateInstance(this,r);if(typeof r=="string"){if(d[r]===void 0||r.startsWith("_")||r==="constructor")throw new TypeError(`No method named "${r}"`);d[r](this)}})}}k.on(document,yl,'[data-bs-toggle="offcanvas"]',function(p){const r=nt.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&p.preventDefault(),D(this))return;k.one(r,Ie,()=>{E(this)&&this.focus()});const d=nt.findOne(co);d&&d!==r&&cn.getInstance(d).hide(),cn.getOrCreateInstance(r).toggle(this)}),k.on(window,uo,()=>{for(const p of nt.find(co))cn.getOrCreateInstance(p).show()}),k.on(window,tn,()=>{for(const p of nt.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(p).position!=="fixed"&&cn.getOrCreateInstance(p).hide()}),Ft(cn),H(cn);const qn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},mo=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),mr=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,bl=(p,r)=>{const d=p.nodeName.toLowerCase();return r.includes(d)?!mo.has(d)||!!mr.test(p.nodeValue):r.filter(v=>v instanceof RegExp).some(v=>v.test(d))},po={allowList:qn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},en={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},_l={entry:"(string|element|function|null)",selector:"(string|element)"};class Sl extends me{constructor(r){super(),this._config=this._getConfig(r)}static get Default(){return po}static get DefaultType(){return en}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map(r=>this._resolvePossibleFunction(r)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(r){return this._checkContent(r),this._config.content={...this._config.content,...r},this}toHtml(){const r=document.createElement("div");r.innerHTML=this._maybeSanitize(this._config.template);for(const[A,O]of Object.entries(this._config.content))this._setContent(r,O,A);const d=r.children[0],v=this._resolvePossibleFunction(this._config.extraClass);return v&&d.classList.add(...v.split(" ")),d}_typeCheckConfig(r){super._typeCheckConfig(r),this._checkContent(r.content)}_checkContent(r){for(const[d,v]of Object.entries(r))super._typeCheckConfig({selector:d,entry:v},_l)}_setContent(r,d,v){const A=nt.findOne(v,r);A&&((d=this._resolvePossibleFunction(d))?b(d)?this._putElementInTemplate(S(d),A):this._config.html?A.innerHTML=this._maybeSanitize(d):A.textContent=d:A.remove())}_maybeSanitize(r){return this._config.sanitize?function(d,v,A){if(!d.length)return d;if(A&&typeof A=="function")return A(d);const O=new window.DOMParser().parseFromString(d,"text/html"),R=[].concat(...O.body.querySelectorAll("*"));for(const X of R){const J=X.nodeName.toLowerCase();if(!Object.keys(v).includes(J)){X.remove();continue}const V=[].concat(...X.attributes),K=[].concat(v["*"]||[],v[J]||[]);for(const $ of V)bl($,K)||X.removeAttribute($.nodeName)}return O.body.innerHTML}(r,this._config.allowList,this._config.sanitizeFn):r}_resolvePossibleFunction(r){return W(r,[this])}_putElementInTemplate(r,d){if(this._config.html)return d.innerHTML="",void d.append(r);d.textContent=r.textContent}}const pr=new Set(["sanitize","allowList","sanitizeFn"]),El="fade",xe="show",Ge=".modal",fa="hide.bs.modal",Ve="hover",fn="focus",ka={AUTO:"auto",TOP:"top",RIGHT:Q()?"left":"right",BOTTOM:"bottom",LEFT:Q()?"right":"left"},go={allowList:qn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Rs={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Yn extends He{constructor(r,d){if(rr===void 0)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(r,d),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return go}static get DefaultType(){return Rs}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),k.off(this._element.closest(Ge),fa,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const r=k.trigger(this._element,this.constructor.eventName("show")),d=(j(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(r.defaultPrevented||!d)return;this._disposePopper();const v=this._getTipElement();this._element.setAttribute("aria-describedby",v.getAttribute("id"));const{container:A}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(A.append(v),k.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(v),v.classList.add(xe),"ontouchstart"in document.documentElement)for(const O of[].concat(...document.body.children))k.on(O,"mouseover",z);this._queueCallback(()=>{k.trigger(this._element,this.constructor.eventName("shown")),this._isHovered===!1&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!k.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(xe),"ontouchstart"in document.documentElement)for(const r of[].concat(...document.body.children))k.off(r,"mouseover",z);this._activeTrigger.click=!1,this._activeTrigger[fn]=!1,this._activeTrigger[Ve]=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),k.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(r){const d=this._getTemplateFactory(r).toHtml();if(!d)return null;d.classList.remove(El,xe),d.classList.add(`bs-${this.constructor.NAME}-auto`);const v=(A=>{do A+=Math.floor(1e6*Math.random());while(document.getElementById(A));return A})(this.constructor.NAME).toString();return d.setAttribute("id",v),this._isAnimated()&&d.classList.add(El),d}setContent(r){this._newContent=r,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(r){return this._templateFactory?this._templateFactory.changeContent(r):this._templateFactory=new Sl({...this._config,content:r,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(r){return this.constructor.getOrCreateInstance(r.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(El)}_isShown(){return this.tip&&this.tip.classList.contains(xe)}_createPopper(r){const d=W(this._config.placement,[this,r,this._element]),v=ka[d.toUpperCase()];return ys(this._element,r,this._getPopperConfig(v))}_getOffset(){const{offset:r}=this._config;return typeof r=="string"?r.split(",").map(d=>Number.parseInt(d,10)):typeof r=="function"?d=>r(d,this._element):r}_resolvePossibleFunction(r){return W(r,[this._element])}_getPopperConfig(r){const d={placement:r,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:v=>{this._getTipElement().setAttribute("data-popper-placement",v.state.placement)}}]};return{...d,...W(this._config.popperConfig,[d])}}_setListeners(){const r=this._config.trigger.split(" ");for(const d of r)if(d==="click")k.on(this._element,this.constructor.eventName("click"),this._config.selector,v=>{this._initializeOnDelegatedTarget(v).toggle()});else if(d!=="manual"){const v=d===Ve?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),A=d===Ve?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");k.on(this._element,v,this._config.selector,O=>{const R=this._initializeOnDelegatedTarget(O);R._activeTrigger[O.type==="focusin"?fn:Ve]=!0,R._enter()}),k.on(this._element,A,this._config.selector,O=>{const R=this._initializeOnDelegatedTarget(O);R._activeTrigger[O.type==="focusout"?fn:Ve]=R._element.contains(O.relatedTarget),R._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},k.on(this._element.closest(Ge),fa,this._hideModalHandler)}_fixTitle(){const r=this._element.getAttribute("title");r&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",r),this._element.setAttribute("data-bs-original-title",r),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(r,d){clearTimeout(this._timeout),this._timeout=setTimeout(r,d)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(r){const d=_t.getDataAttributes(this._element);for(const v of Object.keys(d))pr.has(v)&&delete d[v];return r={...d,...typeof r=="object"&&r?r:{}},r=this._mergeConfigObj(r),r=this._configAfterMerge(r),this._typeCheckConfig(r),r}_configAfterMerge(r){return r.container=r.container===!1?document.body:S(r.container),typeof r.delay=="number"&&(r.delay={show:r.delay,hide:r.delay}),typeof r.title=="number"&&(r.title=r.title.toString()),typeof r.content=="number"&&(r.content=r.content.toString()),r}_getDelegateConfig(){const r={};for(const[d,v]of Object.entries(this._config))this.constructor.Default[d]!==v&&(r[d]=v);return r.selector=!1,r.trigger="manual",r}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(r){return this.each(function(){const d=Yn.getOrCreateInstance(this,r);if(typeof r=="string"){if(d[r]===void 0)throw new TypeError(`No method named "${r}"`);d[r]()}})}}H(Yn);const Te={...Yn.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},he={...Yn.DefaultType,content:"(null|string|element|function)"};class xt extends Yn{static get Default(){return Te}static get DefaultType(){return he}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(r){return this.each(function(){const d=xt.getOrCreateInstance(this,r);if(typeof r=="string"){if(d[r]===void 0)throw new TypeError(`No method named "${r}"`);d[r]()}})}}H(xt);const Qe=".bs.scrollspy",On=`activate${Qe}`,gr=`click${Qe}`,Ba=`load${Qe}.data-api`,qa="active",vr="[href]",Al=".nav-link",bi=`${Al}, .nav-item > ${Al}, .list-group-item`,_i={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Si={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class xl extends He{constructor(r,d){super(r,d),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return _i}static get DefaultType(){return Si}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const r of this._observableSections.values())this._observer.observe(r)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(r){return r.target=S(r.target)||document.body,r.rootMargin=r.offset?`${r.offset}px 0px -30%`:r.rootMargin,typeof r.threshold=="string"&&(r.threshold=r.threshold.split(",").map(d=>Number.parseFloat(d))),r}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(k.off(this._config.target,gr),k.on(this._config.target,gr,vr,r=>{const d=this._observableSections.get(r.target.hash);if(d){r.preventDefault();const v=this._rootElement||window,A=d.offsetTop-this._element.offsetTop;if(v.scrollTo)return void v.scrollTo({top:A,behavior:"smooth"});v.scrollTop=A}}))}_getNewObserver(){const r={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(d=>this._observerCallback(d),r)}_observerCallback(r){const d=R=>this._targetLinks.get(`#${R.target.id}`),v=R=>{this._previousScrollData.visibleEntryTop=R.target.offsetTop,this._process(d(R))},A=(this._rootElement||document.documentElement).scrollTop,O=A>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=A;for(const R of r){if(!R.isIntersecting){this._activeTarget=null,this._clearActiveClass(d(R));continue}const X=R.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(O&&X){if(v(R),!A)return}else O||X||v(R)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const r=nt.find(vr,this._config.target);for(const d of r){if(!d.hash||D(d))continue;const v=nt.findOne(decodeURI(d.hash),this._element);E(v)&&(this._targetLinks.set(decodeURI(d.hash),d),this._observableSections.set(d.hash,v))}}_process(r){this._activeTarget!==r&&(this._clearActiveClass(this._config.target),this._activeTarget=r,r.classList.add(qa),this._activateParents(r),k.trigger(this._element,On,{relatedTarget:r}))}_activateParents(r){if(r.classList.contains("dropdown-item"))nt.findOne(".dropdown-toggle",r.closest(".dropdown")).classList.add(qa);else for(const d of nt.parents(r,".nav, .list-group"))for(const v of nt.prev(d,bi))v.classList.add(qa)}_clearActiveClass(r){r.classList.remove(qa);const d=nt.find(`${vr}.${qa}`,r);for(const v of d)v.classList.remove(qa)}static jQueryInterface(r){return this.each(function(){const d=xl.getOrCreateInstance(this,r);if(typeof r=="string"){if(d[r]===void 0||r.startsWith("_")||r==="constructor")throw new TypeError(`No method named "${r}"`);d[r]()}})}}k.on(window,Ba,()=>{for(const p of nt.find('[data-bs-spy="scroll"]'))xl.getOrCreateInstance(p)}),H(xl);const Xn=".bs.tab",vo=`hide${Xn}`,yr=`hidden${Xn}`,yo=`show${Xn}`,Ei=`shown${Xn}`,bo=`click${Xn}`,Tl=`keydown${Xn}`,Ai=`load${Xn}`,br="ArrowLeft",Ol="ArrowRight",_r="ArrowUp",Ls="ArrowDown",Sr="Home",da="End",ha="active",Ya="fade",Cl="show",js=".dropdown-toggle",xi=`:not(${js})`,Er='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Re=`.nav-link${xi}, .list-group-item${xi}, [role="tab"]${xi}, ${Er}`,Cn=`.${ha}[data-bs-toggle="tab"], .${ha}[data-bs-toggle="pill"], .${ha}[data-bs-toggle="list"]`;class Le extends He{constructor(r){super(r),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),k.on(this._element,Tl,d=>this._keydown(d)))}static get NAME(){return"tab"}show(){const r=this._element;if(this._elemIsActive(r))return;const d=this._getActiveElem(),v=d?k.trigger(d,vo,{relatedTarget:r}):null;k.trigger(r,yo,{relatedTarget:d}).defaultPrevented||v&&v.defaultPrevented||(this._deactivate(d,r),this._activate(r,d))}_activate(r,d){r&&(r.classList.add(ha),this._activate(nt.getElementFromSelector(r)),this._queueCallback(()=>{r.getAttribute("role")==="tab"?(r.removeAttribute("tabindex"),r.setAttribute("aria-selected",!0),this._toggleDropDown(r,!0),k.trigger(r,Ei,{relatedTarget:d})):r.classList.add(Cl)},r,r.classList.contains(Ya)))}_deactivate(r,d){r&&(r.classList.remove(ha),r.blur(),this._deactivate(nt.getElementFromSelector(r)),this._queueCallback(()=>{r.getAttribute("role")==="tab"?(r.setAttribute("aria-selected",!1),r.setAttribute("tabindex","-1"),this._toggleDropDown(r,!1),k.trigger(r,yr,{relatedTarget:d})):r.classList.remove(Cl)},r,r.classList.contains(Ya)))}_keydown(r){if(![br,Ol,_r,Ls,Sr,da].includes(r.key))return;r.stopPropagation(),r.preventDefault();const d=this._getChildren().filter(A=>!D(A));let v;if([Sr,da].includes(r.key))v=d[r.key===Sr?0:d.length-1];else{const A=[Ol,Ls].includes(r.key);v=bt(d,r.target,A,!0)}v&&(v.focus({preventScroll:!0}),Le.getOrCreateInstance(v).show())}_getChildren(){return nt.find(Re,this._parent)}_getActiveElem(){return this._getChildren().find(r=>this._elemIsActive(r))||null}_setInitialAttributes(r,d){this._setAttributeIfNotExists(r,"role","tablist");for(const v of d)this._setInitialAttributesOnChild(v)}_setInitialAttributesOnChild(r){r=this._getInnerElement(r);const d=this._elemIsActive(r),v=this._getOuterElement(r);r.setAttribute("aria-selected",d),v!==r&&this._setAttributeIfNotExists(v,"role","presentation"),d||r.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(r,"role","tab"),this._setInitialAttributesOnTargetPanel(r)}_setInitialAttributesOnTargetPanel(r){const d=nt.getElementFromSelector(r);d&&(this._setAttributeIfNotExists(d,"role","tabpanel"),r.id&&this._setAttributeIfNotExists(d,"aria-labelledby",`${r.id}`))}_toggleDropDown(r,d){const v=this._getOuterElement(r);if(!v.classList.contains("dropdown"))return;const A=(O,R)=>{const X=nt.findOne(O,v);X&&X.classList.toggle(R,d)};A(js,ha),A(".dropdown-menu",Cl),v.setAttribute("aria-expanded",d)}_setAttributeIfNotExists(r,d,v){r.hasAttribute(d)||r.setAttribute(d,v)}_elemIsActive(r){return r.classList.contains(ha)}_getInnerElement(r){return r.matches(Re)?r:nt.findOne(Re,r)}_getOuterElement(r){return r.closest(".nav-item, .list-group-item")||r}static jQueryInterface(r){return this.each(function(){const d=Le.getOrCreateInstance(this);if(typeof r=="string"){if(d[r]===void 0||r.startsWith("_")||r==="constructor")throw new TypeError(`No method named "${r}"`);d[r]()}})}}k.on(document,bo,Er,function(p){["A","AREA"].includes(this.tagName)&&p.preventDefault(),D(this)||Le.getOrCreateInstance(this).show()}),k.on(window,Ai,()=>{for(const p of nt.find(Cn))Le.getOrCreateInstance(p)}),H(Le);const Gn=".bs.toast",ma=`mouseover${Gn}`,Vn=`mouseout${Gn}`,re=`focusin${Gn}`,Ar=`focusout${Gn}`,Fc=`hide${Gn}`,Jc=`hidden${Gn}`,Wc=`show${Gn}`,se=`shown${Gn}`,xr="hide",pa="show",ga="showing",Us={animation:"boolean",autohide:"boolean",delay:"number"},wl={animation:!0,autohide:!0,delay:5e3};class wn extends He{constructor(r,d){super(r,d),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return wl}static get DefaultType(){return Us}static get NAME(){return"toast"}show(){k.trigger(this._element,Wc).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(xr),q(this._element),this._element.classList.add(pa,ga),this._queueCallback(()=>{this._element.classList.remove(ga),k.trigger(this._element,se),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(k.trigger(this._element,Fc).defaultPrevented||(this._element.classList.add(ga),this._queueCallback(()=>{this._element.classList.add(xr),this._element.classList.remove(ga,pa),k.trigger(this._element,Jc)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(pa),super.dispose()}isShown(){return this._element.classList.contains(pa)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(r,d){switch(r.type){case"mouseover":case"mouseout":this._hasMouseInteraction=d;break;case"focusin":case"focusout":this._hasKeyboardInteraction=d}if(d)return void this._clearTimeout();const v=r.relatedTarget;this._element===v||this._element.contains(v)||this._maybeScheduleHide()}_setListeners(){k.on(this._element,ma,r=>this._onInteraction(r,!0)),k.on(this._element,Vn,r=>this._onInteraction(r,!1)),k.on(this._element,re,r=>this._onInteraction(r,!0)),k.on(this._element,Ar,r=>this._onInteraction(r,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(r){return this.each(function(){const d=wn.getOrCreateInstance(this,r);if(typeof r=="string"){if(d[r]===void 0)throw new TypeError(`No method named "${r}"`);d[r](this)}})}}return Ft(wn),H(wn),{Alert:Fe,Button:ea,Carousel:wa,Collapse:ia,Dropdown:on,Modal:Bn,Offcanvas:cn,Popover:xt,ScrollSpy:xl,Tab:Le,Toast:wn,Tooltip:Yn}})}(oc)),oc.exports}Eb();const Ab=()=>G.jsxs("div",{className:"home-container",children:[G.jsxs("header",{className:"hero-section",children:[G.jsx("h1",{className:"hero-title",children:"ContaminUS"}),G.jsx("p",{className:"hero-description",children:"Proyecto universitario para monitorear la calidad del aire usando sensores IoT."}),G.jsx("button",{className:"cta-button",children:"Explorar Proyecto"})]}),G.jsxs("section",{className:"about-section",children:[G.jsx("h2",{children:"Sobre el Proyecto"}),G.jsx("p",{children:"ContaminUS es una solución basada en tecnologías IoT para medir la calidad del aire en tiempo real. Este proyecto busca crear una herramienta accesible para estudiantes, investigadores y comunidades interesadas en el monitoreo ambiental."}),G.jsxs("div",{className:"features",children:[G.jsxs("div",{className:"feature",children:[G.jsx("h3",{children:"Medición en tiempo real"}),G.jsx("p",{children:"Monitorea la calidad del aire con sensores MQ-135 y DHT11, mostrando datos precisos y actualizados."})]}),G.jsxs("div",{className:"feature",children:[G.jsx("h3",{children:"Aplicación web interactiva"}),G.jsx("p",{children:"Visualiza los datos de calidad del aire mediante mapas interactivos y gráficos."})]}),G.jsxs("div",{className:"feature",children:[G.jsx("h3",{children:"Colaboración en la universidad"}),G.jsx("p",{children:"El proyecto está orientado a estudiantes que deseen aprender y colaborar con el análisis de datos ambientales."})]})]})]})]});function zg(l,u){const o=w.useRef(u);w.useEffect(function(){u!==o.current&&l.attributionControl!=null&&(o.current!=null&&l.attributionControl.removeAttribution(o.current),u!=null&&l.attributionControl.addAttribution(u)),o.current=u},[l,u])}function xb(l,u,o){u.center!==o.center&&l.setLatLng(u.center),u.radius!=null&&u.radius!==o.radius&&l.setRadius(u.radius)}const Tb=1;function Ob(l){return Object.freeze({__version:Tb,map:l})}function Cb(l,u){return Object.freeze({...l,...u})}const lh=w.createContext(null);function ih(){const l=w.use(lh);if(l==null)throw new Error("No context provided: useLeafletContext() can only be used in a descendant of ");return l}function wb(l){function u(o,c){const{instance:f,context:m}=l(o).current;w.useImperativeHandle(c,()=>f);const{children:y}=o;return y==null?null:Bi.createElement(lh,{value:m},y)}return w.forwardRef(u)}function Db(l){function u(o,c){const[f,m]=w.useState(!1),{instance:y}=l(o,m).current;w.useImperativeHandle(c,()=>y),w.useEffect(function(){f&&y.update()},[y,f,o.children]);const b=y._contentNode;return b?_b.createPortal(o.children,b):null}return w.forwardRef(u)}function Mb(l){function u(o,c){const{instance:f}=l(o).current;return w.useImperativeHandle(c,()=>f),null}return w.forwardRef(u)}function rh(l,u){const o=w.useRef(void 0);w.useEffect(function(){return u!=null&&l.instance.on(u),o.current=u,function(){o.current!=null&&l.instance.off(o.current),o.current=null}},[l,u])}function yc(l,u){const o=l.pane??u.pane;return o?{...l,pane:o}:l}function Nb(l,u){return function(c,f){const m=ih(),y=l(yc(c,m),m);return zg(m.map,c.attribution),rh(y.current,c.eventHandlers),u(y.current,m,c,f),y}}var bc=Uy();function sh(l,u,o){return Object.freeze({instance:l,context:u,container:o})}function uh(l,u){return u==null?function(c,f){const m=w.useRef(void 0);return m.current||(m.current=l(c,f)),m}:function(c,f){const m=w.useRef(void 0);m.current||(m.current=l(c,f));const y=w.useRef(c),{instance:b}=m.current;return w.useEffect(function(){y.current!==c&&(u(b,c,y.current),y.current=c)},[b,c,u]),m}}function Rg(l,u){w.useEffect(function(){return(u.layerContainer??u.map).addLayer(l.instance),function(){var m;(m=u.layerContainer)==null||m.removeLayer(l.instance),u.map.removeLayer(l.instance)}},[u,l])}function zb(l){return function(o){const c=ih(),f=l(yc(o,c),c);return zg(c.map,o.attribution),rh(f.current,o.eventHandlers),Rg(f.current,c),f}}function Rb(l,u){const o=w.useRef(void 0);w.useEffect(function(){if(u.pathOptions!==o.current){const f=u.pathOptions??{};l.instance.setStyle(f),o.current=f}},[l,u])}function Lb(l){return function(o){const c=ih(),f=l(yc(o,c),c);return rh(f.current,o.eventHandlers),Rg(f.current,c),Rb(f.current,o),f}}function jb(l,u){const o=uh(l),c=Nb(o,u);return Db(c)}function Ub(l,u){const o=uh(l,u),c=Lb(o);return wb(c)}function Hb(l,u){const o=uh(l,u),c=zb(o);return Mb(c)}function kb(l,u,o){const{opacity:c,zIndex:f}=u;c!=null&&c!==o.opacity&&l.setOpacity(c),f!=null&&f!==o.zIndex&&l.setZIndex(f)}const Np=Ub(function({center:u,children:o,...c},f){const m=new bc.Circle(u,c);return sh(m,Cb(f,{overlayContainer:m}))},xb);function Bb({bounds:l,boundsOptions:u,center:o,children:c,className:f,id:m,placeholder:y,style:b,whenReady:S,zoom:E,...D},j){const[z]=w.useState({className:f,id:m,style:b}),[q,L]=w.useState(null),I=w.useRef(void 0);w.useImperativeHandle(j,()=>(q==null?void 0:q.map)??null,[q]);const Q=w.useCallback(W=>{if(W!==null&&!I.current){const P=new bc.Map(W,D);I.current=P,o!=null&&E!=null?P.setView(o,E):l!=null&&P.fitBounds(l,u),S!=null&&P.whenReady(S),L(Ob(P))}},[]);w.useEffect(()=>()=>{q==null||q.map.remove()},[q]);const H=q?Bi.createElement(lh,{value:q},c):y??null;return Bi.createElement("div",{...z,ref:Q},H)}const qb=w.forwardRef(Bb),Yb=jb(function(u,o){const c=new bc.Popup(u,o.overlayContainer);return sh(c,o)},function(u,o,{position:c},f){w.useEffect(function(){const{instance:y}=u;function b(E){E.popup===y&&(y.update(),f(!0))}function S(E){E.popup===y&&f(!1)}return o.map.on({popupopen:b,popupclose:S}),o.overlayContainer==null?(c!=null&&y.setLatLng(c),y.openOn(o.map)):o.overlayContainer.bindPopup(y),function(){var D;o.map.off({popupopen:b,popupclose:S}),(D=o.overlayContainer)==null||D.unbindPopup(),o.map.removeLayer(y)}},[u,o,f,c])}),Xb=Hb(function({url:u,...o},c){const f=new bc.TileLayer(u,yc(o,c));return sh(f,c)},function(u,o,c){kb(u,o,c);const{url:f}=o;f!=null&&f!==c.url&&u.setUrl(f)});var Sd={exports:{}},Ed,zp;function Gb(){if(zp)return Ed;zp=1;var l="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return Ed=l,Ed}var Ad,Rp;function Vb(){if(Rp)return Ad;Rp=1;var l=Gb();function u(){}function o(){}return o.resetWarningCache=u,Ad=function(){function c(y,b,S,E,D,j){if(j!==l){var z=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw z.name="Invariant Violation",z}}c.isRequired=c;function f(){return c}var m={array:c,bigint:c,bool:c,func:c,number:c,object:c,string:c,symbol:c,any:c,arrayOf:f,element:c,elementType:c,instanceOf:f,node:c,objectOf:f,oneOf:f,oneOfType:f,shape:f,exact:f,checkPropTypes:o,resetWarningCache:u};return m.PropTypes=m,m},Ad}var Lp;function Qb(){return Lp||(Lp=1,Sd.exports=Vb()()),Sd.exports}var Zb=Qb();const et=hg(Zb),Lg=w.createContext(),jg=({children:l})=>{const[u,o]=w.useState(null),[c,f]=w.useState(!0),[m,y]=w.useState(null);return w.useEffect(()=>{(async()=>{try{const S=await fetch("/config/settings.json");if(!S.ok)throw new Error("Error al cargar settings.json");const E=await S.json();o(E)}catch(S){y(S.message)}finally{f(!1)}})()},[]),G.jsx(Lg.Provider,{value:{config:u,configLoading:c,configError:m},children:l})};jg.propTypes={children:et.node.isRequired};const Fr=()=>w.useContext(Lg),Ug=w.createContext(),Mu=({children:l,config:u})=>{const[o,c]=w.useState(null),[f,m]=w.useState(!0),[y,b]=w.useState(null);return w.useEffect(()=>{(async()=>{try{const E=new URLSearchParams(u.params).toString(),D=`${u.baseUrl}?${E}`,j=await fetch(D);if(!j.ok)throw new Error("Error al obtener datos");const z=await j.json();c(z)}catch(E){b(E.message)}finally{m(!1)}})()},[u]),G.jsx(Ug.Provider,{value:{data:o,dataLoading:f,dataError:y},children:l})};Mu.propTypes={children:et.node.isRequired,config:et.shape({baseUrl:et.string.isRequired,params:et.object}).isRequired};const _c=()=>w.useContext(Ug),Kb=({data:l})=>l.map(({lat:u,lng:o,level:c},f)=>{const m=c<20?"#00FF85":c<60?"#FFA500":"#FF0000",y=4,S=400/y;return G.jsxs("div",{children:[[...Array(y)].map((E,D)=>{const j=S*(D+1),z=.6*((D+1)/y);return G.jsx(Np,{center:[u,o],pathOptions:{color:m,fillColor:m,fillOpacity:z,weight:1},radius:j},`${f}-${D}`)}),G.jsx(Np,{center:[u,o],pathOptions:{color:m,fillColor:m,fillOpacity:.8,weight:2},radius:50,children:G.jsxs(Yb,{children:["Contaminación: ",c," µg/m³"]})})]},f)}),Hg=({deviceId:l})=>{const{config:u,configLoading:o,configError:c}=Fr();if(o)return G.jsx("p",{children:"Cargando configuración..."});if(c)return G.jsxs("p",{children:["Error al cargar configuración: ",c]});if(!u)return G.jsx("p",{children:"Configuración no disponible."});const f=u.appConfig.endpoints.LOGIC_URL;let y=u.appConfig.endpoints.GET_DEVICE_POLLUTION_MAP.replace("{0}",l);const b={baseUrl:`${f}/${y}`,params:{}};return G.jsx(Mu,{config:b,children:G.jsx($b,{})})},$b=()=>{const{config:l,configLoading:u,configError:o}=Fr(),{data:c,dataLoading:f,dataError:m}=_c();if(u)return G.jsx("p",{children:"Cargando configuración..."});if(o)return G.jsxs("p",{children:["Error al cargar configuración: ",o]});if(!l)return G.jsx("p",{children:"Configuración no disponible."});if(f)return G.jsx("p",{children:"Cargando datos..."});if(m)return G.jsxs("p",{children:["Error al cargar datos: ",o]});if(!c)return G.jsx("p",{children:"Datos no disponibles."});const y=l==null?void 0:l.userConfig.city,b=c.map(S=>({lat:S.lat,lng:S.lon,level:S.carbonMonoxide}));return G.jsx("div",{className:"p-3",children:G.jsxs(qb,{center:y,zoom:13,scrollWheelZoom:!1,style:Fb,children:[G.jsx(Xb,{attribution:'© Contribuidores de OpenStreetMap',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),G.jsx(Kb,{data:b})]})})},Fb={height:"500px",width:"100%",borderRadius:"20px"};Hg.propTypes={deviceId:et.number.isRequired};const kg="label";function jp(l,u){typeof l=="function"?l(u):l&&(l.current=u)}function Jb(l,u){const o=l.options;o&&u&&Object.assign(o,u)}function Bg(l,u){l.labels=u}function qg(l,u){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:kg;const c=[];l.datasets=u.map(f=>{const m=l.datasets.find(y=>y[o]===f[o]);return!m||!f.data||c.includes(m)?{...f}:(c.push(m),Object.assign(m,f),m)})}function Wb(l){let u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:kg;const o={labels:[],datasets:[]};return Bg(o,l.labels),qg(o,l.datasets,u),o}function Pb(l,u){const{height:o=150,width:c=300,redraw:f=!1,datasetIdKey:m,type:y,data:b,options:S,plugins:E=[],fallbackContent:D,updateMode:j,...z}=l,q=w.useRef(null),L=w.useRef(null),I=()=>{q.current&&(L.current=new Pd(q.current,{type:y,data:Wb(b,m),options:S&&{...S},plugins:E}),jp(u,L.current))},Q=()=>{jp(u,null),L.current&&(L.current.destroy(),L.current=null)};return w.useEffect(()=>{!f&&L.current&&S&&Jb(L.current,S)},[f,S]),w.useEffect(()=>{!f&&L.current&&Bg(L.current.config.data,b.labels)},[f,b.labels]),w.useEffect(()=>{!f&&L.current&&b.datasets&&qg(L.current.config.data,b.datasets,m)},[f,b.datasets]),w.useEffect(()=>{L.current&&(f?(Q(),setTimeout(I)):L.current.update(j))},[f,S,b.labels,b.datasets,j]),w.useEffect(()=>{L.current&&(Q(),setTimeout(I))},[y]),w.useEffect(()=>(I(),()=>Q()),[]),Bi.createElement("canvas",{ref:q,role:"img",height:o,width:c,...z},D)}const Ib=w.forwardRef(Pb);function t1(l,u){return Pd.register(u),w.forwardRef((o,c)=>Bi.createElement(Ib,{...o,ref:c,type:l}))}const e1=t1("line",Hy),Yg=w.createContext();function Xg({children:l}){const[u,o]=w.useState(()=>localStorage.getItem("theme")||"light");w.useEffect(()=>{document.body.classList.remove("light","dark"),document.body.classList.add(u),localStorage.setItem("theme",u)},[u]);const c=()=>{o(f=>f==="light"?"dark":"light")};return G.jsx(Yg.Provider,{value:{theme:u,toggleTheme:c},children:l})}Xg.propTypes={children:et.node.isRequired};function Nu(){return w.useContext(Yg)}const Sc=({title:l,status:u,children:o,styleMode:c,className:f,titleIcon:m})=>{const y=w.useRef(null),[b,S]=w.useState(l),{theme:E}=Nu();return w.useEffect(()=>{const D=()=>{y.current&&(y.current.offsetWidth<300&&l.length>15?S(l.slice(0,10)+"."):S(l))};return D(),window.addEventListener("resize",D),()=>window.removeEventListener("resize",D)},[l]),G.jsx("div",{ref:y,className:c==="override"?`${f}`:`col-xl-3 col-sm-6 d-flex flex-column align-items-center p-3 card-container ${f}`,children:G.jsxs("div",{className:`card p-3 w-100 ${E}`,children:[G.jsxs("h3",{className:"text-center",children:[m,b]}),G.jsx("div",{className:"card-content",children:o}),u?G.jsx("span",{className:"status text-center mt-2",children:u}):null]})})};Sc.propTypes={title:et.string.isRequired,status:et.string.isRequired,children:et.node.isRequired,styleMode:et.oneOf(["override",""]),className:et.string,titleIcon:et.node};Sc.defaultProps={styleMode:""};const oh=({cards:l,className:u})=>G.jsx("div",{className:`row justify-content-center g-0 ${u}`,children:l.map((o,c)=>G.jsx(Sc,{title:o.title,status:o.status,styleMode:o.styleMode,className:o.className,titleIcon:o.titleIcon,children:G.jsx("p",{className:"card-text text-center",children:o.content})},c))});oh.propTypes={cards:et.arrayOf(et.shape({title:et.string.isRequired,content:et.string.isRequired,status:et.string.isRequired})).isRequired,className:et.string};Pd.register(ky,By,qy,Yy,Xy);const n1=()=>{const{config:l,configLoading:u,configError:o}=Fr();if(u)return G.jsx("p",{children:"Cargando configuración..."});if(o)return G.jsxs("p",{children:["Error al cargar configuración: ",o]});if(!l)return G.jsx("p",{children:"Configuración no disponible."});const c=l.appConfig.endpoints.LOGIC_URL,f=l.appConfig.endpoints.sensors,m={baseUrl:`${c}/${f}`,params:{}};return G.jsx(Mu,{config:m,children:G.jsx(Gg,{})})},Gg=()=>{var q,L,I,Q;const{config:l}=Fr(),{data:u,loading:o}=_c(),{theme:c}=Nu(),f=((L=(q=l==null?void 0:l.appConfig)==null?void 0:q.historyChartConfig)==null?void 0:L.chartOptionsDark)??{},m=((Q=(I=l==null?void 0:l.appConfig)==null?void 0:I.historyChartConfig)==null?void 0:Q.chartOptionsLight)??{},y=c==="dark"?f:m,b=new Date().getHours(),S=[`${b-3}:00`,`${b-2}:00`,`${b-1}:00`,`${b}:00`,`${b+1}:00`,`${b+2}:00`,`${b+3}:00`];if(o)return G.jsx("p",{children:"Cargando datos..."});const E=[],D=[],j=[];u==null||u.forEach(H=>{H.value!=null&&(H.sensor_type==="MQ-135"?j.push(H.value):H.sensor_type==="DHT-11"&&(E.push(H.value),D.push(H.value)))});const z=[{title:"🌡️ Temperatura",data:E.length?E:[0],borderColor:"#00FF85",backgroundColor:"rgba(0, 255, 133, 0.2)"},{title:"💧 Humedad",data:D.length?D:[0],borderColor:"#00D4FF",backgroundColor:"rgba(0, 212, 255, 0.2)"},{title:"☁️ Contaminación",data:j.length?j:[0],borderColor:"#FFA500",backgroundColor:"rgba(255, 165, 0, 0.2)"}];return G.jsx(oh,{cards:z.map(({title:H,data:W,borderColor:P,backgroundColor:bt})=>({title:H,content:G.jsx(e1,{data:{labels:S,datasets:[{data:W,borderColor:P,backgroundColor:bt,fill:!0,tension:.4}]},options:y}),styleMode:"override",className:"col-lg-4 col-xxs-12 d-flex flex-column align-items-center p-3 card-container"})),className:""})};Gg.propTypes={options:et.object,timeLabels:et.array,data:et.array};/*! * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. @@ -609,4 +609,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. - */const v2={prefix:"fas",iconName:"cloud",icon:[640,512,[9729],"f0c2","M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z"]},y2={prefix:"fas",iconName:"bars",icon:[448,512,["navicon"],"f0c9","M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"]},b2={prefix:"fas",iconName:"temperature-empty",icon:[320,512,["temperature-0","thermometer-0","thermometer-empty"],"f2cb","M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L112 112zM160 0C98.1 0 48 50.2 48 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L272 112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"]},_2=b2,S2={prefix:"fas",iconName:"water",icon:[576,512,[],"f773","M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"]},E2={prefix:"fas",iconName:"clock",icon:[512,512,[128339,"clock-four"],"f017","M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"]},A2={prefix:"fas",iconName:"xmark",icon:[384,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"]},x2=A2,T2=l=>new Date(l).toLocaleTimeString(),O2=l=>l.length===8?l.slice(0,5):`0${l.slice(0,3)}`,Ov=({deviceId:l})=>{const{config:u,configLoading:o,configError:c}=Fr();if(o)return G.jsx("p",{children:"Cargando configuración..."});if(c)return G.jsxs("p",{children:["Error al cargar configuración: ",c]});if(!u)return G.jsx("p",{children:"Configuración no disponible."});const f=u.appConfig.endpoints.BASE_URL,y=u.appConfig.endpoints.GET_DEVICE_LATEST_VALUES.replace("{0}",l),b={baseUrl:`${f}/${y}`,params:{}};return G.jsx(Mu,{config:b,children:G.jsx(C2,{deviceId:l})})},C2=()=>{const{data:l,dataLoading:u,dataError:o}=_c();if(u)return G.jsx("p",{children:"Cargando datos..."});if(o)return G.jsxs("p",{children:["Error al cargar datos: ",o]});if(!l)return G.jsx("p",{children:"Datos no disponibles."});const c=[{id:1,title:"Temperatura",content:"N/A",status:"Esperando datos...",titleIcon:G.jsx(Kl,{icon:_2})},{id:2,title:"Humedad",content:"N/A",status:"Esperando datos...",titleIcon:G.jsx(Kl,{icon:S2})},{id:3,title:"Nivel de CO",content:"N/A",status:"Esperando datos...",titleIcon:G.jsx(Kl,{icon:v2})},{id:4,title:"Actualizado a las",content:"N/A",status:"Esperando datos...",titleIcon:G.jsx(Kl,{icon:E2})}];if(l){let f=l[1],m=l[2],y=T2(f.airValuesTimestamp),b=new Date(f.airValuesTimestamp);c[0].content=m.temperature+"°C",c[0].status="Temperatura actual",c[1].content=m.humidity+"%",c[1].status="Humedad actual",c[2].content=f.carbonMonoxide+" ppm",c[2].status="Nivel de CO actual",c[3].content=O2(y),c[3].status="Día "+b.toLocaleDateString()}return G.jsx(oh,{cards:c})};Ov.propTypes={deviceId:et.number.isRequired};const w2=()=>{const{deviceId:l}=O0();return G.jsxs("main",{className:"container justify-content-center",children:[G.jsx(Ov,{deviceId:l}),G.jsx(Hg,{deviceId:l}),G.jsx(n1,{deviceId:l})]})};function Cv({onClick:l}){return G.jsx("button",{className:"menuBtn",onClick:l,children:G.jsx(Kl,{icon:y2})})}Cv.propTypes={onClick:et.func.isRequired};const wv=({isOpen:l,onClose:u})=>{const{config:o,configLoading:c,configError:f}=Fr();if(c)return G.jsx("p",{children:"Cargando configuración..."});if(f)return G.jsxs("p",{children:["Error al cargar configuración: ",f]});if(!o)return G.jsx("p",{children:"Configuración no disponible."});const m=o.appConfig.endpoints.BASE_URL,y=o.appConfig.endpoints.GET_DEVICES,b={baseUrl:`${m}/${y}`,params:{}};return G.jsx(Mu,{config:b,children:G.jsx(Dv,{isOpen:l,onClose:u})})},Dv=({isOpen:l,onClose:u})=>{const{data:o,dataLoading:c,dataError:f}=_c(),{theme:m}=Nu();return c?G.jsx("p",{children:"Cargando datos..."}):f?G.jsxs("p",{children:["Error al cargar datos: ",f]}):o?G.jsxs("div",{className:`side-menu ${l?"open":""} ${m}`,children:[G.jsx("button",{className:"close-btn",onClick:u,children:G.jsx(Kl,{icon:x2})}),G.jsx("div",{className:"d-flex flex-column gap-3 mt-5",children:o.map(y=>G.jsx("a",{href:`/dashboard/${y.deviceId}`,style:{textDecoration:"none"},children:G.jsx(Sc,{title:y.deviceName,status:`ID: ${y.deviceId}`,styleMode:"override",className:"col-12",children:[]})},y.deviceId))})]}):G.jsx("p",{children:"Datos no disponibles."})};wv.propTypes={isOpen:et.bool.isRequired,onClose:et.func.isRequired};Dv.propTypes={isOpen:et.bool.isRequired,onClose:et.func.isRequired};function D2(){const{theme:l,toggleTheme:u}=Nu();return G.jsx("button",{className:"theme-toggle",onClick:u,children:l==="dark"?"☀️":"🌙"})}const Mv=l=>{const{theme:u}=Nu();return G.jsxs("header",{className:`justify-content-center text-center mb-4 ${u}`,children:[G.jsx("h1",{children:l.title}),G.jsx("p",{className:"subtitle",children:l.subtitle})]})};Mv.propTypes={title:et.string.isRequired,subtitle:et.string};const M2=()=>{const[l,u]=w.useState(!1),o=()=>{u(!l)},c=()=>{u(!1)};return G.jsxs(G.Fragment,{children:[G.jsx(Cv,{onClick:o}),G.jsx(wv,{isOpen:l,onClose:o}),G.jsx(D2,{}),G.jsxs("div",{className:l?"blur m-0 p-0":"m-0 p-0",onClick:c,children:[G.jsx(Mv,{title:"Contamin",subtitle:"Midiendo la calidad del aire y las calles en Sevilla 🌿🚛"}),G.jsxs(Y0,{children:[G.jsx(Nd,{path:"/",element:G.jsx(Ab,{})}),G.jsx(Nd,{path:"/dashboard/:deviceId",element:G.jsx(w2,{})})]})]})]})};Fy.createRoot(document.getElementById("root")).render(G.jsx(w.StrictMode,{children:G.jsx(Xg,{children:G.jsx(jg,{children:G.jsx(cb,{children:G.jsx(M2,{})})})})})); + */const v2={prefix:"fas",iconName:"cloud",icon:[640,512,[9729],"f0c2","M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z"]},y2={prefix:"fas",iconName:"bars",icon:[448,512,["navicon"],"f0c9","M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"]},b2={prefix:"fas",iconName:"temperature-empty",icon:[320,512,["temperature-0","thermometer-0","thermometer-empty"],"f2cb","M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L112 112zM160 0C98.1 0 48 50.2 48 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L272 112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"]},_2=b2,S2={prefix:"fas",iconName:"water",icon:[576,512,[],"f773","M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"]},E2={prefix:"fas",iconName:"clock",icon:[512,512,[128339,"clock-four"],"f017","M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"]},A2={prefix:"fas",iconName:"xmark",icon:[384,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"]},x2=A2,T2=l=>new Date(l).toLocaleTimeString(),O2=l=>l.length===8?l.slice(0,5):`0${l.slice(0,3)}`,Ov=({deviceId:l})=>{const{config:u,configLoading:o,configError:c}=Fr();if(o)return G.jsx("p",{children:"Cargando configuración..."});if(c)return G.jsxs("p",{children:["Error al cargar configuración: ",c]});if(!u)return G.jsx("p",{children:"Configuración no disponible."});const f=u.appConfig.endpoints.LOGIC_URL,y=u.appConfig.endpoints.GET_DEVICE_LATEST_VALUES.replace("{0}",l),b={baseUrl:`${f}/${y}`,params:{}};return G.jsx(Mu,{config:b,children:G.jsx(C2,{deviceId:l})})},C2=()=>{const{data:l,dataLoading:u,dataError:o}=_c();if(u)return G.jsx("p",{children:"Cargando datos..."});if(o)return G.jsxs("p",{children:["Error al cargar datos: ",o]});if(!l)return G.jsx("p",{children:"Datos no disponibles."});const c=[{id:1,title:"Temperatura",content:"N/A",status:"Esperando datos...",titleIcon:G.jsx(Kl,{icon:_2})},{id:2,title:"Humedad",content:"N/A",status:"Esperando datos...",titleIcon:G.jsx(Kl,{icon:S2})},{id:3,title:"Nivel de CO",content:"N/A",status:"Esperando datos...",titleIcon:G.jsx(Kl,{icon:v2})},{id:4,title:"Actualizado a las",content:"N/A",status:"Esperando datos...",titleIcon:G.jsx(Kl,{icon:E2})}];if(l){let f=l[1],m=l[2],y=T2(f.airValuesTimestamp),b=new Date(f.airValuesTimestamp);c[0].content=m.temperature+"°C",c[0].status="Temperatura actual",c[1].content=m.humidity+"%",c[1].status="Humedad actual",c[2].content=f.carbonMonoxide+" ppm",c[2].status="Nivel de CO actual",c[3].content=O2(y),c[3].status="Día "+b.toLocaleDateString()}return G.jsx(oh,{cards:c})};Ov.propTypes={deviceId:et.number.isRequired};const w2=()=>{const{deviceId:l}=O0();return G.jsxs("main",{className:"container justify-content-center",children:[G.jsx(Ov,{deviceId:l}),G.jsx(Hg,{deviceId:l}),G.jsx(n1,{deviceId:l})]})};function Cv({onClick:l}){return G.jsx("button",{className:"menuBtn",onClick:l,children:G.jsx(Kl,{icon:y2})})}Cv.propTypes={onClick:et.func.isRequired};const wv=({isOpen:l,onClose:u})=>{const{config:o,configLoading:c,configError:f}=Fr();if(c)return G.jsx("p",{children:"Cargando configuración..."});if(f)return G.jsxs("p",{children:["Error al cargar configuración: ",f]});if(!o)return G.jsx("p",{children:"Configuración no disponible."});const m=o.appConfig.endpoints.DATA_URL,y=o.appConfig.endpoints.GET_DEVICES,b={baseUrl:`${m}/${y}`,params:{}};return G.jsx(Mu,{config:b,children:G.jsx(Dv,{isOpen:l,onClose:u})})},Dv=({isOpen:l,onClose:u})=>{const{data:o,dataLoading:c,dataError:f}=_c(),{theme:m}=Nu();return c?G.jsx("p",{children:"Cargando datos..."}):f?G.jsxs("p",{children:["Error al cargar datos: ",f]}):o?G.jsxs("div",{className:`side-menu ${l?"open":""} ${m}`,children:[G.jsx("button",{className:"close-btn",onClick:u,children:G.jsx(Kl,{icon:x2})}),G.jsx("div",{className:"d-flex flex-column gap-3 mt-5",children:o.map(y=>G.jsx("a",{href:`/dashboard/${y.deviceId}`,style:{textDecoration:"none"},children:G.jsx(Sc,{title:y.deviceName,status:`ID: ${y.deviceId}`,styleMode:"override",className:"col-12",children:[]})},y.deviceId))})]}):G.jsx("p",{children:"Datos no disponibles."})};wv.propTypes={isOpen:et.bool.isRequired,onClose:et.func.isRequired};Dv.propTypes={isOpen:et.bool.isRequired,onClose:et.func.isRequired};function D2(){const{theme:l,toggleTheme:u}=Nu();return G.jsx("button",{className:"theme-toggle",onClick:u,children:l==="dark"?"☀️":"🌙"})}const Mv=l=>{const{theme:u}=Nu();return G.jsxs("header",{className:`justify-content-center text-center mb-4 ${u}`,children:[G.jsx("h1",{children:l.title}),G.jsx("p",{className:"subtitle",children:l.subtitle})]})};Mv.propTypes={title:et.string.isRequired,subtitle:et.string};const M2=()=>{const[l,u]=w.useState(!1),o=()=>{u(!l)},c=()=>{u(!1)};return G.jsxs(G.Fragment,{children:[G.jsx(Cv,{onClick:o}),G.jsx(wv,{isOpen:l,onClose:o}),G.jsx(D2,{}),G.jsxs("div",{className:l?"blur m-0 p-0":"m-0 p-0",onClick:c,children:[G.jsx(Mv,{title:"Contamin",subtitle:"Midiendo la calidad del aire y las calles en Sevilla 🌿🚛"}),G.jsxs(Y0,{children:[G.jsx(Nd,{path:"/",element:G.jsx(Ab,{})}),G.jsx(Nd,{path:"/dashboard/:deviceId",element:G.jsx(w2,{})})]})]})]})};Fy.createRoot(document.getElementById("root")).render(G.jsx(w.StrictMode,{children:G.jsx(Xg,{children:G.jsx(jg,{children:G.jsx(cb,{children:G.jsx(M2,{})})})})})); diff --git a/backend/src/main/resources/webroot/config/settings.json b/backend/src/main/resources/webroot/config/settings.json index 9570f6a..62af292 100644 --- a/backend/src/main/resources/webroot/config/settings.json +++ b/backend/src/main/resources/webroot/config/settings.json @@ -7,7 +7,8 @@ }, "appConfig": { "endpoints": { - "BASE_URL": "http://localhost:3001/api/v1", + "DATA_URL": "http://localhost:8081/api/v1", + "LOGIC_URL": "http://localhost:8082/api/v1", "GET_GROUPS": "/groups", "GET_GROUP_BY_ID": "/groups/{0}", "GET_GROUP_DEVICES": "/groups/{0}/devices", diff --git a/backend/src/main/resources/webroot/index.html b/backend/src/main/resources/webroot/index.html index 3a67346..56d8145 100644 --- a/backend/src/main/resources/webroot/index.html +++ b/backend/src/main/resources/webroot/index.html @@ -1,27 +1,27 @@ - - - - - - - - - - - - - - - - - ContaminUS - + + + + + + + + + + + + + + + + + ContaminUS + - - -
- - + + +
+ + diff --git a/frontend/public/config/settings.json b/frontend/public/config/settings.json index 58754ca..62af292 100644 --- a/frontend/public/config/settings.json +++ b/frontend/public/config/settings.json @@ -7,7 +7,8 @@ }, "appConfig": { "endpoints": { - "BASE_URL": "http://localhost:8081/api/v1", + "DATA_URL": "http://localhost:8081/api/v1", + "LOGIC_URL": "http://localhost:8082/api/v1", "GET_GROUPS": "/groups", "GET_GROUP_BY_ID": "/groups/{0}", "GET_GROUP_DEVICES": "/groups/{0}/devices", diff --git a/frontend/src/components/HistoryCharts.jsx b/frontend/src/components/HistoryCharts.jsx index 4ec0674..de94413 100644 --- a/frontend/src/components/HistoryCharts.jsx +++ b/frontend/src/components/HistoryCharts.jsx @@ -44,7 +44,7 @@ const HistoryCharts = () => { if (configError) return

Error al cargar configuración: {configError}

; if (!config) return

Configuración no disponible.

; - const BASE = config.appConfig.endpoints.BASE_URL; + const BASE = config.appConfig.endpoints.LOGIC_URL; const ENDPOINT = config.appConfig.endpoints.sensors; const reqConfig = { diff --git a/frontend/src/components/PollutionMap.jsx b/frontend/src/components/PollutionMap.jsx index 281ef32..12e55ac 100644 --- a/frontend/src/components/PollutionMap.jsx +++ b/frontend/src/components/PollutionMap.jsx @@ -65,7 +65,7 @@ const PollutionMap = ({ deviceId }) => { if (configError) return

Error al cargar configuración: {configError}

; if (!config) return

Configuración no disponible.

; - const BASE = config.appConfig.endpoints.BASE_URL; + const BASE = config.appConfig.endpoints.LOGIC_URL; const ENDPOINT = config.appConfig.endpoints.GET_DEVICE_POLLUTION_MAP; let endp = ENDPOINT.replace('{0}', deviceId); diff --git a/frontend/src/components/SideMenu.jsx b/frontend/src/components/SideMenu.jsx index dd3b16a..659da66 100644 --- a/frontend/src/components/SideMenu.jsx +++ b/frontend/src/components/SideMenu.jsx @@ -38,7 +38,7 @@ const SideMenu = ({ isOpen, onClose }) => { if (configError) return

Error al cargar configuración: {configError}

; if (!config) return

Configuración no disponible.

; - const BASE = config.appConfig.endpoints.BASE_URL; + const BASE = config.appConfig.endpoints.DATA_URL; const ENDPOINT = config.appConfig.endpoints.GET_DEVICES; const reqConfig = { diff --git a/frontend/src/components/SummaryCards.jsx b/frontend/src/components/SummaryCards.jsx index 0fe781f..88aed6a 100644 --- a/frontend/src/components/SummaryCards.jsx +++ b/frontend/src/components/SummaryCards.jsx @@ -40,7 +40,7 @@ const SummaryCards = ({ deviceId }) => { if (configError) return

Error al cargar configuración: {configError}

; if (!config) return

Configuración no disponible.

; - const BASE = config.appConfig.endpoints.BASE_URL; + const BASE = config.appConfig.endpoints.LOGIC_URL; const ENDPOINT = config.appConfig.endpoints.GET_DEVICE_LATEST_VALUES; const endp = ENDPOINT.replace('{0}', deviceId);