1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,886148,e=>{"use strict";let t,s;var n,i=e.i(783222),a=e.i(433336),r=e.i(271645),o=e.i(394487),l=e.i(914189),u=e.i(144279),c=e.i(148469),d=e.i(294316),p=e.i(83733),m=e.i(674175),f=e.i(233137),h=e.i(233538),b=e.i(813581),g=e.i(397701),v=e.i(402155),x=e.i(700020);let y=null!=(n=r.default.startTransition)?n:function(e){e()};var _=e.i(998348),P=((t=P||{})[t.Open=0]="Open",t[t.Closed=1]="Closed",t),S=((s=S||{})[s.ToggleDisclosure=0]="ToggleDisclosure",s[s.CloseDisclosure=1]="CloseDisclosure",s[s.SetButtonId=2]="SetButtonId",s[s.SetPanelId=3]="SetPanelId",s[s.SetButtonElement=4]="SetButtonElement",s[s.SetPanelElement=5]="SetPanelElement",s);let E={0:e=>({...e,disclosureState:(0,g.match)(e.disclosureState,{0:1,1:0})}),1:e=>1===e.disclosureState?e:{...e,disclosureState:1},2:(e,t)=>e.buttonId===t.buttonId?e:{...e,buttonId:t.buttonId},3:(e,t)=>e.panelId===t.panelId?e:{...e,panelId:t.panelId},4:(e,t)=>e.buttonElement===t.element?e:{...e,buttonElement:t.element},5:(e,t)=>e.panelElement===t.element?e:{...e,panelElement:t.element}},k=(0,r.createContext)(null);function C(e){let t=(0,r.useContext)(k);if(null===t){let t=Error(`<${e} /> is missing a parent <Disclosure /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,C),t}return t}k.displayName="DisclosureContext";let j=(0,r.createContext)(null);j.displayName="DisclosureAPIContext";let L=(0,r.createContext)(null);function I(e,t){return(0,g.match)(t.type,E,e,t)}L.displayName="DisclosurePanelContext";let w=r.Fragment,R=x.RenderFeatures.RenderStrategy|x.RenderFeatures.Static,D=(0,x.forwardRefWithAs)(function(e,t){let{defaultOpen:s=!1,...n}=e,i=(0,r.useRef)(null),a=(0,d.useSyncRefs)(t,(0,d.optionalRef)(e=>{i.current=e},void 0===e.as||(0,x.isFragment)(e.as))),o=(0,r.useReducer)(I,{disclosureState:+!s,buttonElement:null,panelElement:null,buttonId:null,panelId:null}),[{disclosureState:u,buttonId:p},h]=o,y=(0,l.useEvent)(e=>{h({type:1});let t=(0,v.getOwnerDocument)(i.current);if(!t||!p)return;let s=e?b.isHTMLorSVGElement(e)?e:"current"in e&&b.isHTMLorSVGElement(e.current)?e.current:t.getElementById(p):t.getElementById(p);null==s||s.focus()}),_=(0,r.useMemo)(()=>({close:y}),[y]),P=(0,c.useSlot)({open:0===u,close:y}),S=(0,x.useRender)();return r.default.createElement(k.Provider,{value:o},r.default.createElement(j.Provider,{value:_},r.default.createElement(m.CloseProvider,{value:y},r.default.createElement(f.OpenClosedProvider,{value:(0,g.match)(u,{0:f.State.Open,1:f.State.Closed})},S({ourProps:{ref:a},theirProps:n,slot:P,defaultTag:w,name:"Disclosure"})))))}),N=(0,x.forwardRefWithAs)(function(e,t){let s=(0,r.useId)(),{id:n=`headlessui-disclosure-button-${s}`,disabled:p=!1,autoFocus:m=!1,...f}=e,[b,g]=C("Disclosure.Button"),v=(0,r.useContext)(L),y=null!==v&&v===b.panelId,P=(0,r.useRef)(null),S=(0,d.useSyncRefs)(P,t,(0,l.useEvent)(e=>{if(!y)return g({type:4,element:e})}));(0,r.useEffect)(()=>{if(!y)return g({type:2,buttonId:n}),()=>{g({type:2,buttonId:null})}},[n,g,y]);let E=(0,l.useEvent)(e=>{var t;if(y){if(1===b.disclosureState)return;switch(e.key){case _.Keys.Space:case _.Keys.Enter:e.preventDefault(),e.stopPropagation(),g({type:0}),null==(t=b.buttonElement)||t.focus()}}else switch(e.key){case _.Keys.Space:case _.Keys.Enter:e.preventDefault(),e.stopPropagation(),g({type:0})}}),k=(0,l.useEvent)(e=>{e.key===_.Keys.Space&&e.preventDefault()}),j=(0,l.useEvent)(e=>{var t;(0,h.isDisabledReactIssue7711)(e.currentTarget)||p||(y?(g({type:0}),null==(t=b.buttonElement)||t.focus()):g({type:0}))}),{isFocusVisible:I,focusProps:w}=(0,i.useFocusRing)({autoFocus:m}),{isHovered:R,hoverProps:D}=(0,a.useHover)({isDisabled:p}),{pressed:N,pressProps:T}=(0,o.useActivePress)({disabled:p}),O=(0,c.useSlot)({open:0===b.disclosureState,hover:R,active:N,disabled:p,focus:I,autofocus:m}),F=(0,u.useResolveButtonType)(e,b.buttonElement),B=y?(0,x.mergeProps)({ref:S,type:F,disabled:p||void 0,autoFocus:m,onKeyDown:E,onClick:j},w,D,T):(0,x.mergeProps)({ref:S,id:n,type:F,"aria-expanded":0===b.disclosureState,"aria-controls":b.panelElement?b.panelId:void 0,disabled:p||void 0,autoFocus:m,onKeyDown:E,onKeyUp:k,onClick:j},w,D,T);return(0,x.useRender)()({ourProps:B,theirProps:f,slot:O,defaultTag:"button",name:"Disclosure.Button"})}),T=(0,x.forwardRefWithAs)(function(e,t){let s=(0,r.useId)(),{id:n=`headlessui-disclosure-panel-${s}`,transition:i=!1,...a}=e,[o,u]=C("Disclosure.Panel"),{close:m}=function e(t){let s=(0,r.useContext)(j);if(null===s){let s=Error(`<${t} /> is missing a parent <Disclosure /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(s,e),s}return s}("Disclosure.Panel"),[h,b]=(0,r.useState)(null),g=(0,d.useSyncRefs)(t,(0,l.useEvent)(e=>{y(()=>u({type:5,element:e}))}),b);(0,r.useEffect)(()=>(u({type:3,panelId:n}),()=>{u({type:3,panelId:null})}),[n,u]);let v=(0,f.useOpenClosed)(),[_,P]=(0,p.useTransition)(i,h,null!==v?(v&f.State.Open)===f.State.Open:0===o.disclosureState),S=(0,c.useSlot)({open:0===o.disclosureState,close:m}),E={ref:g,id:n,...(0,p.transitionDataAttributes)(P)},k=(0,x.useRender)();return r.default.createElement(f.ResetOpenClosedProvider,null,r.default.createElement(L.Provider,{value:o.panelId},k({ourProps:E,theirProps:a,slot:S,defaultTag:"div",features:R,visible:_,name:"Disclosure.Panel"})))}),O=Object.assign(D,{Button:N,Panel:T});e.s(["Disclosure",0,O,"DisclosureButton",0,N,"DisclosurePanel",0,T],886148)},275249,e=>{e.v({announcement:"styles-module-scss-module__vi0tNG__announcement",body:"styles-module-scss-module__vi0tNG__body",bodyContainer:"styles-module-scss-module__vi0tNG__bodyContainer",header:"styles-module-scss-module__vi0tNG__header",isClosed:"styles-module-scss-module__vi0tNG__isClosed",isOpen:"styles-module-scss-module__vi0tNG__isOpen",title:"styles-module-scss-module__vi0tNG__title"})},83882,e=>{"use strict";var t=e.i(843476),s=e.i(470618);let n=()=>(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"}),(0,t.jsx)("path",{d:"M12 7v2"}),(0,t.jsx)("path",{d:"M12 13h.01"})]});var i=e.i(886148);e.i(271645);var a=e.i(275249);e.s(["default",0,function(e){return(0,t.jsx)(i.Disclosure,{as:"div",className:a.default.announcement,children:({open:r})=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.DisclosureButton,{className:a.default.header,children:[(0,t.jsxs)("div",{className:a.default.title,children:[(0,t.jsx)(n,{}),(0,t.jsx)("h2",{children:e.title})]}),(0,t.jsx)("span",{className:r?a.default.isOpen:a.default.isClosed,children:(0,t.jsx)(s.ChevronRightIcon,{})})]}),(0,t.jsx)(i.DisclosurePanel,{className:a.default.bodyContainer,children:(0,t.jsx)("div",{className:a.default.body,children:e.body})})]})})}],83882)},293173,e=>{"use strict";var t=e.i(618566),s=e.i(271645);e.s(["default",0,()=>{let e=(0,t.usePathname)();(0,s.useEffect)(()=>{document.location.hash||document.getElementById("main-skip-link")?.focus()},[e]);let n=(0,s.useCallback)(()=>{let e=document.location.hash,t=document.getElementById("main");e&&"#"!==e&&t&&t.getBoundingClientRect().top>=0&&(history.replaceState(null,"","#"),window.dispatchEvent(new Event("hashchange")))},[]);return(0,s.useEffect)(()=>(window.addEventListener("scrollend",n),()=>window.removeEventListener("scrollend",n)),[n]),null}])},50680,e=>{e.v({active:"styles-module-scss-module__t9flGa__active",isParentPage:"styles-module-scss-module__t9flGa__isParentPage",laptopMenu:"styles-module-scss-module__t9flGa__laptopMenu",popoverButtonContainer:"styles-module-scss-module__t9flGa__popoverButtonContainer",popoverPanel:"styles-module-scss-module__t9flGa__popoverPanel",subPageGroups:"styles-module-scss-module__t9flGa__subPageGroups",subPageLinks:"styles-module-scss-module__t9flGa__subPageLinks",subPagesGroupTitle:"styles-module-scss-module__t9flGa__subPagesGroupTitle",wrapper:"styles-module-scss-module__t9flGa__wrapper"})},282806,e=>{"use strict";let t,s;var n=e.i(843476);e.i(28339);var i=e.i(184202),a=e.i(470618),r=e.i(932966),o=e.i(970496),l=e.i(783222),u=e.i(433336),c=e.i(271645),d=e.i(394487),p=e.i(992704),m=e.i(914189),f=e.i(693456),h=e.i(835696),b=e.i(941444),g=e.i(877891),v=e.i(952744),x=e.i(605083),y=e.i(144279),_=e.i(185935),P=e.i(101852),S=e.i(148469),E=e.i(294316),
1k=e.i(661130),C=e.i(83733),j=e.i(674175),L=e.i(919751),I=e.i(2788),w=e.i(233137),R=e.i(140407),D=e.i(233538),N=e.i(813581),T=e.i(652265),O=e.i(397701),F=e.i(402155),B=e.i(700020),M=e.i(998348),$=e.i(635307),A=e.i(825720),q=e.i(341650),G=Object.defineProperty,U=(e,t,s)=>{let n;return(n="symbol"!=typeof t?t+"":t)in e?G(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s,s},W=((t=W||{})[t.Open=0]="Open",t[t.Closed=1]="Closed",t),H=((s=H||{})[s.OpenPopover=0]="OpenPopover",s[s.ClosePopover=1]="ClosePopover",s[s.SetButton=2]="SetButton",s[s.SetButtonId=3]="SetButtonId",s[s.SetPanel=4]="SetPanel",s[s.SetPanelId=5]="SetPanelId",s);let K={0:e=>0===e.popoverState?e:{...e,popoverState:0,__demoMode:!1},1:e=>1===e.popoverState?e:{...e,popoverState:1,__demoMode:!1},2:(e,t)=>e.button===t.button?e:{...e,button:t.button},3:(e,t)=>e.buttonId===t.buttonId?e:{...e,buttonId:t.buttonId},4:(e,t)=>e.panel===t.panel?e:{...e,panel:t.panel},5:(e,t)=>e.panelId===t.panelId?e:{...e,panelId:t.panelId}};class V extends A.Machine{constructor(e){super(e),U(this,"actions",{close:()=>this.send({type:1}),refocusableClose:e=>{this.actions.close();let t=e?N.isHTMLElement(e)?e:"current"in e&&N.isHTMLElement(e.current)?e.current:this.state.button:this.state.button;null==t||t.focus()},open:()=>this.send({type:0}),setButtonId:e=>this.send({type:3,buttonId:e}),setButton:e=>this.send({type:2,button:e}),setPanelId:e=>this.send({type:5,panelId:e}),setPanel:e=>this.send({type:4,panel:e})}),U(this,"selectors",{isPortalled:e=>{var t;if(!e.button||!e.panel)return!1;let s=null!=(t=(0,F.getOwnerDocument)(e.button))?t:document;for(let t of s.querySelectorAll("body > *"))if(Number(null==t?void 0:t.contains(e.button))^Number(null==t?void 0:t.contains(e.panel)))return!0;let n=(0,T.getFocusableElements)(s),i=n.indexOf(e.button),a=(i+n.length-1)%n.length,r=(i+1)%n.length,o=n[a],l=n[r];return!e.panel.contains(o)&&!e.panel.contains(l)}});{let e=this.state.id,t=q.stackMachines.get(null);this.on(0,()=>t.actions.push(e)),this.on(1,()=>t.actions.pop(e))}}static new({id:e,__demoMode:t=!1}){return new V({id:e,__demoMode:t,popoverState:+!t,buttons:{current:[]},button:null,buttonId:null,panel:null,panelId:null,beforePanelSentinel:{current:null},afterPanelSentinel:{current:null},afterButtonSentinel:{current:null}})}reduce(e,t){return(0,O.match)(t.type,K,e,t)}}var X=e.i(526599);let Y=(0,c.createContext)(null);function Q(e){let t=(0,c.useContext)(Y);if(null===t){let t=Error(`<${e} /> is missing a parent <Popover /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,Q),t}return t}let z=(0,c.createContext)(null);function Z(){return(0,c.useContext)(z)}z.displayName="PopoverGroupContext";let J=(0,c.createContext)(null);J.displayName="PopoverPanelContext";let ee=B.RenderFeatures.RenderStrategy|B.RenderFeatures.Static;function et(e,t){let s=(0,c.useId)(),{id:n=`headlessui-popover-backdrop-${s}`,transition:i=!1,...a}=e,r=Q("Popover.Backdrop"),o=(0,R.useSlice)(r,(0,c.useCallback)(e=>e.popoverState,[])),[l,u]=(0,c.useState)(null),d=(0,E.useSyncRefs)(t,u),p=(0,w.useOpenClosed)(),[f,h]=(0,C.useTransition)(i,l,null!==p?(p&w.State.Open)===w.State.Open:o===W.Open),b=(0,m.useEvent)(e=>{if((0,D.isDisabledReactIssue7711)(e.currentTarget))return e.preventDefault();r.actions.close()}),g=(0,S.useSlot)({open:o===W.Open}),v={ref:d,id:n,"aria-hidden":!0,onClick:b,...(0,C.transitionDataAttributes)(h)};return(0,B.useRender)()({ourProps:v,theirProps:a,slot:g,defaultTag:"div",features:ee,visible:f,name:"Popover.Backdrop"})}let es=B.RenderFeatures.RenderStrategy|B.RenderFeatures.Static,en=(0,B.forwardRefWithAs)(function(e,t){var s;let n=(0,c.useId)(),{__demoMode:i=!1,...a}=e,r=function({id:e,__demoMode:t=!1}){let s=(0,c.useMemo)(()=>V.new({id:e,__demoMode:t}),[]);return(0,X.useOnUnmount)(()=>s.dispose()),s}({id:n,__demoMode:i}),o=(0,c.useRef)(null),l=(0,E.useSyncRefs)(t,(0,E.optionalRef)(e=>{o.current=e})),[u,d,p,h,g]=(0,R.useSlice)(r,(0,c.useCallback)(e=>[e.popoverState,e.button,e.panel,e.buttonId,e.panelId],[])),y=(0,x.useRootDocument)(null!=(s=o.current)?s:d),P=(0,b.useLatestValue)(h),k=(0,b.useLatestValue)(g),C=(0,c.useMemo)(()=>({buttonId:P,panelId:k,close:r.actions.close}),[P,k,r]),I=Z(),D=null==I?void 0:I.registerPopover,M=(0,m.useEvent)(()=>{var e,t;let s=(0,F.getActiveElement)(null!=(e=o.current)?e:d);return null!=(t=null==I?void 0:I.isFocusWithinPopoverGroup())?t:s&&((null==d?void 0:d.contains(s))||(null==p?void 0:p.contains(s)))});(0,c.useEffect)(()=>null==D?void 0:D(C),[D,C]);let[A,q]=(0,$.useNestedPortals)(),G=(0,_.useMainTreeNode)(d),U=(0,_.useRootContainers
1)({mainTreeNode:G,portals:A,defaultContainers:[{get current(){return r.state.button}},{get current(){return r.state.panel}}]});(0,f.useEventListener)(y,"focus",e=>{var t,s,n,i,a,o;e.target!==window&&N.isHTMLorSVGElement(e.target)&&r.state.popoverState===W.Open&&(M()||r.state.button&&r.state.panel&&(U.contains(e.target)||null!=(s=null==(t=r.state.beforePanelSentinel.current)?void 0:t.contains)&&s.call(t,e.target)||null!=(i=null==(n=r.state.afterPanelSentinel.current)?void 0:n.contains)&&i.call(n,e.target)||null!=(o=null==(a=r.state.afterButtonSentinel.current)?void 0:a.contains)&&o.call(a,e.target)||r.actions.close()))},!0);let H=u===W.Open;(0,v.useOutsideClick)(H,U.resolveContainers,(e,t)=>{r.actions.close(),(0,T.isFocusableElement)(t,T.FocusableMode.Loose)||(e.preventDefault(),null==d||d.focus())});let K=(0,S.useSlot)({open:u===W.Open,close:r.actions.refocusableClose}),Q=(0,R.useSlice)(r,(0,c.useCallback)(e=>(0,O.match)(e.popoverState,{[W.Open]:w.State.Open,[W.Closed]:w.State.Closed}),[])),z=(0,B.useRender)();return c.default.createElement(_.MainTreeProvider,{node:G},c.default.createElement(L.FloatingProvider,null,c.default.createElement(J.Provider,{value:null},c.default.createElement(Y.Provider,{value:r},c.default.createElement(j.CloseProvider,{value:r.actions.refocusableClose},c.default.createElement(w.OpenClosedProvider,{value:Q},c.default.createElement(q,null,z({ourProps:{ref:l},theirProps:a,slot:K,defaultTag:"div",name:"Popover"}))))))))}),ei=(0,B.forwardRefWithAs)(function(e,t){let s=(0,c.useId)(),{id:n=`headlessui-popover-button-${s}`,disabled:i=!1,autoFocus:a=!1,...r}=e,o=Q("Popover.Button"),[p,f,h,b,g,v,x]=(0,R.useSlice)(o,(0,c.useCallback)(e=>[e.popoverState,o.selectors.isPortalled(e),e.button,e.buttonId,e.panel,e.panelId,e.afterButtonSentinel],[])),_=(0,c.useRef)(null),P=`headlessui-focus-sentinel-${(0,c.useId)()}`,C=Z(),j=null==C?void 0:C.closeOthers,w=null!==(0,c.useContext)(J);(0,c.useEffect)(()=>{if(!w)return o.actions.setButtonId(n),()=>o.actions.setButtonId(null)}
1,[w,n,o]);let[$]=(0,c.useState)(()=>Symbol()),A=(0,E.useSyncRefs)(_,t,(0,L.useFloatingReference)(),(0,m.useEvent)(e=>{if(!w){if(e)o.state.buttons.current.push($);else{let e=o.state.buttons.current.indexOf($);-1!==e&&o.state.buttons.current.splice(e,1)}o.state.buttons.current.length>1&&console.warn("You are already using a <Popover.Button /> but only 1 <Popover.Button /> is supported."),e&&o.actions.setButton(e)}})),q=(0,E.useSyncRefs)(_,t),G=(0,m.useEvent)(e=>{var t,s,n;if(w){if(o.state.popoverState===W.Closed)return;switch(e.key){case M.Keys.Space:case M.Keys.Enter:e.preventDefault(),null==(s=(t=e.target).click)||s.call(t),o.actions.close(),null==(n=o.state.button)||n.focus()}}else switch(e.key){case M.Keys.Space:case M.Keys.Enter:e.preventDefault(),e.stopPropagation(),o.state.popoverState===W.Closed?(null==j||j(o.state.buttonId),o.actions.open()):o.actions.close();break;case M.Keys.Escape:if(o.state.popoverState!==W.Open)return null==j?void 0:j(o.state.buttonId);if(!_.current)return;let i=(0,F.getActiveElement)(_.current);if(i&&!_.current.contains(i))return;e.preventDefault(),e.stopPropagation(),o.actions.close()}}),U=(0,m.useEvent)(e=>{w||e.key===M.Keys.Space&&e.preventDefault()}),H=(0,m.useEvent)(e=>{var t,s;(0,D.isDisabledReactIssue7711)(e.currentTarget)||i||(w?(o.actions.close(),null==(t=o.state.button)||t.focus()):(e.preventDefault(),e.stopPropagation(),o.state.popoverState===W.Closed?(null==j||j(o.state.buttonId),o.actions.open()):o.actions.close(),null==(s=o.state.button)||s.focus()))}),K=(0,m.useEvent)(e=>{e.preventDefault(),e.stopPropagation()}),{isFocusVisible:V,focusProps:X}=(0,l.useFocusRing)({autoFocus:a}),{isHovered:Y,hoverProps:z}=(0,u.useHover)({isDisabled:i}),{pressed:ee,pressProps:et}=(0,d.useActivePress)({disabled:i}),es=p===W.Open,en=(0,S.useSlot)({open:es,active:ee||es,disabled:i,hover:Y,focus:V,autofocus:a}),ei=(0,y.useResolveButtonType)(e,h),ea=w?(0,B.mergeProps)({ref:q,type:ei,onKeyDown:G,onClick:H,disabled:i||void 0,autoFocus:a},X,z,et):(0,B.mergeProps)({ref:A,id:b,type:ei,"aria-expanded":p===W.Open,"aria-controls":g?v:void 0,disabled:i||void 0,autoFocus:a,onKeyDown:G,onKeyUp:U,onClick:H,onMouseDown:K},X,z,et),er=(0,k.useTabDirection)(),eo=(0,m.useEvent)(()=>{if(!N.isHTMLElement(o.state.panel))return;let e=o.state.panel;(0,O.match)(er.current,{[k.Direction.Forwards]:()=>(0,T.focusIn)(e,T.Focus.First),[k.Direction.Backwards]:()=>(0,T.focusIn)(e,T.Focus.Last)})===T.FocusResult.Error&&(0,T.focusIn)((0,T.getFocusableElements)((0,F.getRootNode)(o.state.button)).filter(e=>"true"!==e.dataset.headlessuiFocusGuard),(0,O.match)(er.current,{[k.Direction.Forwards]:T.Focus.Next,[k.Direction.Backwards]:T.Focus.Previous}),{relativeTo:o.state.button})}),el=(0,B.useRender)();return c.default.createElement(c.default.Fragment,null,el({ourProps:ea,theirProps:r,slot:en,defaultTag:"button",name:"Popover.Button"}),es&&!w&&f&&c.default.createElement(I.Hidden,{id:P,ref:x,features:I.HiddenFeatures.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:eo}))}),ea=(0,B.forwardRefWithAs)(et),er=(0,B.forwardRefWithAs)(et),eo=(0,B.forwardRefWithAs)(function(e,t){let s=(0,c.useId)(),{id:n=`headlessui-popover-panel-${s}`,focus:i=!1,anchor:a,portal:r=!1,modal:o=!1,transition:l=!1,...u}=e,d=Q("Popover.Panel"),f=(0,R.useSlice)(d,d.selectors.isPortalled),[b,v,y,_,D]=(0,R.useSlice)(d,(0,c.useCallback)(e=>[e.popoverState,e.button,e.__demoMode,e.beforePanelSentinel,e.afterPanelSentinel],[])),N=`headlessui-focus-sentinel-before-${s}`,A=`headlessui-focus-sentinel-after-${s}`,q=(0,c.useRef)(null),G=(0,L.useResolvedAnchor)(a),[U,H]=(0,L.useFloatingPanel)(G),K=(0,L.useFloatingPanelProps)();G&&(r=!0);let[V,X]=(0,c.useState)(null),Y=(0,E.useSyncRefs)(q,t,G?U:null,d.actions.setPanel,X),z=(0,x.useOwnerDocument)(v),Z=(0,x.useOwnerDocument)(q.current);(0,h.useIsoMorphicEffect)(()=>(d.actions.setPanelId(n),()=>d.actions.setPanelId(null)),[n,d]);let ee=(0,w.useOpenClosed)(),[et,en]=(0,C.useTransition)(l,V,null!==ee?(ee&w.State.Open)===w.State.Open:b===W.Open);(0,g.useOnDisappear)(et,v,d.actions.close),(0,P.useScrollLock)(!y&&o&&et,Z);let ei=(0,m.useEvent)(e=>{var t;if(e.key===M.Keys.Escape){if(d.state.popoverState!==W.Open||!q.current)return;let s=(0,F.getActiveElement)(q.current);if(s&&!q.current.contains(s))return;e.preventDefault(),e.stopPropagation(),d.actions.close(),null==(t=d.state.button)||t.focu
1s()}});(0,c.useEffect)(()=>{var t;e.static||b===W.Closed&&(null==(t=e.unmount)||t)&&d.actions.setPanel(null)},[b,e.unmount,e.static,d]),(0,c.useEffect)(()=>{if(y||!i||b!==W.Open||!q.current)return;let e=(0,F.getActiveElement)(q.current);q.current.contains(e)||(0,T.focusIn)(q.current,T.Focus.First)},[y,i,q.current,b]);let ea=(0,S.useSlot)({open:b===W.Open,close:d.actions.refocusableClose}),er=(0,B.mergeProps)(G?K():{},{ref:Y,id:n,onKeyDown:ei,onBlur:i&&b===W.Open?e=>{var t,s,n,i,a;let r=e.relatedTarget;r&&q.current&&(null!=(t=q.current)&&t.contains(r)||(d.actions.close(),(null!=(n=null==(s=_.current)?void 0:s.contains)&&n.call(s,r)||null!=(a=null==(i=D.current)?void 0:i.contains)&&a.call(i,r))&&r.focus({preventScroll:!0})))}:void 0,tabIndex:-1,style:{...u.style,...H,"--button-width":(0,p.useElementSize)(et,v,!0).width},...(0,C.transitionDataAttributes)(en)}),eo=(0,k.useTabDirection)(),el=(0,m.useEvent)(()=>{let e=q.current;e&&(0,O.match)(eo.current,{[k.Direction.Forwards]:()=>{var t;(0,T.focusIn)(e,T.Focus.First)===T.FocusResult.Error&&(null==(t=d.state.afterPanelSentinel.current)||t.focus())},[k.Direction.Backwards]:()=>{var e;null==(e=d.state.button)||e.focus({preventScroll:!0})}})}),eu=(0,m.useEvent)(()=>{let e=q.current;e&&(0,O.match)(eo.current,{[k.Direction.Forwards]:()=>{var e;if(!d.state.button)return;let t=null!=(e=(0,F.getRootNode)(d.state.button))?e:document.body,s=(0,T.getFocusableElements)(t),n=s.indexOf(d.state.button),i=s.slice(0,n+1),a=[...s.slice(n+1),...i];for(let e of a.slice())if("true"===e.dataset.headlessuiFocusGuard||null!=V&&V.contains(e)){let t=a.indexOf(e);-1!==t&&a.splice(t,1)}(0,T.focusIn)(a,T.Focus.First,{sorted:!1})},[k.Direction.Backwards]:()=>{var t;(0,T.focusIn)(e,T.Focus.Previous)===T.FocusResult.Error&&(null==(t=d.state.button)||t.focus())}})}),ec=(0,B.useRender)();return c.default.createElement(w.ResetOpenClosedProvider,null,c.default.createElement(J.Provider,{value:n},c.default.createElement(j.CloseProvider,{value:d.actions.refocusableClose},c.default.createElement($.Portal,{enabled:!!r&&(e.static||et),ownerDocument:z},et&&f&&c.default.createElement(I.Hidden,{id:N,ref:_,features:I.HiddenFeatures.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:el}),ec({ourProps:er,theirProps:u,slot:ea,defaultTag:"div",features:es,visible:et,name:"Popover.Panel"}),et&&f&&c.default.createElement(I.Hidden,{id:A,ref:D,features:I.HiddenFeatures.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:eu})))))}),el=Object.assign(en,{Button:ei,Backdrop:er,Overlay:ea,Panel:eo,Group:(0,B.forwardRefWithAs)(function(e,t){let s=(0,c.useRef)(null),n=(0,E.useSyncRefs)(s,t),[i,a]=(0,c.useState)([]),r=(0,m.useEvent)(e=>{a(t=>{let s=t.indexOf(e);if(-1!==s){let e=t.slice();return e.splice(s,1),e}return t})}),o=(0,m.useEvent)(e=>(a(t=>[...t,e]),()=>r(e))),l=(0,m.useEvent)(()=>{var e;let t=(0,F.getRootNode)(s.current);if(!t)return!1;let n=(0,F.getActiveElement)(s.current);return!!(null!=(e=s.current)&&e.contains(n))||i.some(e=>{var s,i;return(null==(s=t.getElementById(e.buttonId.current))?void 0:s.contains(n))||(null==(i=t.getElementById(e.panelId.current))?void 0:i.contains(n))})}),u=(0,m.useEvent)(e=>{for(let t of i)t.buttonId.current!==e&&t.close()}),d=(0,c.useMemo)(()=>
1({registerPopover:o,unregisterPopover:r,isFocusWithinPopoverGroup:l,closeOthers:u}),[o,r,l,u]),p=(0,S.useSlot)({}),f=(0,B.useRender)();return c.default.createElement(_.MainTreeProvider,null,c.default.createElement(z.Provider,{value:d},f({ourProps:{ref:n},theirProps:e,slot:p,defaultTag:"div",name:"Popover.Group"})))})});var eu=e.i(275048),ec=e.i(679618),ed=e.i(50680);let ep=e=>{let t=(0,eu.useIsCurrentPageLink)(e.menuLink),s=(0,ec.useIsParentPageLink)(e.menuLink,e.locale),l=(0,c.useRef)(null);return e.menuLink.subPageLinks||e.menuLink.subPageGroups?(0,n.jsx)("li",{children:(0,n.jsx)(el,{children:({open:u,close:c})=>(0,n.jsxs)("div",{style:{position:"relative"},children:[(0,n.jsxs)("div",{className:(0,o.classNames)(ed.default.popoverButtonContainer,s&&ed.default.isParentPage,u&&ed.default.active),children:[(0,n.jsx)(i.default,{href:e.menuLink.href,"aria-current":t?"page":s?"true":void 0,className:(0,o.classNames)((s||u)&&ed.default.active),children:e.menuLink.name}),(0,n.jsx)(ei,{ref:l,"aria-haspopup":!0,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&setTimeout(()=>l.current?.focus(),0)},"aria-label":(0,r.interpolate)(e.dictionary.subMenuButtonLabel,{subject:e.menuLink.name}),children:(0,n.jsx)(a.ChevronRightIcon,{})})]}),(0,n.jsxs)(em,{open:u,children:[(0,n.jsx)(ef,{locale:e.locale,subPageLinks:e.menuLink.subPageLinks,closePopover:c}),e.menuLink.subPageGroups&&(0,n.jsx)("div",{className:ed.default.subPageGroups,style:{"--grid-cols":2},children:e.menuLink.subPageGroups.map(t=>(0,n.jsx)(ef,{locale:e.locale,groupTitle:t.name,subPageLinks:t.subPageLinks,closePopover:c},t.name))})]})]})})}):(0,n.jsx)("li",{children:(0,n.jsx)(i.default,{href:e.menuLink.href,"aria-current":t?"page":void 0,className:(0,o.classNames)(s&&ed.default.active),children:e.menuLink.name})})},em=e=>{let t=(0,c.useRef)(null);return(0,c.useLayoutEffect)(()=>{if(!t.current)return;t.current.focus();let e=t.current.getBoundingClientRect(),s=-Math.max(e.left+e.width-window.innerWidth,0);t.current.style.left=`${s}px`},[e.open]),(0,n.jsx)(eo,{className:ed.default.popoverPanel,ref:t,children:e.children})},ef=e=>e.subPageLinks?(0,n.jsxs)("div",{className:ed.default.subPageLinks,children:[e.groupTitle&&(0,n.jsx)("h2",{className:ed.default.subPagesGroupTitle,children:e.groupTitle}),(0,n.jsx)("ul",{children:e.subPageLinks.map(t=>(0,n.jsx)(eh,{locale:e.locale,subPageLink:t,closePopover:e.closePopover},t.name))})]}):null,eh=e=>{let t=(0,eu.useIsCurrentPageLink)(e.subPageLink),s=(0,ec.useIsParentPageLink)(e.subPageLink,e.locale);return(0,n.jsxs)("li",{children:[(0,n.jsxs)(i.default,{href:e.subPageLink.href,"aria-current":t?"page":void 0,onClick:e.closePopover,className:(0,o.classNames)((e.subPageLink.subPageLinks?s:t)&&ed.default.active),style:{minWidth:"max-content"},children:[(0,n.jsx)(a.ChevronRightIcon,{}),(0,n.jsx)("span",{children:e.subPageLink.name})]}),(0,n.jsx)(ef,{locale:e.locale,subPageLinks:e.subPageLink.subPageLinks,closePopover:e.closePopover})]})};e.s(["default",0,e=>(0,n.jsx)("nav",{"aria-label":e.ariaLabel,className:ed.default.wrapper,children:(0,n.jsx)("ul",{className:ed.default.laptopMenu,children:e.menuLinks.map(t=>(0,n.jsx)(ep,{menuLink:t,locale:e.locale,dictionary:e.dictionary},t.name))})})],282806)},342691,e=>{e.v({mobileMenuButton:"styles-module-scss-module__p0P8ka__mobileMenuButton"})},484662,e=>{"use strict";var t=e.i(843476),s=e.i(920029);let n=()=>(0,t.jsx)("svg",{"aria-hidden":!0,width:"18",height:"12",viewBox:"0 0 18 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{d:"M1 12H17C17.55 12 18 11.55 18 11C18 10.45 17.55 10 17 10H1C0.45 10 0 10.45 0 11C0 11.55 0.45 12 1 12ZM1 7H17C17.55 7 18 6.55 18 6C18 5.45 17.55 5 17 5H1C0.45 5 0 5.45 0 6C0 6.55 0.45 7 1 7ZM0 1C0 1.55 0.45 2 1 2H17C17.55 2 18 1.55 18 1C18 0.45 17.55 0 17 0H1C0.45 0 0 0.45 0 1Z",fill:"white"})});var i=e.i(886148),a=e.i(863951),r=e.i(342691);e.s(["default",0,e=>{let{open:o}=(0,a.useMobileMenuState)();return(0,t.jsx)(i.DisclosureButton,{"aria-live":"polite",className:r.default.mobileMenuButton,children:o?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{children:e.dictionary.close}),(0,t.jsx)(s.CloseIcon,{})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{children:e.dictionary.open}),(0,t.jsx)(n,{})]})})}],484662)},863951,e=>{"use strict";var t=e.i(843476),s=e.i(886148),n=e.i(271645);let i=(0,n.createContext)(null);e.s(["default",0,function(e){return(0,t.jsx)(s.Disclosure,{children:s=>(0,t.jsx)(i.Provider,{value:s,children:e.children})})},"useMobileMenuState",0,()=>(0,n.useContext)(i)])},489797,e=>{e.v({active:"styles-module-scss-module___aEmCW__active",menuItem:"styles-module-scss-module___aEmCW__menuItem",mobileMenu:"styles-module-scss-module___aEmCW__mobileMenu",subPageLinks:"styles-module-scss-module___aEmCW__subPageLinks",subPagesGroupTitle:"styles-module-scss-module___aEmCW__subPagesGroupTitle"})},554052,e=>{"use strict";var t=e.i(843476);e.i(28339);var s=e.i(184202),n=e.i(470618),i=e.i(932966),a=e.i(970496),r=e.i(886148),o=e.i(275048),l=e.i(679618),u=e.i(863951),c=e.i(489797);let d=e=>{let{close:d}=(0,u.useMobileMenuState)(),m=(0,o.useIsCurrentPageLink)(e.menuLink),f=(0,l.useIsParentPageLink)(e.menuLink,e.locale);return e.menuLink.subPageLinks||e.menuLink.subPageGroups?(0,t.jsx)(r.Disclosure,{children:(0,t.jsxs)("li",{children:[(0,t.jsxs)("div",{className:(0,a.classNames)(c.default.menuItem,f&&c.default.active),children:[(0,t.jsx)(s.default,{onClick:d,href:e.menuLink.href,"aria-current":m?"page":void 0,children:e.menuLink.name}),(0,t.jsx)(r.DisclosureButton,{"aria-label":(0,i.interpolate)(e.dictionary.subMenuButtonLabel,{subject:e.menuLink.name}),children:(0,t.jsx)(n.ChevronRightIcon,{})})]}),(0,t.jsxs)(r.DisclosurePanel,{children:[(0,t.jsx)(p,{locale:e.locale,subPageLinks:e.menuLink.subPageLinks}),e.menuLink.subPageGroups?.map(s=>(0,t.jsx)(p,{locale:e.locale,groupTitle:s.name,subPageLinks:s.subPageLinks},s.name))]})]})}):(0,t.jsx)("li",{className:(0,a.classNames)(c.default.menuItem,f&&c.default.active),children:(0,t.jsx)(s.default,{onClick:d,href:e.menuLink.href,"aria-current":m?"page":void 0,children:e.menuLink.name})})},p=e=>e.subPageLinks?(0,t.jsxs)("div",{className:c.default.subPageLinks,children:[e.groupTitle&&(0,t.jsx)("h2",{className:c.default.subPagesGroupTitle,children:e.groupTitle}),(0,t.jsx)("ul",{children:e.subPageLinks.map(s=>(0,t.jsx)(m,{locale:e.locale,subPageLink:s},s.name))})]}):null,m=e=>{let{close:i}=(0,u.useMobileMenuState)(),r=(0,o.useIsCurrentPageLink)(e.subPageLink),d=(0,l.useIsParentPageLink)(e.subPageLink,e.locale);return(0,t.jsxs)("li",{children:[(0,t.jsxs)(s.default,{onClick:i,href:e.subPageLink.href,"aria-current":r?"page":void 0,className:(0,a.classNames)((e.subPageLink.subPageLinks?d:r)&&c.default.active),children:[(0,t.jsx)(n.ChevronRightIcon,{}),(0,t.jsx)("span",{children:e.subPageLink.name})]}),(0,t.jsx)(p,{locale:e.locale,subPageLinks:e.subPageLink.subPageLinks})]})};e.s(["default",0,e=>{let{open:s}=(0,u.useMobileMenuState)();return(0,t.jsx)("nav",{"aria-label":e.ariaLabel,style:{display:s?void 0:"none"},children:(0,t.jsx)(r.DisclosurePanel,{as:"ul",className:c.default.mobileMenu,children:e.menuLinks.map(s=>(0,t.jsx)(d,{locale:e.locale,menuLink:s,dictionary:e.dictionary},s.name))})})}])},275048,679618,e=>{"use strict";var t=e.i(618566);e.s(["useIsCurrentPageLink",0,e=>(0,t.usePathname)()===e.href],275048),e.s(["useIsParentPageLink",0,(e,s)=>{let n=(0,t.usePathname)(),i=e.href===`/${s}`,a=i&&n===`/${s}`,r=!i&&n.includes(e.href);return a||r}],679618)},304816,e=>
1{e.v({toTopLink:"styles-module-scss-module__Fa4iwq__toTopLink",visible:"styles-module-scss-module__Fa4iwq__visible"})},192514,e=>{"use strict";var t=e.i(843476);e.i(28339);var s=e.i(184202),n=e.i(970496),i=e.i(618566),a=e.i(271645),r=e.i(304816);e.s(["default",0,e=>{let[o,l]=(0,a.useState)(!1),u=(0,i.usePathname)(),c=(0,a.useCallback)(()=>{l(document.getElementById("main").getBoundingClientRect().top<-200)},[]);return(0,a.useEffect)(()=>(document.addEventListener("scroll",c),()=>document.removeEventListener("scroll",c)),[c]),u!==`/${e.locale}`?(0,t.jsx)(s.default,{prefetch:!1,href:"#main",className:(0,n.classNames)(r.default.toTopLink,o&&r.default.visible),children:e.children}):null}])},897713,e=>{"use strict";var t=e.i(843476),s=e.i(618566),n=e.i(3303),i=e.i(271645);e.s(["default",0,e=>{let a=(0,s.usePathname)();return(0,i.useEffect)(()=>{let e=window._paq=window._paq||[];e.push(["setCustomUrl",location.href]),e.push(["setDocumentTitle",document.title]),e.push(["trackPageView"]),e.push(["setReferrerUrl",location.href])},[a]),(0,t.jsx)(n.default,{id:"matomo",children:` 2 var _paq = window._paq = window._paq || []; 3 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ 4 _paq.push(['disableCookies']); 5 _paq.push(['enableLinkTracking']); 6 (function() { 7 var u="${e.trackerUrl}"; 8 _paq.push(['setTrackerUrl', u+'matomo.php']); 9 _paq.push(['setSiteId', '${e.siteID}']); 10 var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; 11 g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); 12 })(); 13`})}])},960852,e=>{"use strict";var t=e.i(843476),s=e.i(317812),n=e.i(936725),i=e.i(970496),a=e.i(695741),r=e.i(996648);e.s(["default",0,e=>{let{setIsCompareModalOpen:o,languages:l,selectedLanguage:u,setSelectedLanguage:c}=(0,a.useDocumentViewState)();return l.length>1?(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)("div",{className:r.default.languageSelection,children:[(0,t.jsx)("span",{className:r.default.title,children:e.title}),(0,t.jsxs)("div",{className:r.default.languageButtons,children:[l.map(s=>(0,t.jsxs)("button",{"aria-current":s===u?"true":void 0,className:(0,i.classNames)(r.default.languageButton,s===u&&r.default.active),onClick:()=>c(s),children:[(0,t.jsx)(n.DocumentIcon,{}),(0,t.jsx)("span",{children:e.dictionary.language[s]})]},s)),l.includes("fin")&&l.includes("swe")&&(0,t.jsx)("button",{className:r.default.compareButton,"aria-label":e.dictionary.detailedCompare,onClick:()=>o(!0),children:(0,t.jsx)(s.default,{children:e.dictionary.compare})})]})]})}):null}])},248372,e=>{"use strict";var t=e.i(843476),s=e.i(92093),n=e.i(470618),i=e.i(886148);e.i(271645);var a=e.i(996648);e.s(["default",0,function(e){return(0,t.jsx)(i.Disclosure,{as:"div",className:a.default.draftMode,defaultOpen:!0,children:({open:r})=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.DisclosureButton,{className:a.default.header,children:[(0,t.jsx)(s.SectionTitle,{as:"h1",styleAs:"h3",color:"#fff",markerColor:"#fff",children:e.title}),(0,t.jsx)("span",{className:r?a.default.isOpen:a.default.isClosed,children:(0,t.jsx)(n.ChevronRightIcon,{})})]}),(0,t.jsx)(i.DisclosurePanel,{className:a.default.bodyContainer,children:(0,t.jsx)("div",{className:a.default.body,children:e.children})})]})})}])},996648,e=>{e.v({active:"styles-module-scss-module__YNUCWG__active",body:"styles-module-scss-module__YNUCWG__body",bodyContainer:"styles-module-scss-module__YNUCWG__bodyContainer",compareButton:"styles-module-scss-module__YNUCWG__compareButton",draftMode:"styles-module-scss-module__YNUCWG__draftMode",header:"styles-module-scss-module__YNUCWG__header",isClosed:"styles-module-scss-module__YNUCWG__isClosed",isOpen:"styles-module-scss-module__YNUCWG__isOpen",languageButton:"styles-module-scss-module__YNUCWG__languageButton",languageButtons:"styles-module-scss-module__YNUCWG__languageButtons",languageSelection:"styles-module-scss-module__YNUCWG__languageSelection",title:"styles-module-scss-module__YNUCWG__title"})},639579,e=>{e.v({button:"styles-module-scss-module__XbEN9a__button",close:"styles-module-scss-module__XbEN9a__close",input:"styles-module-scss-module__XbEN9a__input",mobileInputWrapper:"styles-module-scss-module__XbEN9a__mobileInputWrapper",mobileWrapper:"styles-module-scss-module__XbEN9a__mobileWrapper",searchToggle:"styles-module-scss-module__XbEN9a__searchToggle"})},122408,e=>{"use strict";var t=e.i(843476),s=e.i(920029),n=e.i(623753),i=e.i(854878),a=e.i(271645),r=e.i(639579);e.s(["default",0,e=>{let[o,l]=(0,a.useState)(!1);return(0,t.jsxs)("div",{className:r.default.mobileWrapper,children:[(0,t.jsx)("button",{className:r.default.searchToggle,"aria-label":e.buttonLabels.openSearch,onClick:()=>l(!0),children:(0,t.jsx)(n.SearchIcon,{})}),(0,t.jsx)(i.Dialog,{open:o,onClose:()=>l(!1),children:(0,t.jsxs)(i.DialogPanel,{className:r.default.mobileInputWrapper,children:[e.searchForm,(0,t.jsx)("button",{className:r.default.close,"aria-label":e.buttonLabels.closeSearch,onClick:()=>l(!1),children:(0,t.jsx)(s.CloseIcon,{})})]})})]})}])},584249,e=>{"use strict";let t,s=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u
13037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";RegExp("^"+("["+s+"]["+s)+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");t="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");let n=":A-Za-z_Ã-ÃÃ-öø-˿Ͱ-ͽͿ-ÒÒ-á¿¿â-ââ°-ââ°-⿯ã-í¿ï¤-ï·ï·°-�",i=":A-Za-z_Ã-˿Ͱ-ͽͿ-ÒÒ-á¿¿â-ââ°-ââ°-⿯ã-í¿ï¤-ï·ï·°-�ð-󯿿",a=(e,t,s="")=>{let n=e.replace(":",""),i=t.replace(":",""),a=`[${n}][${i}]*`;return{name:RegExp(`^[${e}][${t}]*$`,s),ncName:RegExp(`^${a}$`,s),qName:RegExp(`^${a}(?::${a})?$`,s),nmToken:RegExp(`^[${t}]+$`,s),nmTokens:RegExp(`^[${t}]+(?:\\s+[${t}]+)*$`,s)}},r=a(n,n+"\\-\\.\\d·Ì-ͯâ¿-â"),o=a(i,i+"\\-\\.\\d·Ì-ͯÒâ¿-â","u"),l=":A-Za-z_",u=a(l,l+"\\-\\.\\d"),c=new Map,d=new Uint8Array(63904).fill(255);for(let e of[48,1632,1776,2406,2534,2662,2790,2918,3046,3174,3302,3430,3558,3664,3792,3872,4160,4240,6112,6160,6470,6608,6784,6800,6992,7088,7232,7248,65296,120782,120792,120802,120812,120822,66720,68912,69734,69872,69942,70096,70384,70736,70864,71248,71360,71472,71904,72016,72688,72784,73040,73120,73552,92768,92864,93008,123200,123632,124144,125264,130032])for(let t=0;t<10;t++){let s=e+t;s<=65535?d[s-1632]=t:c.set(s,t)}Object.freeze({ALLOW:"allow",BLOCK:"block",THROW:"throw"}),Object.freeze({allow:0,leave:1,remove:2,throw:3});let p=[{id:"sql-block-comment-open",description:"SQL block comment open: /* ... */ â unusual in legitimate user text",pattern:/\/\*/},{id:"sql-union-select",description:"UNION SELECT â most common SQL injection aggregation attack",pattern:/\bUNION\s{1,20}(?:ALL\s{1,20})?SELECT\b/i},{id:"sql-drop-table",description:"DROP TABLE â destructive DDL injection",pattern:/\bDROP\s{1,20}TABLE\b/i},{id:"sql-drop-database",description:"DROP DATABASE â destructive DDL injection",pattern:/\bDROP\s{1,20}DATABASE\b/i},{id:"sql-insert-into",description:"INSERT INTO â data injection",pattern:/\bINSERT\s{1,20}INTO\b/i},{id:"sql-delete-from",description:"DELETE FROM â data deletion injection",pattern:/\bDELETE\s{1,20}FROM\b/i},{id:"sql-update-set",description:"UPDATE ... SET â data modification injection",pattern:/\bUPDATE\b[\s\S]{1,60}\bSET\b/i},{id:"sql-exec-xp",description:"EXEC xp_ â MSSQL extended stored procedure execution",pattern:/\bEXEC(?:UTE)?\s{1,20}xp_/i},{id:"sql-tautology-string",description:'Classic string tautology: \' OR \'1\'=\'1 or " OR "1"="1"',pattern:/'\s{0,10}OR\s{0,10}'[^']{0,20}'\s*=\s*'[^']{0,20}/i},{id:"sql-tautology-numeric",description:"Numeric tautology: OR 1=1",pattern:/\bOR\s{1,10}1\s*=\s*1\b/i},{id:"sql-always-true-zero",description:"Numeric tautology: OR 0=0",pattern:/\bOR\s{1,10}0\s*=\s*0\b/i},{id:"sql-sleep-benchmark",description:"Time-based blind injection: SLEEP() or BENCHMARK()",pattern:/\b(?:SLEEP|BENCHMARK)\s*\(/i},{id:"sql-waitfor-delay",description:"MSSQL time-based blind injection: WAITFOR DELAY",pattern:/\bWAITFOR\s{1,20}DELAY\b/i},{id:"sql-char-function",description:"CHAR() function â used to obfuscate injected strings",pattern:/\bCHAR\s*\(\s*\d{1,3}/i},{id:"sql-information-schema",description:"INFORMATION_SCHEMA â reconnaissance query for table/column enumeration",pattern:/\bINFORMATION_SCHEMA\b/i}],m=[...p,{id:"sql-line-comment",description:"SQL line comment: -- followed by whitespace or end of string",pattern:/--(?:\s|$)/},{id:"sql-stacked-query",description:"Stacked queries: semicolon immediately followed by a SQL keyword",pattern:/;\s{0,10}(?:SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC)\b/i},{id:"sql-hex-encoding",description:"Hex-encoded string injection: 0x41414141 style (MySQL)",pattern:/\b0x[0-9a-f]{4,}/i}],f=[{id:"html-script-open",description:"<script opening tag",pattern:/<script[\s>/]/i},{id:"html-script-close",description:"</script closing tag",pattern:/<\/script[\s>]/i},{id:"html-javascript-protocol",description:"javascript: URI scheme (with optional whitespace/encoding)",pattern:/j[\t\n\r ]*a[\t\n\r ]*v[\t\n\r ]*a[\t\n\r ]*s[\t\n\r ]*c[\t\n\r ]*r[\t\n\r ]*i[\t\n\r ]*p[\t\n\r ]*t[\t\n\r ]*:/i},{id:"html-vbscript-protocol",description:"vbscript: URI scheme",pattern:/vbscript[\t\n\r ]*:/i},{id:"html-data-html",description:"data:text/html URI â can execute scripts in browsers",pattern:/data[\t\n\r ]*:[\t\n\r ]*text\/html/i},{id:"html-data-xhtml",description:"data:application/xhtml+xml URI",pattern:/data[\t\n\r ]*:[\t\n\r ]*application\/xhtml/i},{id:"html-data-svg",description:"data:image/svg+xml URI â can execute scripts",pattern:/data[\t\n\r ]*:[\t\n\r ]*image\/svg\+xml/i},{id:"html-inline-event-handler",description:"Inline event handler attributes: onclick=, onerror=, onload=, etc.",pattern:/\bon\w{1,30}\s*=/i},{id:"html-entity-obfuscated-script",description:"HTML-entity-encoded <script (e.g. <script or <script)",pattern:/(?:�*3[Cc];?|�*60;?|<
13)\s*script/i},{id:"html-entity-obfuscated-javascript",description:'HTML-entity-encoded javascript: (partial â catches common j or j for "j")',pattern:/(?:�*6[Aa];?|�*106;?)\s*(?:�*61;?|a)[\s\S]{0,80}script\s*:/i},{id:"html-style-expression",description:"CSS expression() â IE-era code execution in style attributes",pattern:/style[\s\S]{0,20}expression\s*\(/i},{id:"html-object-embed",description:"<object or <embed tags that can load active content",pattern:/<(?:object|embed)[\s>/]/i},{id:"html-base-tag",description:"<base href= â can hijack all relative URLs on a page",pattern:/<base[\s>]/i},{id:"html-meta-refresh",description:'<meta http-equiv="refresh" â can redirect users',pattern:/<meta[\s\S]{0,40}http-equiv[\s\S]{0,20}refresh/i},{id:"html-srcdoc",description:"srcdoc= attribute on iframes â embeds HTML that can run scripts",pattern:/srcdoc\s*=/i},{id:"html-iframe",description:"<iframe tag",pattern:/<iframe[\s>/]/i},{id:"html-form",description:"<form tag â can be used for phishing / credential harvesting injection",pattern:/<form[\s>/]/i}],h=[{id:"xml-cdata-injection",description:"CDATA section injection: <![CDATA[ breaks out of text node context",pattern:/<!\[CDATA\[/i},{id:"xml-cdata-close",description:"CDATA close sequence: ]]> can terminate an enclosing CDATA section",pattern:/\]\]>/},{id:"xml-processing-instruction",description:"XML processing instruction: <?xml-stylesheet or <?php etc.",pattern:/<\?(?:xml[\- ]|php|asp)/i},{id:"xml-doctype-injection",description:"DOCTYPE declaration embedded in content â can define entities",pattern:/<!DOCTYPE(?:[\s[]|$)/i},{id:"xml-entity-system",description:"SYSTEM keyword â used in external entity declarations (XXE)",pattern:/\bSYSTEM\s+["']/i},{id:"xml-entity-public",description:"PUBLIC keyword â used in external entity declarations (XXE)",pattern:/\bPUBLIC\s+["']/i},{id:"xml-entity-declaration",description:"<!ENTITY declaration â defines entities, potential XXE or entity expansion",pattern:/<!ENTITY[\s%]/i},{id:"xml-billion-laughs",description:"Entity reference chaining / billion laughs: repeated &eX; style references",pattern:/(?:&\w{1,20};){3,}/},{id:"xml-namespace-confusion",description:"xmlns: attribute injection â can redefine namespaces to confuse parsers",pattern:/\bxmlns\s*(?::\w{1,40})?\s*=/i},{id:"xml-comment-injection",description:"<!-- comment injection â can hide content from some parsers",pattern:/<!--/},{id:"xml-comment-close",description:"--> closes an enclosing XML comment",pattern:/-->/},{id:"xml-pi-close",description:"?> closes an enclosing processing instruction",pattern:/\?>/}],b
vendor: 2,121 bytes, line 13
13=[{id:"svg-script-element",description:"<script element inside SVG executes JavaScript",pattern:/<script[\s>/]/i},{id:"svg-xlink-href-javascript",description:"xlink:href with javascript: â classic SVG XSS via <a> or <use>",pattern:/xlink\s*:\s*href\s*=\s*["']?\s*javascript\s*:/i},{id:"svg-href-javascript",description:"href= with javascript: in SVG context (<a>, <animate>, etc.)",pattern:/href\s*=\s*["']?\s*javascript\s*:/i},{id:"svg-foreignobject",description:"<foreignObject embeds HTML inside SVG â can execute scripts",pattern:/<foreignObject[\s>/]/i},{id:"svg-use-external",description:"<use xlink:href or href pointing to external resource (non-fragment URL)",pattern:/<use[\s\S]{0,60}(?:xlink\s*:\s*)?href\s*=\s*(?:["'][^#]|[^"'#\s>])/i},{id:"svg-animate-href",description:'<animate attributeName="href" â can dynamically change href to javascript:',pattern:/<animate[\s\S]{0,80}attributeName\s*=\s*["'][\s]*href["']/i},{id:"svg-animate-xlinkhref",description:'<animate attributeName="xlink:href"',pattern:/<animate[\s\S]{0,80}attributeName\s*=\s*["'][\s]*xlink\s*:\s*href["']/i},{id:"svg-set-javascript",description:'<set to="javascript:..." â sets an attribute to a javascript: URI',pattern:/<set[\s\S]{0,80}to\s*=\s*["']?\s*javascript\s*:/i},{id:"svg-event-handler",description:"SVG-specific event handler attributes: onload=, onerror=, onactivate=, etc.",pattern:/\bon(?:load|error|activate|begin|end|repeat|focus|blur|click|mouse\w{1,20}|key\w{1,20})\s*=/i},{id:"svg-handler-generic",description:"Generic on* handler catch-all for SVG attributes",pattern:/\bon\w{1,30}\s*=/i},{id:"svg-filter-feimage",description:"<feImage href= â filter primitive that can load external resources",pattern:/<feImage[\s\S]{0,80}(?:xlink\s*:\s*)?href\s*=/i},{id:"svg-image-external",description:"<image xlink:href with http/https or javascript protocol",pattern:/<image[\s\S]{0,80}(?:xlink\s*:\s*)?href\s*=\s*["']?\s*(?:https?|javascript)\s*:/i},{id:"svg-style-javascript",description:"style= attribute containing javascript: (e.g. background:url(javascript:...))",pattern:/style\s*=[\s\S]{0,60}javascript\s*:/i}],
13g=[{id:"shell-path-traversal-unix",description:"Unix path traversal: ../ â climbing the directory tree",pattern:/\.\.\//},{id:"shell-path-traversal-windows",description:"Windows path traversal: ..\\ â climbing the directory tree",pattern:/\.\.\\/},{id:"shell-path-traversal-encoded",description:"URL-encoded path traversal: %2e%2e or %2f variants",pattern:/%2e%2e|%2f\.\.|\.\.%2f/i},{id:"shell-null-byte",description:"Null byte injection: \\x00 or %00 â truncates strings in C-backed functions",pattern:/\x00|%00/},{id:"shell-semicolon",description:"Semicolon command separator: cmd1; cmd2",pattern:/;/},{id:"shell-pipe",description:"Pipe operator: cmd1 | cmd2",pattern:/\|/},{id:"shell-and-operator",description:"AND operator: cmd1 && cmd2",pattern:/&&/},{id:"shell-or-operator",description:"OR operator: cmd1 || cmd2",pattern:/\|\|/},{id:"shell-backtick",description:"Backtick command substitution: `cmd`",pattern:/`/},{id:"shell-dollar-paren",description:"Dollar-paren command substitution: $(cmd)",pattern:/\$\(/},{id:"shell-dollar-brace",description:"Dollar-brace variable expansion: ${var} â can be abused for injection",pattern:/\$\{/},{id:"shell-redirect-out",description:"Output redirection: cmd > file or cmd >> file",pattern:/>{1,2}/}
13,{id:"shell-redirect-in",description:"Input redirection: cmd < file",pattern:/</},{id:"shell-newline-injection",description:"Newline injection: \\n or \\r â can inject new shell commands",pattern:/[\n\r]/},{id:"shell-glob-star",description:"Glob expansion: * or ? â can expand to unintended files",pattern:/[/\\][*?]/},{id:"shell-absolute-root",description:"Absolute root path injection: string starting with / or \\ (Windows UNC)",pattern:/^(?:\/|\\\\)/},{id:"shell-windows-drive",description:"Windows drive letter path injection: C:\\ or D:/",pattern:/^[a-zA-Z]:[/\\]/},{id:"shell-curl-wget",description:"curl/wget with URL or flags â can exfiltrate data or download payloads",pattern:/\b(?:curl|wget)\s+(?:https?:\/\/|ftp:\/\/|-)/i}],v=[{id:"redos-nested-quantifier-plus",description:"Nested + quantifier inside a group with outer quantifier: (a+)+, (.+b)*, etc.",pattern:/\([^)]*\+[^)]*\)[+*]/},{id:"redos-nested-quantifier-star",description:"Nested * quantifier: (a*)* or (a*)+ â catastrophic backtracking",pattern:/\([^)]*\*[^)]*\)[*+]/},{id:"redos-nested-groups",description:"Doubly nested quantified groups: ((a+)+) â guaranteed catastrophic",pattern:/\(\([^)]{0,40}\)[+*]\)[+*]/},{id:"redos-alternation-overlap",description:"Overlapping alternation under quantifier: (a|a)+ â ambiguous NFA paths",pattern:/\(([^|()]{1,20})\|(?:\1)(?:\|[^|()]{1,20}){0,5}\)[+*?]{1,2}/},{id:"redos-star-plus-concat",description:"(x*x)+ pattern â triggers super-linear backtracking",pattern:/\([^)]{0,10}\*[^)]{0,10}\)[+*]/},{id:"redos-dot-star-greedy",description:"(.*){n,} or (.+){n,} â repeated greedy dot quantifiers",pattern:/\(\.[*+]\)\{?\d/},{id:"redos-large-repetition",description:"Very large fixed or range repetition count {1000,} or {1000,n} â denial of service via backtracking",pattern:/\{\d{4,}(?:,\d*)?\}/},{id:"redos-catastrophic-alternation",description:"Long alternation with many similar branches â polynomial backtracking risk",pattern:/\([^)]{0,200}(?:\|[^|)]{0,50}){9,}\)/}],x="[\"'\\s]*:",y=[{id:"nosql-where-operator",description:"$where â executes arbitrary JavaScript server-side in MongoDB",pattern:RegExp(`\\$where${x}`,"i")},{id:"nosql-ne-operator",description:'$ne â "not equal" operator used to bypass equality checks',pattern:RegExp(`\\$ne${x}`,"i")},{id:"nosql-gt-operator",description:'$gt â "greater than" used to bypass password/value checks',pattern:RegExp(`\\$gte?${x}`,"i")},{id:"nosql-lt-operator",description:'$lt / $lte â "less than" bypass variants',pattern:RegExp(`\\$lte?${x}`,"i")},{id:"nosql-regex-operator",description:"$regex â can be used to extract data character by character (blind injection)",pattern:RegExp(`\\$regex${x}`,"i")},{id:"nosql-or-operator",description:"$or â logical OR; used to create always-true conditions",pattern:RegExp(`\\$or${x}\\s*\\[`,"i")},{id:"nosql-and-operator",description:"$and â logical AND operator injection",pattern:RegExp(`\\$and${x}\\s*\\[`,"i")},{id:"nosql-nor-operator",description:"$nor â logical NOR operator injection",pattern:RegExp(`\\$nor${x}\\s*\\[`,"i")},{id:"nosql-exists-operator",description:"$exists â can enumerate fields to determine schema",pattern:RegExp(`\\$exists${x}`,"i")},{id:"nosql-in-operator",description:"$in â matches any value in a list; can enumerate values",pattern:RegExp(`\\$in${x}\\s*\\[`,"i")},{id:"nosql-expr-operator",description:"$expr â allows aggregation expressions in queries (MongoDB 3.6+)",pattern:RegExp(`\\$expr${x}`,"i")},{id:"nosql-function-operator",description:"$function â executes arbitrary JavaScript in MongoDB 4.4+",pattern:RegExp(`\\$function${x}`,"i")},{id:"nosql-accumulator-operator",description:"$accumulator â custom aggregation with arbitrary JS execution",pattern:RegExp(`\\$accumulator${x}`,"i")},{id:"nosql-proto-pollution",description:"__proto__ â prototype pollution via object key injection",pattern:/__proto__/},{id:"nosql-constructor-prototype",description:"constructor.prototype â alternative prototype pollution vector (dot notation or JSON key)",pattern:/constructor[\s"':.,{\[]*prototype/i},{id:"nosql-proto-bracket",description:'["__proto__"] â bracket-notation prototype pollution',pattern:/\[["']__proto__["']\]/}],_=[{id:"log-crlf-injection",description:"CRLF injection: literal \\r or \\n embeds fake log lines",pattern:/[\r\n]/},{id:"log-url-encoded-crlf",description:"URL-encoded CRLF: %0d, %0a, %0D, %0A â decoded by some log parsers",pattern:/%0[dDaA]/},{id:"log-unicode-newline",description:"Unicode newline variants: U+2028 (line separator), U+2029 (paragraph separator)",pattern:/[\u2028\u2029]/},{id:"log-log4shell-jndi",description:"Log4Shell: ${jndi:...} triggers remote code execution in Apache Log4j",pattern:/\$\{jndi\s*:/i},{id:"log-log4shell-obfuscated",description:"Obfuscated Log4Shell: ${::-j}... lookup-bypass prefix used to evade WAF detection",pattern:/\$\{::-/},{id:"log-log4j-lookup",description:"Log4j lookup syntax: ${env:...}, ${sys:...}, ${ctx:...} â data exfiltration",pattern:/\$\{(?:env|sys|ctx|main|map|sd|web|docker|k8s|spring)\s*:/i},{id:"log-ssti-double-brace",description:"SSTI double-brace: {{expression}} â Jinja2, Twig, Handlebars, etc.",pattern:/\{\{[\s\S]{0,80}\}\}/},{id:"log-ssti-hash-brace",description:"SSTI hash-brace: #{expression} â Thymeleaf, Velocity, Ruby ERB",pattern:/#\{[\s\S]{0,80}\}/},{id:"log-ssti-dollar-brace",description:"SSTI/EL injection: ${expression with operators or method calls} â JSP EL, Freemarker, SpEL",pattern:/\$\{[^}]*(?:\.|\(|\*|\+|\bclass\b|\bruntime\b|\bprocess\b|\bexec\b)[^}]{0,80}\}/i},{id:"log-ssti-percent-tag",description:"SSTI ERB/ASP tag: <%= expression %> â Ruby ERB, ASP",pattern:/<%=[\s\S]{0,80}%>/},{id:"log-null-byte",description:"Null byte: \\x00 or %00 â can truncate log entries in C-backed loggers",pattern:/\x00|%00/},{id:"log-ansi-escape",description:"ANSI escape sequence: ESC[ â can manipulate terminal output when logs are tailed",pattern:/\x1b\[/}];f.label="HTML",h.label="XML",b.label="SVG",p.label="SQL",m.label="SQL-STRICT",g.label="SHELL",v.label="REDOS",y.label="NOSQL",_.label="LOG",Object.freeze({HTML:f,XML:h,SVG:b,SQL:p,"SQL-STRICT":m,SHELL:g,REDOS:v,NOSQL:y,LOG:_}),RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm"),(class{constructor(e){this.tagname=e,this.child=[],this[":@"]=Object.create(null)}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e,t){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child}),this.addStartIndex(t)}addStartIndex(e){void 0!==e&&(this.child[this.child.length-1][t]={startIndex:e})}addEndIndex(e){let s=this.child[this.child.length-1];void 0!==s&&void 0!==s[t]&&void 0===s[t].endIndex&&(s[t].endIndex=e)}static getMetaDataSymbol(){return t}}).getMetaDataSymbol();var P=e.i(618566),S=e.i(271645);e.s(["CleanHashProvider",0,function({children:e}){let t;return t=(0,P.useRouter)(),(0,S.useEffect)(()=>
13{if(window.location.hash){let e=(e=>{if(!e)return"";let t=e;return(t=t.replace(/v\d+/g,"")).replace(/__heading$/,"")})(window.location.hash);e!==window.location.hash&&(t.replace(window.location.pathname+e),setTimeout(()=>{let t=e.substring(1),s=document.getElementById(t);s&&s.scrollIntoView()},50))}},[t]),e}],584249)}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.