-
Notifications
You must be signed in to change notification settings - Fork 0
/
header-footer.js.map
1 lines (1 loc) · 332 KB
/
header-footer.js.map
1
{"version":3,"file":"header-footer.js","sources":["../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-element/lit-element.js","../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../node_modules/@lit/reactive-element/decorators/base.js","../node_modules/@lit/reactive-element/decorators/query-assigned-elements.js","../src/components/base/outline-element/outline-element.ts","../src/components/tufts/tufts-pulse/tufts-pulse.css.lit.ts","../src/components/tufts/tufts-pulse/tufts-pulse.ts","../node_modules/lit-html/directives/if-defined.js","../src/components/tufts/tufts-menu/tufts-menu.css.lit.ts","../node_modules/lit-html/directive.js","../node_modules/lit-html/directives/class-map.js","../src/components/base/outline-icon/outline-icon.css.lit.ts","../node_modules/lit-html/directives/unsafe-html.js","../node_modules/lit-html/directives/unsafe-svg.js","../src/internal/event.ts","../src/internal/watch.ts","../src/components/base/outline-icon/libraries/library.system.ts","../src/components/base/outline-icon/library.ts","../src/components/base/outline-icon/libraries/library.bootstrap.ts","../src/components/base/outline-icon/libraries/library.boxicons.ts","../src/components/base/outline-icon/libraries/library.lucide.ts","../src/components/base/outline-icon/libraries/library.heroicons.ts","../src/components/base/outline-icon/libraries/library.iconoir.ts","../src/components/base/outline-icon/libraries/library.ionicons.ts","../src/components/base/outline-icon/libraries/library.jam.ts","../src/components/base/outline-icon/libraries/library.fontawesome.ts","../src/components/base/outline-icon/libraries/library.material.ts","../src/components/base/outline-icon/libraries/library.remix.ts","../src/components/base/outline-icon/libraries/library.unicons.ts","../src/components/base/outline-icon/libraries/library.custom.ts","../src/components/base/outline-include/request.ts","../src/components/base/outline-icon/request.ts","../src/resolved-outline-config.ts","../src/components/base/outline-icon/outline-icon.ts","../src/components/tufts/tufts-icon/tufts-icon.ts","../src/components/tufts/tufts-heading/tufts-heading.css.lit.ts","../node_modules/lit-html/static.js","../src/components/controllers/slot-ng-controller.ts","../src/components/tufts/tufts-heading/tufts-heading.ts","../node_modules/linkset-es6/dist/core/linkset.js","../node_modules/linkset-es6/dist/core/link.js","../node_modules/linkset-es6/dist/index.js","../node_modules/decoupled-menu-parser-es6/dist/core/menu-element.js","../node_modules/decoupled-menu-parser-es6/dist/core/menu.js","../node_modules/decoupled-menu-parser-es6/dist/index.js","../src/components/tufts/tufts-menu/tufts-menu.ts","../src/components/tufts/tufts-container/tufts-container.css.lit.ts","../src/components/controllers/resize-controller.ts","../src/utilities/debounce.ts","../src/components/controllers/reveal-trigger.ts","../src/components/tufts/tufts-container/tufts-container.ts","../src/components/tufts/tufts-header/tufts-header.css.lit.ts","../src/utilities/dialog.ts","../src/components/tufts/tufts-header/logo-markup.ts","../src/components/tufts/tufts-button/tufts-button.css.lit.ts","../src/components/tufts/tufts-button/tufts-button.ts","../src/components/tufts/tufts-header/tufts-header.ts","../node_modules/@lit/reactive-element/decorators/query.js","../src/components/tufts/tufts-social-links/tufts-social-links.css.lit.ts","../src/components/tufts/tufts-social-links/tufts-social-links.ts","../src/components/tufts/tufts-footer/tufts-footer.css.lit.ts","../src/components/tufts/tufts-footer/tufts-footer.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=window,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),n=new WeakMap;class o{constructor(t,e,n){if(this._$cssResult$=!0,n!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=n.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&n.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new o(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const n=1===t.length?t[0]:e.reduce(((e,s,n)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[n+1]),t[0]);return new o(n,t,s)},S=(s,n)=>{e?s.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((e=>{const n=document.createElement(\"style\"),o=t.litNonce;void 0!==o&&n.setAttribute(\"nonce\",o),n.textContent=e.cssText,s.appendChild(n)}))},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{o as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as i}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var s;const e=window,r=e.trustedTypes,h=r?r.emptyScript:\"\",o=e.reactiveElementPolyfillSupport,n={toAttribute(t,i){switch(i){case Boolean:t=t?h:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,i){let s=t;switch(i){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch(t){s=null}}return s}},a=(t,i)=>i!==t&&(i==i||t==t),l={attribute:!0,type:String,converter:n,reflect:!1,hasChanged:a};class d extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var i;this.finalize(),(null!==(i=this.h)&&void 0!==i?i:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((i,s)=>{const e=this._$Ep(s,i);void 0!==e&&(this._$Ev.set(e,s),t.push(e))})),t}static createProperty(t,i=l){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){const s=\"symbol\"==typeof t?Symbol():\"__\"+t,e=this.getPropertyDescriptor(t,s,i);void 0!==e&&Object.defineProperty(this.prototype,t,e)}}static getPropertyDescriptor(t,i,s){return{get(){return this[i]},set(e){const r=this[t];this[i]=e,this.requestUpdate(t,r,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||l}static finalize(){if(this.hasOwnProperty(\"finalized\"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty(\"properties\")){const t=this.properties,i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const s of i)this.createProperty(s,t[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(i){const s=[];if(Array.isArray(i)){const e=new Set(i.flat(1/0).reverse());for(const i of e)s.unshift(t(i))}else void 0!==i&&s.push(t(i));return s}static _$Ep(t,i){const s=i.attribute;return!1===s?void 0:\"string\"==typeof s?s:\"string\"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var i,s;(null!==(i=this._$ES)&&void 0!==i?i:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(s=t.hostConnected)||void 0===s||s.call(t))}removeController(t){var i;null===(i=this._$ES)||void 0===i||i.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,i)=>{this.hasOwnProperty(i)&&(this._$Ei.set(i,this[i]),delete this[i])}))}createRenderRoot(){var t;const s=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return i(s,this.constructor.elementStyles),s}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostConnected)||void 0===i?void 0:i.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostDisconnected)||void 0===i?void 0:i.call(t)}))}attributeChangedCallback(t,i,s){this._$AK(t,s)}_$EO(t,i,s=l){var e;const r=this.constructor._$Ep(t,s);if(void 0!==r&&!0===s.reflect){const h=(void 0!==(null===(e=s.converter)||void 0===e?void 0:e.toAttribute)?s.converter:n).toAttribute(i,s.type);this._$El=t,null==h?this.removeAttribute(r):this.setAttribute(r,h),this._$El=null}}_$AK(t,i){var s;const e=this.constructor,r=e._$Ev.get(t);if(void 0!==r&&this._$El!==r){const t=e.getPropertyOptions(r),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(s=t.converter)||void 0===s?void 0:s.fromAttribute)?t.converter:n;this._$El=r,this[r]=h.fromAttribute(i,t.type),this._$El=null}}requestUpdate(t,i,s){let e=!0;void 0!==t&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||a)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),!0===s.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,s))):e=!1),!this.isUpdatePending&&e&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,i)=>this[i]=t)),this._$Ei=void 0);let i=!1;const s=this._$AL;try{i=this.shouldUpdate(s),i?(this.willUpdate(s),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostUpdate)||void 0===i?void 0:i.call(t)})),this.update(s)):this._$Ek()}catch(t){throw i=!1,this._$Ek(),t}i&&this._$AE(s)}willUpdate(t){}_$AE(t){var i;null===(i=this._$ES)||void 0===i||i.forEach((t=>{var i;return null===(i=t.hostUpdated)||void 0===i?void 0:i.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,i)=>this._$EO(i,this[i],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}d.finalized=!0,d.elementProperties=new Map,d.elementStyles=[],d.shadowRootOptions={mode:\"open\"},null==o||o({ReactiveElement:d}),(null!==(s=e.reactiveElementVersions)&&void 0!==s?s:e.reactiveElementVersions=[]).push(\"1.6.1\");export{d as ReactiveElement,n as defaultConverter,a as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=window,s=i.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,o=\"$lit$\",n=`lit$${(Math.random()+\"\").slice(9)}$`,l=\"?\"+n,h=`<${l}>`,r=document,d=()=>r.createComment(\"\"),u=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,c=Array.isArray,v=t=>c(t)||\"function\"==typeof(null==t?void 0:t[Symbol.iterator]),a=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${a}(?:([^\\\\s\"'>=/]+)(${a}*=${a}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,w=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=w(1),b=w(2),T=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),E=new WeakMap,C=r.createTreeWalker(r,129,null,!1),P=(t,i)=>{const s=t.length-1,l=[];let r,d=2===i?\"<svg>\":\"\",u=f;for(let i=0;i<s;i++){const s=t[i];let e,c,v=-1,a=0;for(;a<s.length&&(u.lastIndex=a,c=u.exec(s),null!==c);)a=u.lastIndex,u===f?\"!--\"===c[1]?u=_:void 0!==c[1]?u=m:void 0!==c[2]?(y.test(c[2])&&(r=RegExp(\"</\"+c[2],\"g\")),u=p):void 0!==c[3]&&(u=p):u===p?\">\"===c[0]?(u=null!=r?r:f,v=-1):void 0===c[1]?v=-2:(v=u.lastIndex-c[2].length,e=c[1],u=void 0===c[3]?p:'\"'===c[3]?$:g):u===$||u===g?u=p:u===_||u===m?u=f:(u=p,r=void 0);const w=u===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";d+=u===f?s+h:v>=0?(l.push(e),s.slice(0,v)+o+s.slice(v)+n+w):s+n+(-2===v?(l.push(void 0),i):w)}const c=d+(t[s]||\"<?>\")+(2===i?\"</svg>\":\"\");if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return[void 0!==e?e.createHTML(c):c,l]};class V{constructor({strings:t,_$litType$:i},e){let h;this.parts=[];let r=0,u=0;const c=t.length-1,v=this.parts,[a,f]=P(t,i);if(this.el=V.createElement(a,e),C.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(h=C.nextNode())&&v.length<c;){if(1===h.nodeType){if(h.hasAttributes()){const t=[];for(const i of h.getAttributeNames())if(i.endsWith(o)||i.startsWith(n)){const s=f[u++];if(t.push(i),void 0!==s){const t=h.getAttribute(s.toLowerCase()+o).split(n),i=/([.?@])?(.*)/.exec(s);v.push({type:1,index:r,name:i[2],strings:t,ctor:\".\"===i[1]?k:\"?\"===i[1]?I:\"@\"===i[1]?L:R})}else v.push({type:6,index:r})}for(const i of t)h.removeAttribute(i)}if(y.test(h.tagName)){const t=h.textContent.split(n),i=t.length-1;if(i>0){h.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)h.append(t[s],d()),C.nextNode(),v.push({type:2,index:++r});h.append(t[i],d())}}}else if(8===h.nodeType)if(h.data===l)v.push({type:2,index:r});else{let t=-1;for(;-1!==(t=h.data.indexOf(n,t+1));)v.push({type:7,index:r}),t+=n.length-1}r++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function N(t,i,s=t,e){var o,n,l,h;if(i===T)return i;let r=void 0!==e?null===(o=s._$Co)||void 0===o?void 0:o[e]:s._$Cl;const d=u(i)?void 0:i._$litDirective$;return(null==r?void 0:r.constructor)!==d&&(null===(n=null==r?void 0:r._$AO)||void 0===n||n.call(r,!1),void 0===d?r=void 0:(r=new d(t),r._$AT(t,s,e)),void 0!==e?(null!==(l=(h=s)._$Co)&&void 0!==l?l:h._$Co=[])[e]=r:s._$Cl=r),void 0!==r&&(i=N(t,r._$AS(t,i.values),r,e)),i}class S{constructor(t,i){this.u=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(t){var i;const{el:{content:s},parts:e}=this._$AD,o=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:r).importNode(s,!0);C.currentNode=o;let n=C.nextNode(),l=0,h=0,d=e[0];for(;void 0!==d;){if(l===d.index){let i;2===d.type?i=new M(n,n.nextSibling,this,t):1===d.type?i=new d.ctor(n,d.name,d.strings,this,t):6===d.type&&(i=new z(n,this,t)),this.u.push(i),d=e[++h]}l!==(null==d?void 0:d.index)&&(n=C.nextNode(),l++)}return o}p(t){let i=0;for(const s of this.u)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class M{constructor(t,i,s,e){var o;this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cm=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cm}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===(null==t?void 0:t.nodeType)&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=N(this,t,i),u(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==T&&this.g(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):v(t)?this.k(t):this.g(t)}S(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.S(t))}g(t){this._$AH!==A&&u(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){var i;const{values:s,_$litType$:e}=t,o=\"number\"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=V.createElement(e.h,this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===o)this._$AH.p(s);else{const t=new S(o,this),i=t.v(this.options);t.p(s),this.T(i),this._$AH=t}}_$AC(t){let i=E.get(t.strings);return void 0===i&&E.set(t.strings,i=new V(t)),i}k(t){c(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const o of t)e===i.length?i.push(s=new M(this.S(d()),this.S(d()),this,this.options)):s=i[e],s._$AI(o),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cm=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class R{constructor(t,i,s,e,o){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=o,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=N(this,t,i,0),n=!u(t)||t!==this._$AH&&t!==T,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l<o.length-1;l++)h=N(this,e[s+l],i,l),h===T&&(h=this._$AH[l]),n||(n=!u(h)||h!==this._$AH[l]),h===A?t=A:t!==A&&(t+=(null!=h?h:\"\")+o[l+1]),this._$AH[l]=h}n&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:\"\")}}class k extends R{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}const H=s?s.emptyScript:\"\";class I extends R{constructor(){super(...arguments),this.type=4}j(t){t&&t!==A?this.element.setAttribute(this.name,H):this.element.removeAttribute(this.name)}}class L extends R{constructor(t,i,s,e,o){super(t,i,s,e,o),this.type=5}_$AI(t,i=this){var s;if((t=null!==(s=N(this,t,i,0))&&void 0!==s?s:A)===T)return;const e=this._$AH,o=t===A&&e!==A||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,n=t!==A&&(e===A||o);o&&this.element.removeEventListener(this.name,this,e),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,s;\"function\"==typeof this._$AH?this._$AH.call(null!==(s=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==s?s:this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){N(this,t)}}const Z={P:o,A:n,M:l,C:1,L:P,D:S,R:v,V:N,I:M,H:R,N:I,U:L,F:k,B:z},j=i.litHtmlPolyfillSupport;null==j||j(V,M),(null!==(t=i.litHtmlVersions)&&void 0!==t?t:i.litHtmlVersions=[]).push(\"2.7.0\");const B=(t,i,s)=>{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new M(i.insertBefore(d(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l};export{Z as _$LH,x as html,T as noChange,A as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as i}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var l,o;const r=t;class s extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(i,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return i}}s.finalized=!0,s._$litElement$=!0,null===(l=globalThis.litElementHydrateSupport)||void 0===l||l.call(globalThis,{LitElement:s});const n=globalThis.litElementPolyfillSupport;null==n||n({LitElement:s});const h={_$AK:(t,e,i)=>{t._$AK(e,i)},_$AL:t=>t._$AL};(null!==(o=globalThis.litElementVersions)&&void 0!==o?o:globalThis.litElementVersions=[]).push(\"3.3.0\");export{s as LitElement,r as UpdatingElement,h as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=e=>n=>\"function\"==typeof n?((e,n)=>(customElements.define(e,n),n))(e,n):((e,n)=>{const{kind:t,elements:s}=n;return{kind:t,elements:s,finisher(n){customElements.define(e,n)}}})(e,n);export{e as customElement};\n//# sourceMappingURL=custom-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst i=(i,e)=>\"method\"===e.kind&&e.descriptor&&!(\"value\"in e.descriptor)?{...e,finisher(n){n.createProperty(e.key,i)}}:{kind:\"field\",key:Symbol(),placement:\"own\",descriptor:{},originalKey:e.key,initializer(){\"function\"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(n){n.createProperty(e.key,i)}};function e(e){return(n,t)=>void 0!==t?((i,e,n)=>{e.constructor.createProperty(n,i)})(e,n,t):i(e,n)}export{e as property};\n//# sourceMappingURL=property.js.map\n","import{property as r}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function t(t){return r({...t,state:!0})}export{t as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,o)=>{Object.defineProperty(t,o,e)},t=(e,t)=>({kind:\"method\",placement:\"prototype\",key:t.key,descriptor:e}),o=({finisher:e,descriptor:t})=>(o,n)=>{var r;if(void 0===n){const n=null!==(r=o.originalKey)&&void 0!==r?r:o.key,i=null!=t?{kind:\"method\",placement:\"prototype\",key:n,descriptor:t(o.key)}:{...o,key:n};return null!=e&&(i.finisher=function(t){e(t,n)}),i}{const r=o.constructor;void 0!==t&&Object.defineProperty(o,n,t(n)),null==e||e(r,n)}};export{o as decorateProperty,e as legacyPrototypeMethod,t as standardPrototypeMethod};\n//# sourceMappingURL=base.js.map\n","import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var n;const e=null!=(null===(n=window.HTMLSlotElement)||void 0===n?void 0:n.prototype.assignedElements)?(o,n)=>o.assignedElements(n):(o,n)=>o.assignedNodes(n).filter((o=>o.nodeType===Node.ELEMENT_NODE));function l(n){const{slot:l,selector:t}=null!=n?n:{};return o({descriptor:o=>({get(){var o;const r=\"slot\"+(l?`[name=${l}]`:\":not([name])\"),i=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(r),s=null!=i?e(i,n):[];return t?s.filter((o=>o.matches(t))):s},enumerable:!0,configurable:!0})})}export{l as queryAssignedElements};\n//# sourceMappingURL=query-assigned-elements.js.map\n","// import { CSSResultGroup, LitElement } from 'lit';\nimport { LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\n// import componentStyles from './outline-element.css.lit';\n\n@customElement('outline-element')\nexport class OutlineElement extends LitElement {\n // static styles: CSSResultGroup = [componentStyles];\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'outline-element': OutlineElement;\n }\n}\n","\nimport { css } from 'lit';\nexport default css`\n/* Apply standardized box sizing to the component. */\n:host {\n box-sizing: border-box;\n}\n:host *,\n:host *::before,\n:host *::after {\n box-sizing: inherit;\n}\n/* Apply proper CSS for accessibly hiding elements to each component. */\n.visually-hidden {\n position: absolute !important;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n width: 1px;\n height: 1px;\n word-wrap: normal;\n}\n/* Apply component specific CSS */\n.pulse{max-height:100%;max-width:var(--max-size);position:absolute}.top-right{right:0;top:0;transform:rotate(0deg)}.bottom-right{bottom:0;right:0;transform:rotate(90deg)}.bottom-left{bottom:0;left:0;transform:rotate(180deg)}.top-left{left:0;top:0;transform:rotate(270deg)}@media (prefers-reduced-motion:no-preference){.pulse{--scale-speed:0.15}.arc-1,.arc-2,.arc-3,.arc-4{transform-origin:top right}.pulse:hover .arc-1{--scale:1.5;animation:calc(var(--scale-speed)*1s) ease-in 0s 2 alternate animating-multiple-properties}.pulse:hover .arc-2{--scale:1.3;animation:calc(var(--scale-speed)*1s) ease-in .1s 2 alternate animating-multiple-properties}.pulse:hover .arc-3{--scale:1.1;animation:calc(var(--scale-speed)*1s) ease-in .2s 2 alternate animating-multiple-properties}.pulse:hover .arc-4{--scale:1.05;animation:calc(var(--scale-speed)*1s) ease-in .3s 2 alternate animating-multiple-properties}@keyframes animating-multiple-properties{0%{transform:scale(1)}to{transform:scale(var(--scale))}}}`;","import { CSSResultGroup, TemplateResult, html } from 'lit';\nimport { OutlineElement } from '../../base/outline-element/outline-element';\nimport { customElement, property } from 'lit/decorators.js';\nimport componentStyles from './tufts-pulse.css.lit';\nenum pulseOrientation {\n 'top-right',\n 'bottom-right',\n 'bottom-left',\n 'top-left',\n}\n/**\n * The TuftsPulse component\n * @element tufts-pulse\n *\n * @attr orientation\n * @attr max-size\n * @attr pulse-top-alignment\n */\n@customElement('tufts-pulse')\nexport class TuftsPulse extends OutlineElement {\n static styles: CSSResultGroup = [componentStyles];\n /**\n * The orientation of the pulse.\n **/\n @property({\n type: String,\n reflect: true,\n attribute: 'orientation',\n converter: orientation => {\n if (orientation && !(orientation in pulseOrientation)) {\n orientation = 'top-right';\n }\n return orientation;\n },\n })\n orientation: pulseOrientation;\n\n /**\n * Optional max-size for the pulse\n **/\n @property({\n type: String,\n reflect: true,\n attribute: 'max-size',\n })\n maxSize = '650px';\n\n @property({\n type: String,\n reflect: true,\n attribute: 'pulse-top-alignment',\n })\n pulseTopAlignment = false;\n\n render(): TemplateResult {\n return html`\n ${this.maxSize\n ? html` <style>\n .pulse {\n --max-size: ${this.maxSize};\n }\n </style>`\n : null}\n ${this.pulseSVG()}\n `;\n }\n\n /**\n * pulseSVG template\n *\n * @returns - The pulse symbol.\n */\n pulseSVG(): TemplateResult {\n return html`\n <svg\n class=\"pulse ${this.orientation} ${this.pulseTopAlignment}\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 100 100\"\n >\n <circle\n class=\"arc-4\"\n cx=\"100%\"\n cy=\"0%\"\n r=\"90%\"\n fill=\"var(--dark-blue)\"\n />\n <circle\n class=\"arc-3\"\n cx=\"100%\"\n cy=\"0%\"\n r=\"67.5%\"\n fill=\"var(--medium-blue)\"\n />\n <circle\n class=\"arc-2\"\n cx=\"100%\"\n cy=\"0%\"\n r=\"45%\"\n fill=\"var(--core-blue)\"\n />\n <circle\n class=\"arc-1\"\n cx=\"100%\"\n cy=\"0%\"\n r=\"22.5%\"\n fill=\"var(--light-blue)\"\n />\n </svg>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'tufts-pulse': TuftsPulse;\n }\n}\n","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const l=l=>null!=l?l:t;export{l as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","\nimport { css } from 'lit';\nexport default css`\n/* Apply standardized box sizing to the component. */\n:host {\n box-sizing: border-box;\n}\n:host *,\n:host *::before,\n:host *::after {\n box-sizing: inherit;\n}\n/* Apply proper CSS for accessibly hiding elements to each component. */\n.visually-hidden {\n position: absolute !important;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n width: 1px;\n height: 1px;\n word-wrap: normal;\n}\n/* Apply component specific CSS */\nnav{font-family:var(--ff-body)}nav.header-utility-menu.mobile ul{display:flex;flex-direction:column;gap:1rem;list-style:none;margin:0;padding:0}nav.header-utility-menu.mobile a{color:var(--white);text-decoration:none}nav.header-utility-menu.mobile a:hover{text-decoration:underline}nav.header-utility-menu.mobile li:last-child a:before{-webkit-margin-end:.67rem;color:var(--white);content:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='11' fill='none'%3E%3Cpath fill='%23fff' d='M6 5.5A2.666 2.666 0 1 0 6 .167 2.666 2.666 0 1 0 6 5.5Zm0 1.333C4.22 6.833.667 7.727.667 9.5v1.333h10.667V9.5c0-1.773-3.554-2.667-5.334-2.667Z'/%3E%3C/svg%3E\");margin-inline-end:.67rem}nav.header-utility-menu:not(.mobile) ul{display:flex;flex-wrap:wrap;gap:2rem;justify-content:end;list-style:none;margin:0;padding:0}nav.header-utility-menu:not(.mobile) li:nth-child(2):before{color:var(--white);content:\"|\";padding-right:calc(2rem - 4px)}nav.header-utility-menu:not(.mobile) li:last-child a:before{color:var(--white);content:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='11' fill='none'%3E%3Cpath fill='%23fff' d='M6 5.5A2.666 2.666 0 1 0 6 .167 2.666 2.666 0 1 0 6 5.5Zm0 1.333C4.22 6.833.667 7.727.667 9.5v1.333h10.667V9.5c0-1.773-3.554-2.667-5.334-2.667Z'/%3E%3C/svg%3E\");margin:0 .67rem}nav.header-utility-menu:not(.mobile) a{color:var(--white);font-size:var(--fs-h6);font-weight:var(--fw-bold);text-decoration:none}nav.header-utility-menu:not(.mobile) a:hover{text-decoration:underline}nav.main-menu.mobile ul{color:#fff;display:flex;flex-direction:column;font-weight:var(--fw-semibold);list-style-type:none;margin:0;padding:0}nav.main-menu.mobile ul:not(.menu--level-1){-webkit-padding-start:1rem;gap:1rem;padding-block:1rem;padding-inline-start:1rem}nav.main-menu.mobile li.menu--level-1{display:grid;grid-template-areas:\"link button\" \"children children\";justify-content:space-between}nav.main-menu.mobile a{align-self:center;color:#fff;min-width:160px;padding:.5rem;text-decoration:none}nav.main-menu.mobile [aria-expanded=false]+ul{display:none}nav.main-menu.mobile .dropdown-button{background-color:initial;border:none;color:#fff;cursor:pointer;padding:1rem}nav.main-menu.mobile .dropdown-button[aria-expanded=true] .dropdown-icon{transform:rotate(180deg)}nav.main-menu.mobile .with-title{align-items:center;display:flex;font-family:var(--ff-body);font-size:var(--fs-lg);font-weight:var(--fw-semibold);grid-area:link/link/button/button;justify-content:space-between}nav.main-menu.mobile .dropdown-icon{display:flex}@media (prefers-reduced-motion:no-preference){nav.main-menu.mobile .dropdown-icon{transition-duration:.3s}}nav.main-menu:not(.mobile) ul{display:flex;flex-wrap:wrap;list-style-type:none;margin:0;padding:0}nav.main-menu:not(.mobile) li{position:relative}nav.main-menu:not(.mobile) li:not(:has(button)){margin-right:2rem}nav.main-menu:not(.mobile) ul.menu--level-2,nav.main-menu:not(.mobile) ul.menu--level-3{background-color:var(--black-100);border-radius:0 0 16px 16px;border-top:2px solid var(--dark-green);box-shadow:3px 3px 11px rgba(0,0,0,.05),8px 10px 26px rgba(0,0,0,.19);display:flex;flex-direction:column;gap:1rem;left:0;min-width:-moz-max-content;min-width:max-content;padding:1.5rem;position:absolute;top:2.5rem;z-index:1}nav.main-menu:not(.mobile) li.menu--level-1{-webkit-padding-after:1rem;align-items:center;display:flex;padding-block-end:1rem}nav.main-menu:not(.mobile) li.menu--level-1 .dropdown-button{background:transparent;border:none;color:var(--chevron-color--light-mode);color:var(--chevron-color--dark-mode,var(--chevron-color--light-mode));cursor:pointer;margin-inline:2px .5rem;padding-block:.5rem;padding-inline:calc(.5rem - 2px) 1.5rem}nav.main-menu:not(.mobile) li.menu--level-1 .dropdown-button[aria-expanded=true] .dropdown-icon{transform:rotate(180deg)}nav.main-menu:not(.mobile) li.menu--level-1 .with-title{align-items:center;color:var(--text-color--light-mode);color:var(--text-color--dark-mode,var(--text-color--light-mode));display:flex;font-family:var(--ff-body);font-size:var(--fs-lg);font-weight:var(--fw-semibold)}nav.main-menu:not(.mobile) li.menu--level-1 .with-title .dropdown-icon{margin-left:.5rem}nav.main-menu:not(.mobile) li.menu--level-1 a{color:var(--text-color--light-mode);color:var(--text-color--dark-mode,var(--text-color--light-mode));font-weight:var(--fw-semibold);outline-offset:3px;text-decoration-thickness:2px;text-underline-offset:.5rem}nav.main-menu:not(.mobile) li.menu--level-1 a:hover{color:var(--link-hover-color--light-mode);color:var(\n --link-hover-color--dark-mode,var(--link-hover-color--light-mode)\n )}nav.main-menu:not(.mobile) .dropdown-icon{display:flex}@media (prefers-reduced-motion:no-preference){nav.main-menu:not(.mobile) .dropdown-icon{transition-duration:.3s}}nav.main-menu:not(.mobile) li.menu--level-2 a{color:var(--medium-blue);font-weight:400;text-decoration-thickness:1px}nav.main-menu:not(.mobile) li.menu--level-2 a:hover{color:var(--medium-blue)}nav.main-menu:not(.mobile) [aria-expanded=false]+ul{display:none}nav.main-menu:not(.mobile) ul.menu--level-2:has(ul){-moz-column-gap:3rem;column-gap:3rem;flex-direction:row}nav.main-menu:not(.mobile) ul.menu--level-3{-webkit-margin-before:1rem;background-color:revert;border-top:revert;box-shadow:revert;flex-direction:column;margin-block-start:1rem;padding:0;position:static}nav.main-menu:not(.mobile) a{text-decoration:none}nav.main-menu:not(.mobile) a:hover{text-decoration:underline}nav.feature-links-menu ul{color:var(--white);list-style-type:none;margin:0;padding:0}nav.feature-links-menu ul.menu--level-1{margin-top:2rem}nav.feature-links-menu li{margin-top:.75rem}nav.feature-links-menu a{color:#fff;font-size:var(--fs-2xl);font-weight:var(--fw-semibold);outline-offset:3px;text-decoration:none;text-decoration-thickness:2px;text-underline-offset:.5rem}nav.feature-links-menu a:hover{text-decoration:underline}nav.header-menu-menu ul{color:var(--white);display:flex;flex-wrap:wrap;list-style-type:none;margin:0;padding:0}nav.header-menu-menu ul.menu--level-1{-moz-column-gap:4rem;column-gap:4rem;margin-top:3.5rem}nav.header-menu-menu li.menu--level-1{color:var(--light-blue-25)}nav.header-menu-menu li.menu--level-1 a{color:var(--white);font-size:var(--fs-lg);font-weight:var(--fw-semibold);text-decoration:none}nav.header-menu-menu li.menu--level-1 a:hover{text-decoration:underline}nav.header-menu-menu li.menu--level-1 a.menu--level-1{color:var(--light-blue-25);display:flex;font-size:var(--fs-h6);font-weight:var(--fw-semibold);line-height:var(--lh-h6);text-transform:uppercase}nav.header-menu-menu ul.menu--level-2{flex-direction:column}nav.header-menu-menu li.menu--level-2{margin-top:.5rem;text-transform:none}nav.header-menu-menu li.menu--level-2 a{color:var(--white);font-size:18px;font-weight:var(--fw-semibold);text-decoration:none}nav.header-menu-menu li.menu--level-2 a:hover{text-decoration:underline}nav.header-menu-menu button{display:none}nav.header-menu-menu li.menu--level-3{margin-top:.5rem}nav.footer-menu{max-width:max(320px,60vw)}nav.footer-menu ul{display:flex;flex-wrap:wrap;gap:5rem;list-style:none;padding:0}nav.footer-menu ul.menu--level-2{flex-direction:column;gap:1.5rem;margin-top:1.5rem}nav.footer-menu li.menu--level-2{flex-shrink:0}nav.footer-menu tufts-heading{color:#fff}nav.footer-menu a{color:var(--light-blue-25)}nav.footer-menu a.menu--level-1{color:var(--white);font-family:var(--ff-display);font-size:var(--fs-h5);font-weight:var(--fw-normal);font-weight:var(--fw-extrabold);letter-spacing:var(--ls-h5);line-height:var(--lh-h5);text-decoration:none}nav.footer-menu a.menu--level-1:hover{text-decoration:underline}nav.footer-menu button{display:none}`;","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as i,Directive as s,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=i(class extends s{constructor(t){var i;if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||(null===(i=t.strings)||void 0===i?void 0:i.length)>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((i=>t[i])).join(\" \")+\" \"}update(i,[s]){var r,o;if(void 0===this.nt){this.nt=new Set,void 0!==i.strings&&(this.st=new Set(i.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in s)s[t]&&!(null===(r=this.st)||void 0===r?void 0:r.has(t))&&this.nt.add(t);return this.render(s)}const e=i.element.classList;this.nt.forEach((t=>{t in s||(e.remove(t),this.nt.delete(t))}));for(const t in s){const i=!!s[t];i===this.nt.has(t)||(null===(o=this.st)||void 0===o?void 0:o.has(t))||(i?(e.add(t),this.nt.add(t)):(e.remove(t),this.nt.delete(t)))}return t}});export{o as classMap};\n//# sourceMappingURL=class-map.js.map\n","\nimport { css } from 'lit';\nexport default css`\n/* Apply standardized box sizing to the component. */\n:host {\n box-sizing: border-box;\n}\n:host *,\n:host *::before,\n:host *::after {\n box-sizing: inherit;\n}\n/* Apply proper CSS for accessibly hiding elements to each component. */\n.visually-hidden {\n position: absolute !important;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n width: 1px;\n height: 1px;\n word-wrap: normal;\n}\n/* Apply component specific CSS */\n:host svg{display:flex;height:inherit;width:inherit}`;","import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.it=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import{directive as s}from\"../directive.js\";import{UnsafeHTMLDirective as e}from\"./unsafe-html.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class t extends e{}t.directiveName=\"unsafeSVG\",t.resultType=2;const o=s(t);export{o as unsafeSVG};\n//# sourceMappingURL=unsafe-svg.js.map\n","//\n// Emits a custom event with more convenient defaults.\n//\nexport function emit(el: HTMLElement, name: string, options?: CustomEventInit) {\n const event = new CustomEvent(name, {\n bubbles: true,\n cancelable: false,\n composed: true,\n detail: {},\n ...options,\n });\n el.dispatchEvent(event);\n return event;\n}\n\n//\n// Waits for a specific event to be emitted from an element. Ignores events that bubble up from child elements.\n//\nexport function waitForEvent(el: HTMLElement, eventName: string) {\n return new Promise<void>(resolve => {\n function done(event: Event) {\n if (event.target === el) {\n el.removeEventListener(eventName, done);\n resolve();\n }\n }\n\n el.addEventListener(eventName, done);\n });\n}\n","// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n\nimport type { LitElement } from 'lit';\n\ntype UpdateHandler = (prev?: unknown, next?: unknown) => void;\n\ntype NonUndefined<A> = A extends undefined ? never : A;\n\ntype UpdateHandlerFunctionKeys<T extends object> = {\n [K in keyof T]-?: NonUndefined<T[K]> extends UpdateHandler ? K : never;\n}[keyof T];\n\ninterface WatchOptions {\n /**\n * If true, will only start watching after the initial update/render\n */\n waitUntilFirstUpdate?: boolean;\n}\n\nexport function watch(propName: string, options?: WatchOptions) {\n const resolvedOptions: Required<WatchOptions> = {\n waitUntilFirstUpdate: false,\n ...options,\n };\n return <ElemClass extends LitElement>(\n proto: ElemClass,\n decoratedFnName: UpdateHandlerFunctionKeys<ElemClass>\n ): void => {\n // @ts-expect-error -- update is a protected property\n const { update } = proto;\n if (propName in proto) {\n const propNameKey = propName as keyof ElemClass;\n // @ts-expect-error -- update is a protected property\n proto.update = function (\n this: ElemClass,\n changedProps: Map<keyof ElemClass, ElemClass[keyof ElemClass]>\n ) {\n if (changedProps.has(propNameKey)) {\n const oldValue = changedProps.get(propNameKey);\n const newValue = this[propNameKey];\n\n if (oldValue !== newValue) {\n if (!resolvedOptions.waitUntilFirstUpdate || this.hasUpdated) {\n (this[decoratedFnName] as unknown as UpdateHandler)(\n oldValue,\n newValue\n );\n }\n }\n }\n\n update.call(this, changedProps);\n };\n }\n };\n}\n","import type { IconLibrary } from '../library';\n\n//\n// System icons are a separate library to ensure they're always available, regardless of how the default icon library is\n// configured or if its icons resolve properly.\n//\n// All Outline components must use the system library instead of the default library. For visual consistency, system\n// icons are a subset of Bootstrap Icons.\n//\nconst icons = {\n 'check-lg': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-check-lg\" viewBox=\"0 0 16 16\">\n <path d=\"M12.736 3.97a.733.733 0 0 1 1.047 0c.286.289.29.756.01 1.05L7.88 12.01a.733.733 0 0 1-1.065.02L3.217 8.384a.757.757 0 0 1 0-1.06.733.733 0 0 1 1.047 0l3.052 3.093 5.4-6.425a.247.247 0 0 1 .02-.022Z\"></path>\n </svg>\n `,\n 'chevron-down': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <path fill=\"currentColor\" d=\"M8.06 10.87a.83.83 0 0 1-.6-.24l-4.2-4.2a.8.8 0 0 1 0-1.17.8.8 0 0 1 1.18 0l3.62 3.59 3.6-3.6a.8.8 0 0 1 1.17 0 .8.8 0 0 1 0 1.19l-4.2 4.2a.81.81 0 0 1-.57.23Z\"/>\n </svg>\n `,\n 'chevron-left': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-chevron-left\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>\n </svg>\n `,\n 'chevron-right': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-chevron-right\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\n </svg>\n `,\n 'chevron-up': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-chevron-up\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708l6-6z\"/>\n </svg>\n `,\n 'x': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-x\" viewBox=\"0 0 16 16\">\n <path d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z\"/>\n </svg>\n `,\n 'x-circle-fill': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-x-circle-fill\" viewBox=\"0 0 16 16\">\n <path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293 5.354 4.646z\"></path>\n </svg>\n `,\n 'right-arrow': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" fill=\"currentColor\" viewBox=\"0 0 16 17\" fill=\"none\">\n <path d=\"M6.11959e-07 9.5L12.17 9.5L6.58 15.09L8 16.5L16 8.5L8 0.499999L6.59 1.91L12.17 7.5L7.86805e-07 7.5L6.11959e-07 9.5Z\" fill=\"currentColor\"/>\n </svg>\n `,\n 'right-arrow-pager': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\" >\n <path d=\"M19 12.875L8.35125 12.875L13.2425 17.7662L12 19L5 12L12 5L13.2337 6.23375L8.35125 11.125L19 11.125L19 12.875Z\" fill=\"currentColor\"/>\n </svg>\n `,\n 'left-arrow-pager': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 12.875L8.35125 12.875L13.2425 17.7662L12 19L5 12L12 5L13.2337 6.23375L8.35125 11.125L19 11.125L19 12.875Z\" fill=\"currentColor\"/>\n </svg>\n `,\n 'right-double-arrow': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M3 12.875L13.6488 12.875L8.7575 17.7662L10 19L17 12L10 5L8.76625 6.23375L13.6488 11.125L3 11.125L3 12.875Z\" fill=\"currentColor\"/>\n <path d=\"M12.9997 17.7662L18.7422 12L13.0084 6.23375L14.2422 5L21.2422 12L14.2422 19L12.9997 17.7662Z\" fill=\"currentColor\"/>\n </svg>\n `,\n 'left-double-arrow': `\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M21.2422 12.875L10.5934 12.875L15.4847 17.7662L14.2422 19L7.24219 12L14.2422 5L15.4759 6.23375L10.5934 11.125L21.2422 11.125L21.2422 12.875Z\" fill=\"currentColor\"/>\n <path d=\"M11.2425 17.7662L5.5 12L11.2337 6.23375L10 5L3 12L10 19L11.2425 17.7662Z\" fill=\"currentColor\"/>\n </svg>\n `,\n 'player': `\n <svg viewBox=\"0 0 18 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 12.5L8.062e-07 24.1913L1.82829e-06 0.808657L18 12.5Z\" fill=\"currentColor\"/>\n </svg>\n `,\n 'player-stroked': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 25\" fill=\"none\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18 12.4999L1.90735e-06 0.808593L8.85259e-07 24.1913L18 12.4999ZM14.3283 12.4999L2 4.49248L2 20.5074L14.3283 12.4999Z\" fill=\"currentColor\"/>\n </svg>\n `,\n 'search': `\n <svg viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M20.6719 19.9434L15.1758 14.4473C16.3652 13.0117 17.0215 11.166 17.0215 9.15625C17.0215 4.48047 13.166 0.625 8.49023 0.625C3.77344 0.625 0 4.48047 0 9.15625C0 13.873 3.81445 17.6875 8.49023 17.6875C10.459 17.6875 12.3047 17.0312 13.7812 15.8418L19.2773 21.3379C19.4824 21.543 19.7285 21.625 20.0156 21.625C20.2617 21.625 20.5078 21.543 20.6719 21.3379C21.082 20.9688 21.082 20.3535 20.6719 19.9434ZM1.96875 9.15625C1.96875 5.54688 4.88086 2.59375 8.53125 2.59375C12.1406 2.59375 15.0938 5.54688 15.0938 9.15625C15.0938 12.8066 12.1406 15.7188 8.53125 15.7188C4.88086 15.7188 1.96875 12.8066 1.96875 9.15625Z\" fill=\"currentColor\"/>\n </svg>\n `,\n 'hamburger-menu': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" fill=\"none\">\n <path fill=\"#0047C7\" d=\"M3.7 18h18v-2h-18v2Zm0-5h18v-2h-18v2Zm0-7v2h18V6h-18Z\"/>\n </svg>\n `,\n 'close': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M19 6.41 17.59 5l-5.6 5.59L6.42 5 5 6.41 10.59 12l-5.6 5.59L6.42 19l5.59-5.59L17.59 19l1.4-1.41L13.42 12l5.59-5.59H19Z\"/>\n </svg>\n `,\n 'magnifying-glass': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\">\n <path stroke=\"currentColor\" stroke-width=\"2\" d=\"M13.49 13.93a6 6 0 1 0-8.03-8.92 6 6 0 0 0 8.03 8.92ZM13.64 13.72l7 7\"/>\n </svg>\n `,\n 'new-window': `\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.77778 20C5.28889 20 4.87022 19.8261 4.52178 19.4782C4.17393 19.1298 4 18.7111 4 18.2222V5.77778C4 5.28889 4.17393 4.87022 4.52178 4.52178C4.87022 4.17393 5.28889 4 5.77778 4H12V5.77778H5.77778V18.2222H18.2222V12H20V18.2222C20 18.7111 19.8261 19.1298 19.4782 19.4782C19.1298 19.8261 18.7111 20 18.2222 20H5.77778ZM9.95556 15.2889L8.71111 14.0444L16.9778 5.77778H13.7778V4H20V10.2222H18.2222V7.02222L9.95556 15.2889Z\" fill=\"currentColor\"/>\n </svg>\n`,\n 'fab-facebook': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 44 44\" width=\"16\" height=\"16\" fill=\"none\">\n <path fill=\"#fff\" d=\"M22 44c12.1503 0 22-9.8497 22-22C44 9.84974 34.1503 0 22 0 9.84974 0 0 9.84974 0 22c0 12.1503 9.84974 22 22 22Z\"/>\n <path fill=\"currentColor\" d=\"M18.7598 35.125h4.5898V23.9434h3.5645L27.5 19.5h-4.1504v-3.0762c0-.6836.0977-1.2207.3906-1.5625.293-.3906.9278-.5859 1.8067-.5859h2.3437v-3.9551c-.8789-.0976-2.0508-.1953-3.4179-.1953-1.7579 0-3.125.5371-4.1504 1.5625-1.0743 1.0254-1.5625 2.4414-1.5625 4.2969V19.5H15v4.4434h3.7598V35.125Z\"/>\n </svg>\n`,\n 'fab-youtube': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 44 44\" width=\"16\" height=\"16\" fill=\"none\">\n <path fill=\"#fff\" d=\"M22 44c12.1503 0 22-9.8497 22-22C44 9.84974 34.1503 0 22 0 9.84974 0 0 9.84974 0 22c0 12.1503 9.84974 22 22 22Z\"/>\n <path fill=\"currentColor\" d=\"M34.8555 16.1797c.1953.8789.3906 2.2461.4883 4.0039l.0488 2.4414-.0488 2.4414c-.0977 1.8555-.293 3.1738-.4883 4.0527-.1953.586-.4883 1.0743-.8789 1.4649-.4395.4394-.9278.7324-1.5137.8789-.8789.2441-2.832.3906-5.957.4883L22.0625 32l-4.4434-.0488c-3.125-.0977-5.1269-.2442-5.957-.4883-.5859-.1465-1.123-.4395-1.5137-.8789-.43941-.3906-.73241-.8789-.87891-1.4649-.2441-.8789-.3906-2.1972-.4883-4.0527l-.0488-2.4414c0-.6836 0-1.5137.0488-2.4414.0977-1.7578.2442-3.125.4883-4.0039.1465-.5859.4395-1.0742.87891-1.5137.3907-.3906.9278-.6836 1.5137-.8789.8301-.1953 2.832-.3906 5.957-.4883l4.4434-.0488 4.4434.0488c3.125.0977 5.0781.293 5.957.4883.5859.1953 1.0742.4883 1.5137.8789.3906.4395.6836.9278.8789 1.5137ZM19.3281 26.6289l6.9824-4.0039-6.9824-3.9551v7.959Z\"/>\n </svg>\n`,\n 'fab-linkedin': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 44 44\" width=\"16\" height=\"16\" fill=\"none\">\n <path fill=\"#fff\" d=\"M22 44c12.1503 0 22-9.8497 22-22C44 9.84974 34.1503 0 22 0 9.84974 0 0 9.84974 0 22c0 12.1503 9.84974 22 22 22Z\"/>\n <path fill=\"currentColor\" d=\"M16.883 30.5625V15.9629h-4.541v14.5996h4.541Zm-2.246-16.6016c.683 0 1.318-.2441 1.855-.7812.488-.4883.781-1.1231.781-1.8555 0-.6836-.293-1.3183-.781-1.85545-.537-.48828-1.172-.78125-1.855-.78125-.733 0-1.367.29297-1.856.78125-.537.53715-.781 1.17185-.781 1.85545 0 .7324.244 1.3672.781 1.8555.489.5371 1.123.7812 1.856.7812Zm19.238 16.6016v-8.0078c0-2.2461-.342-3.9063-.977-4.9805-.878-1.3183-2.343-2.0019-4.443-2.0019-1.074 0-1.953.2929-2.734.7812-.733.4395-1.27.9766-1.563 1.6113h-.049v-2.0019h-4.345v14.5996h4.492v-7.2266c0-1.123.146-2.0019.488-2.5879.391-.7812 1.123-1.1718 2.197-1.1718 1.026 0 1.709.4394 2.1 1.3183.195.5371.293 1.3672.293 2.5391v7.1289h4.541Z\"/>\n </svg>\n`,\n 'fab-twitter': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 44 44\" width=\"16\" height=\"16\" fill=\"none\">\n <path fill=\"#fff\" d=\"M22 44c12.1503 0 22-9.8497 22-22C44 9.84974 34.1503 0 22 0 9.84974 0 0 9.84974 0 22c0 12.1503 9.84974 22 22 22Z\"/>\n <path fill=\"currentColor\" d=\"M32.412 17.5469c.977-.7324 1.856-1.6114 2.588-2.6856-.977.4395-1.953.7325-2.93.8301 1.075-.6836 1.856-1.6113 2.246-2.832-1.025.5859-2.099 1.0254-3.271 1.2207-.488-.4883-1.074-.8789-1.709-1.1719-.635-.293-1.318-.4394-2.051-.4394-.928 0-1.758.2441-2.539.6835-.781.4883-1.416 1.1231-1.855 1.9043-.489.7813-.684 1.6602-.684 2.5391 0 .3906 0 .7813.098 1.1719-2.1-.0977-4.053-.586-5.909-1.5625-1.855-.9278-3.369-2.1973-4.638-3.8086-.488.8301-.733 1.709-.733 2.5879 0 .8789.196 1.709.635 2.4414.391.7812.977 1.3672 1.66 1.8554-.83 0-1.611-.2441-2.295-.6835v.0976c0 1.2207.391 2.2949 1.172 3.2227.782.9765 1.758 1.5625 2.93 1.8066-.488.0977-.928.1465-1.367.1465-.293 0-.635 0-.928-.0488.293 1.0254.879 1.8554 1.758 2.539.879.6836 1.855.9766 3.027.9766-1.904 1.4648-4.053 2.1973-6.396 2.1973-.489 0-.879 0-1.221-.0489 2.344 1.5625 4.98 2.2949 7.861 2.2949 2.979 0 5.616-.7324 7.959-2.2949 2.1-1.3672 3.76-3.1738 4.932-5.5175 1.123-2.1485 1.709-4.4434 1.709-6.7872 0-.2929-.049-.4882-.049-.6347Z\"/>\n </svg>\n`,\n 'login': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\">\n <path fill=\"#00308C\" d=\"M21.22 8.1A9.96 9.96 0 0 0 6.49 3.69 10.13 10.13 0 0 0 2.8 8.1 9.96 9.96 0 0 0 12 22a9.96 9.96 0 0 0 10-10c0-1.38-.25-2.68-.77-3.9ZM14.5 19.62c-.78.24-1.62.38-2.5.38-1.67 0-3.3-.52-4.64-1.5A7.7 7.7 0 0 1 12 17c1.67 0 3.3.52 4.66 1.5-.66.48-1.38.84-2.16 1.1v.02Zm5.01-4.85a7.79 7.79 0 0 1-1.35 2.32c-.86-.65-1.8-1.15-2.86-1.54a9.86 9.86 0 0 0-6.6 0c-1.04.39-2 .89-2.84 1.54A7.7 7.7 0 0 1 4 12c0-2.22.78-4.1 2.34-5.65A7.72 7.72 0 0 1 12 4c2.2 0 4.1.78 5.66 2.34A7.72 7.72 0 0 1 20 11.99a7.9 7.9 0 0 1-.49 2.78Z\"/>\n <path fill=\"#428FEC\" d=\"M14.48 7A3.4 3.4 0 0 0 12 6a3.42 3.42 0 0 0-3.5 3.5A3.44 3.44 0 0 0 12 13c.98 0 1.8-.34 2.48-1.01A3.39 3.39 0 0 0 15.5 9.5c0-1-.34-1.8-1.02-2.5Zm-1.4 3.57c-.28.28-.64.42-1.08.42a1.43 1.43 0 0 1-1.5-1.5c0-.44.14-.79.42-1.08.28-.29.64-.42 1.08-.42.44 0 .8.15 1.08.42.28.28.42.64.42 1.08 0 .45-.14.8-.42 1.08Z\"/>\n </svg>\n `,\n 'duo-menu': `\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1 16H19V14H1V16ZM1 4V6H19V4H1Z\" fill=\"#00308C\"/>\n <path d=\"M19 11H1V9H19V11Z\" fill=\"#428FEC\"/>\n </svg>\n `,\n 'locations': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"none\" viewBox=\"0 0 20 20\">\n <path fill=\"#428FEC\" d=\"M10 10c.46 0 .85-.17 1.17-.5.33-.32.5-.7.5-1.17 0-.45-.17-.85-.5-1.17a1.6 1.6 0 0 0-1.17-.5c-.46 0-.85.17-1.18.5-.32.32-.49.72-.49 1.17 0 .46.17.85.5 1.18.32.32.71.49 1.17.49Zm0 0c.46 0 .85-.17 1.17-.5.33-.32.5-.7.5-1.17 0-.45-.17-.85-.5-1.17a1.6 1.6 0 0 0-1.17-.5c-.46 0-.85.17-1.18.5-.32.32-.49.72-.49 1.17 0 .46.17.85.5 1.18.32.32.71.49 1.17.49Zm0 0c.46 0 .85-.17 1.17-.5.33-.32.5-.7.5-1.17 0-.45-.17-.85-.5-1.17a1.6 1.6 0 0 0-1.17-.5c-.46 0-.85.17-1.18.5-.32.32-.49.72-.49 1.17 0 .46.17.85.5 1.18.32.32.71.49 1.17.49Z\"/>\n <path fill=\"#00308C\" d=\"m10 18.38-1.12-1.03a23.93 23.93 0 0 1-4.05-4.57A7.96 7.96 0 0 1 3.34 8.5 6.63 6.63 0 0 1 10 1.67c1.86 0 3.44.65 4.73 1.93a6.67 6.67 0 0 1 1.94 4.9c0 1.33-.5 2.73-1.5 4.3-.9 1.4-2.22 2.9-4.04 4.56l-1.12 1.03Zm0-2.25a22.85 22.85 0 0 0 3.77-4.25A6.5 6.5 0 0 0 15 8.5c0-1.5-.48-2.76-1.45-3.72A4.87 4.87 0 0 0 10 3.33c-1.39 0-2.59.49-3.55 1.45A5.06 5.06 0 0 0 5 8.5c0 .98.42 2.12 1.23 3.38.82 1.27 2.09 2.7 3.77 4.25Z\"/>\n </svg>\n `,\n 'doctors': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"none\" viewBox=\"0 0 20 20\">\n <path fill=\"#00308C\" fill-rule=\"evenodd\" d=\"M9.17 1.25h2.4a.83.83 0 1 1 0 1.67h-.74v3.33c0 .92.75 1.67 1.67 1.67h3.33c.92 0 1.67-.75 1.67-1.67V2.92h-.73a.83.83 0 1 1 0-1.67h2.4v5c0 1.84-1.5 3.33-3.34 3.33H12.5a3.33 3.33 0 0 1-3.33-3.33v-5Z\" clip-rule=\"evenodd\"/>\n <path fill=\"#00308C\" fill-rule=\"evenodd\" d=\"M14.17 8.75c.46 0 .83.37.83.83v4.17a5 5 0 0 1-5 5H8.33a5 5 0 0 1-5-5v-1.12a.83.83 0 1 1 1.67 0v1.12c0 1.84 1.5 3.33 3.33 3.33H10c1.84 0 3.33-1.49 3.33-3.33V9.58c0-.46.38-.83.84-.83Z\" clip-rule=\"evenodd\"/>\n <path fill=\"#428FEC\" d=\"m4.17 10.42-.43-.36c-.49-.41-.9-.77-1.21-1.07-.32-.3-.58-.57-.77-.8a2.52 2.52 0 0 1-.4-.66c-.07-.2-.11-.4-.11-.61 0-.43.15-.79.46-1.07.3-.29.69-.43 1.14-.43a1.78 1.78 0 0 1 1.32.57 1.78 1.78 0 0 1 1.31-.57c.46 0 .84.14 1.14.43.31.28.46.64.46 1.07 0 .2-.03.4-.11.6-.07.2-.2.43-.4.67-.19.23-.44.5-.76.8-.32.3-.73.66-1.22 1.07l-.42.36Z\"/>\n </svg>\n `,\n 'duo-search': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\">\n <path fill=\"#00308C\" d=\"M5.94 0a5.94 5.94 0 0 1 4.52 9.81l-.65.65A5.96 5.96 0 0 1 0 5.94 5.94 5.94 0 0 1 5.94 0Zm0 1.83a4.1 4.1 0 0 0-4.11 4.11 4.1 4.1 0 0 0 4.11 4.12 4.1 4.1 0 0 0 4.12-4.12 4.1 4.1 0 0 0-4.12-4.11Z\"/>\n <path fill=\"#428FEC\" d=\"m10.46 9.81.25.25h.72L16 14.63 14.63 16l-4.57-4.57v-.72l-.25-.25.65-.65Z\"/>\n </svg>\n `,\n 'close-mobile': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"none\" viewBox=\"0 0 20 20\">\n <path fill=\"#00308C\" d=\"M2.29 1 19 17.71 17.71 19 1 2.29 2.29 1Z\"/>\n <path fill=\"#00308C\" d=\"M1 17.71 17.71 1 19 2.29 2.29 19 1 17.71Z\"/>\n </svg>\n `,\n 'search-suggestion': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M20.75 20.45 15 14.7a5.6 5.6 0 0 1-1.78.98 6.36 6.36 0 0 1-4.02 0c-.63-.2-1.22-.5-1.75-.88l1.45-1.45a4.18 4.18 0 0 0 2.3.65c1.25 0 2.31-.44 3.19-1.31A4.34 4.34 0 0 0 15.7 9.5c0-1.25-.44-2.31-1.31-3.19A4.34 4.34 0 0 0 11.2 5a4.51 4.51 0 0 0-4.45 4.05L8 7.8l1.4 1.4-3.7 3.7L2 9.2l1.4-1.4 1.35 1.3a6.3 6.3 0 0 1 2-4.34A6.22 6.22 0 0 1 11.2 3c1.82 0 3.35.63 4.61 1.89A6.28 6.28 0 0 1 17.7 9.5c0 .7-.1 1.38-.32 2.05a5 5 0 0 1-.98 1.75l5.75 5.75-1.4 1.4Z\"/>\n </svg>\n `,\n 'monitor': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"29\" fill=\"none\" class=\"date-svg\" viewBox=\"0 0 32 29\">\n <path fill=\"currentColor\" d=\"M10.46 28.6v-2.08h3.46v-3.75H2.79c-.72 0-1.34-.26-1.85-.77a2.53 2.53 0 0 1-.77-1.86V2.9c0-.72.25-1.34.77-1.85A2.53 2.53 0 0 1 2.79.27h26.42c.72 0 1.34.25 1.85.77.52.51.77 1.13.77 1.85v17.25c0 .72-.25 1.34-.77 1.86-.51.51-1.13.77-1.85.77H18.08v3.75h3.46v2.08H10.46Zm-7.67-7.92h26.42c.14 0 .26-.05.37-.16a.52.52 0 0 0 .17-.38V2.9a.52.52 0 0 0-.17-.37.52.52 0 0 0-.37-.17H2.79a.52.52 0 0 0-.37.17.52.52 0 0 0-.17.37v17.25c0 .14.06.27.17.38.1.1.23.16.37.16Z\"/>\n </svg>\n `,\n 'target': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <path fill=\"currentColor\" d=\"M12.005 16.492a4.001 4.001 0 0 0 4-4.002 4.001 4.001 0 0 0-4.009-3.994 4.001 4.001 0 0 0-4 4.002 4.001 4.001 0 0 0 4.009 3.994Z\"/>\n <path fill=\"currentColor\" d=\"M20.943 11.495a8.998 8.998 0 0 0-7.942-7.941V1.5h-2.002v2.065a8.998 8.998 0 0 0-7.942 7.941H1v1.999h2.057a8.998 8.998 0 0 0 7.942 7.941v2.065h2.002v-2.065a8.998 8.998 0 0 0 7.942-7.941H23v-1.999h-2.057v-.011ZM12 19.491a6.99 6.99 0 0 1-6.996-6.996A6.99 6.99 0 0 1 12 5.498a6.99 6.99 0 0 1 6.996 6.997A6.997 6.997 0 0 1 12 19.49Z\"/>\n </svg>\n `,\n 'information': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\">\n <path fill=\"#008C3C\" fill-rule=\"evenodd\" d=\"M12 23.62A11.75 11.75 0 0 0 23.62 12 11.75 11.75 0 0 0 12 .37 11.75 11.75 0 0 0 .37 12 11.75 11.75 0 0 0 12 23.62Zm0-1.5a10.13 10.13 0 1 1 0-20.25 10.13 10.13 0 0 1 0 20.25ZM13.69 18c.15 0 .29-.05.4-.16.1-.11.16-.25.16-.4v-.38a.54.54 0 0 0-.16-.4.54.54 0 0 0-.4-.16h-.56V9.94a.54.54 0 0 0-.17-.4.54.54 0 0 0-.4-.17h-2.25a.54.54 0 0 0-.4.17c-.1.1-.16.24-.16.4v.37c0 .16.05.3.16.4.11.11.25.16.4.16h.56v5.63h-.56a.54.54 0 0 0-.4.16c-.1.11-.16.25-.16.4v.38c0 .15.05.29.16.4.11.1.25.16.4.16h3.38ZM12 8.25c.4 0 .76-.15 1.05-.45.3-.3.45-.64.45-1.05 0-.4-.15-.76-.45-1.05-.3-.3-.64-.45-1.05-.45-.4 0-.76.15-1.05.45-.3.3-.45.64-.45 1.05 0 .4.15.76.45 1.05.3.3.64.45 1.05.45Z\" clip-rule=\"evenodd\"/>\n </svg>\n `,\n 'alert': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\">\n <path fill=\"#C53030\" fill-rule=\"evenodd\" d=\"M12 23.63A11.75 11.75 0 0 0 23.62 12 11.75 11.75 0 0 0 12 .38 11.75 11.75 0 0 0 .37 12 11.75 11.75 0 0 0 12 23.63Zm0-1.5a10.13 10.13 0 1 1 0-20.25 10.13 10.13 0 0 1 0 20.25Zm0-3.57a1.27 1.27 0 0 0 1.31-1.31A1.27 1.27 0 0 0 12 15.94a1.27 1.27 0 0 0-1.31 1.31A1.27 1.27 0 0 0 12 18.56Zm.19-3.56c.15 0 .29-.05.4-.16.1-.11.16-.25.16-.4l.33-7.88a.42.42 0 0 0-.12-.4.6.6 0 0 0-.44-.16h-1.04a.6.6 0 0 0-.44.16c-.11.11-.15.25-.12.4l.33 7.92c0 .13.05.25.16.36.11.1.25.16.4.16h.38Z\" clip-rule=\"evenodd\"/>\n </svg>\n `,\n 'training': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"64\" fill=\"none\"><path fill=\"#9CCDFB\" d=\"M52.027 11.559v-4.85c0-2.465 1.96-4.458 4.379-4.458 2.418 0 4.373 1.999 4.373 4.458v4.85h-8.752Z\"/><path fill=\"#9CCDFB\" d=\"M61.999 12.804H50.805V6.703c0-3.144 2.51-5.703 5.6-5.703s5.594 2.559 5.594 5.703v6.101Zm-8.752-2.49h6.309V6.708c0-1.774-1.417-3.213-3.151-3.213-1.735 0-3.158 1.445-3.158 3.213v3.604Z\"/><path fill=\"#fff\" d=\"M52.029 6.703V56.58h-.013l.013.748c0 2.29-1.704 4.17-3.878 4.426-1.191 0-38.785-.006-40.733 0 2.18-.255 3.866-2.142 3.866-4.426v-1.015h.018V6.703c0-2.291 1.685-4.172 3.866-4.427 1.19 0 38.784.006 40.726 0-2.174.255-3.865 2.142-3.865 4.427Z\"/><path fill=\"#00308C\" d=\"M48.218 63H7.424l-.147-2.484c1.588-.187 2.785-1.556 2.785-3.194l.018-50.62c0-2.894 2.126-5.328 4.947-5.665h29.71c5.9 0 10.504 0 11.151-.006l.147 2.484c-1.588.187-2.785 1.556-2.785 3.194v51.118h-.025c-.238 2.683-2.277 4.85-4.934 5.167h-.067l-.006.006Zm-29.643-2.484h29.496c1.564-.212 2.736-1.569 2.736-3.181l-.037-1.992h.037V6.703a5.8 5.8 0 0 1 .947-3.182H15.247c-1.557.212-2.718 1.57-2.718 3.182v50.85h-.018a5.774 5.774 0 0 1-.947 2.95h7.023l-.012.013Z\"/><path fill=\"#9CCDFB\" d=\"M43.95 55.087v2.242c0 2.29 1.691 4.17 3.865 4.426-1.942-.006-39.536 0-40.727 0-2.18-.255-3.865-2.142-3.865-4.426v-2.242h40.726Z\"/><path fill=\"#9CCDFB\" d=\"M7.087 63h-.14C4.125 62.658 2 60.224 2 57.329v-3.487h43.17v3.487c0 1.63 1.196 3 2.784 3.193l-.146 2.484H7.087V63Zm-2.644-6.667v.996c0 1.612 1.166 2.97 2.723 3.18h36.507a5.8 5.8 0 0 1-.946-3.18v-.996H4.443Z\"/><path fill=\"#00308C\" d=\"M61.999 12.947h-2.443V6.703c0-1.775-1.417-3.213-3.151-3.213-1.735 0-3.158 1.445-3.158 3.213h-2.442c0-3.144 2.51-5.703 5.6-5.703s5.594 2.559 5.594 5.703V12.947ZM48.07 63c-2.846 0-5.343-2.652-5.343-5.671v-3.611h2.442v3.61c0 1.607 1.435 3.182 2.901 3.182V63Z\"/><path fill=\"#428FEC\" d=\"m43.227 50.842-3.084-2.173-3.084 2.173V42.2h6.168v8.64Z\"/><path fill=\"#9CCDFB\" d=\"M46.347 41.086c0 .324-.574.592-.623.903-.049.317.416.753.318 1.052-.098.305-.727.38-.867.66s.165.847-.019 1.102c-.183.255-.806.13-1.026.355-.22.224-.097.859-.348 1.046-.25.186-.806-.125-1.08.018-.276.143-.349.785-.648.884-.293.1-.72-.373-1.032-.323-.305.05-.568.635-.886.635-.317 0-.58-.586-.885-.635-.311-.05-.739.423-1.032.323-.3-.1-.373-.74-.647-.884-.281-.143-.831.168-1.081-.018-.25-.187-.129-.822-.348-1.046-.22-.224-.843-.1-1.026-.355-.184-.255.122-.822-.019-1.102-.14-.28-.77-.355-.867-.66-.098-.299.366-.735.318-1.052-.05-.311-.623-.579-.623-.903 0-.323.574-.591.623-.902.048-.318-.416-.754-.318-1.053.098-.305.727-.38.867-.66.14-.286-.165-.846.019-1.101.183-.256.806-.131 1.026-.355.22-.224.097-.86.348-1.046.25-.187.806.124 1.08-.019.275-.143.355-.784.648-.884.293-.1.72.374 1.032.324.305-.05.568-.635.886-.635.317 0 .58.585.885.635.311.05.739-.423 1.032-.324.3.1.372.741.647.884.275.143.83-.168 1.081.019.25.187.129.822.348 1.046.22.224.843.1 1.026.355.184.255-.122.821.019 1.102.14.28.77.354.867.66.097.298-.367.734-.318 1.052.05.31.623.579.623.902Z\"/><path fill=\"#fff\" d=\"M42.878 41.086c0 1.538-1.227 2.79-2.736 2.79-1.508 0-2.736-1.252-2.736-2.79s1.228-2.789 2.736-2.789c1.508 0 2.736 1.251 2.736 2.79Z\"/><path fill=\"#428FEC\" d=\"M38.651 10.033H22.914v2.49h15.737v-2.49Z\"/><path fill=\"#00308C\" d=\"M44.045 16.29h-26.51v2.49h26.51v-2.49ZM44.045 22.447h-26.51v2.49h26.51v-2.49ZM44.045 28.604h-26.51v2.49h26.51v-2.49ZM33.29 34.761H17.536v2.49h15.756v-2.49Z\"/><path fill=\"#428FEC\" d=\"M27.996 40.918h-10.46v2.49h10.46v-2.49Z\"/></svg>`,\n 'certification': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"65\" height=\"64\" fill=\"none\"><path fill=\"#00308C\" d=\"m32.5 63.82-.39-.13C17 58.44 6.84 44.16 6.84 28.16V12.93h1.18c6.38 0 11.57-5.19 11.57-11.57V.18h25.82v1.18c0 6.38 5.19 11.57 11.57 11.57h1.18v15.23c0 16-10.16 30.28-25.27 35.52l-.39.13v.01ZM9.19 15.23v12.92c0 14.86 9.35 28.14 23.3 33.16 13.96-5.03 23.3-18.3 23.3-33.16V15.23c-6.74-.57-12.13-5.96-12.7-12.7H21.9c-.57 6.74-5.96 12.13-12.7 12.7h-.01Z\"/><path fill=\"#9CCDFB\" d=\"M40.53 5.59H24.47c-1.54 5.97-6.25 10.68-12.22 12.21v10.35c0 13.2 8.07 25.03 20.24 29.89 12.17-4.86 20.24-16.69 20.24-29.89V17.8c-5.97-1.54-10.67-6.25-12.21-12.21h.01Zm-8.03 34.7c-5.46 0-9.89-4.43-9.89-9.89 0-5.46 4.43-9.89 9.89-9.89 5.46 0 9.89 4.43 9.89 9.89 0 5.46-4.43 9.89-9.89 9.89Z\"/><path fill=\"#00308C\" d=\"m31.201 35.37-4.83-4.82 1.67-1.67 3.16 3.16 5.76-5.76 1.66 1.67-7.42 7.42Z\"/><path fill=\"#00308C\" d=\"M32.5 41.47c-6.1 0-11.07-4.96-11.07-11.07s4.96-11.07 11.07-11.07 11.07 4.96 11.07 11.07-4.96 11.07-11.07 11.07Zm0-19.78c-4.8 0-8.71 3.91-8.71 8.71 0 4.8 3.91 8.71 8.71 8.71 4.8 0 8.71-3.91 8.71-8.71 0-4.8-3.91-8.71-8.71-8.71Z\"/></svg>`,\n 'external': `\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.77778 20.5C5.28889 20.5 4.87022 20.3261 4.52178 19.9782C4.17393 19.6298 4 19.2111 4 18.7222V6.27778C4 5.78889 4.17393 5.37022 4.52178 5.02178C4.87022 4.67393 5.28889 4.5 5.77778 4.5H12V6.27778H5.77778V18.7222H18.2222V12.5H20V18.7222C20 19.2111 19.8261 19.6298 19.4782 19.9782C19.1298 20.3261 18.7111 20.5 18.2222 20.5H5.77778ZM9.95556 15.7889L8.71111 14.5444L16.9778 6.27778H13.7778V4.5H20V10.7222H18.2222V7.52222L9.95556 15.7889Z\" fill=\"#00308C\"/>\n </svg>\n `,\n 'download': `\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 20C5.45 20 4.97933 19.8043 4.588 19.413C4.196 19.021 4 18.55 4 18V15H6V18H18V15H20V18C20 18.55 19.8043 19.021 19.413 19.413C19.021 19.8043 18.55 20 18 20H6ZM6 20C5.45 20 4.97933 19.8043 4.588 19.413C4.196 19.021 4 18.55 4 18V15H6V18H18V15H20V18\" fill=\"#00308C\"/>\n <path d=\"M7 11L12 16L17 11L15.6 9.55L13 12.15V4H11V12.15L8.4 9.55L7 11Z\" fill=\"#428FEC\"/>\n </svg>\n `,\n 'profile': `\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M21.21 8.6C20.69 7.38 19.97 6.33 19.07 5.43C18.17 4.53 17.11 3.82 15.9 3.29C14.68 2.77 13.38 2.5 12 2.5C10.62 2.5 9.32 2.76 8.1 3.29C6.88 3.82 5.83 4.53 4.93 5.43C4.03 6.33 3.32 7.39 2.79 8.6C2.26 9.82 2 11.12 2 12.5C2 13.88 2.26 15.18 2.79 16.4C3.31 17.62 4.03 18.67 4.93 19.57C5.83 20.47 6.89 21.18 8.1 21.71C9.32 22.24 10.62 22.5 12 22.5C13.38 22.5 14.68 22.24 15.9 21.71C17.12 21.19 18.17 20.47 19.07 19.57C19.97 18.67 20.68 17.61 21.21 16.4C21.74 15.18 22 13.88 22 12.5C22 11.12 21.74 9.82 21.21 8.6ZM14.5 20.11C13.72 20.37 12.88 20.5 12 20.5C11.12 20.5 10.28 20.37 9.5 20.11C8.72 19.85 8 19.48 7.35 19C8 18.52 8.72 18.15 9.5 17.89C10.28 17.63 11.12 17.5 12 17.5C12.88 17.5 13.72 17.63 14.5 17.89C15.28 18.15 16 18.52 16.65 19C16 19.48 15.28 19.85 14.5 20.11ZM19.51 15.27C19.18 16.14 18.73 16.91 18.15 17.59C17.3 16.94 16.35 16.43 15.3 16.05C14.25 15.68 13.15 15.49 12 15.49C10.85 15.49 9.75 15.68 8.7 16.05C7.65 16.43 6.7 16.94 5.85 17.59C5.27 16.91 4.81 16.13 4.49 15.27C4.16 14.4 4 13.48 4 12.49C4 10.27 4.78 8.39 6.34 6.83C7.9 5.27 9.79 4.49 12 4.49C14.21 4.49 16.1 5.27 17.66 6.83C19.22 8.39 20 10.28 20 12.49C20 13.47 19.84 14.4 19.51 15.27Z\" fill=\"#00308C\"/>\n <path d=\"M14.49 7.51C13.81 6.84 12.99 6.5 12 6.5C11.01 6.5 10.19 6.84 9.51 7.51C8.84 8.19 8.5 9.01 8.5 10C8.5 10.99 8.84 11.81 9.51 12.49C10.19 13.16 11.01 13.5 12 13.5C12.99 13.5 13.81 13.16 14.49 12.49C15.16 11.81 15.5 10.99 15.5 10C15.5 9.01 15.16 8.19 14.49 7.51ZM13.08 11.07C12.8 11.35 12.44 11.49 12 11.49C11.56 11.49 11.21 11.35 10.92 11.07C10.63 10.79 10.5 10.43 10.5 9.99C10.5 9.55 10.64 9.2 10.92 8.91C11.2 8.62 11.56 8.49 12 8.49C12.44 8.49 12.79 8.63 13.08 8.91C13.36 9.19 13.5 9.55 13.5 9.99C13.5 10.43 13.36 10.78 13.08 11.07Z\" fill=\"#428FEC\"/>\n </svg>\n `,\n 'snowflake': `\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9.99818 22.5C9.71484 22.5 9.47751 22.404 9.28618 22.212C9.09418 22.0207 8.99818 21.7833 8.99818 21.5V17.7L5.69818 19.6C5.46484 19.7333 5.21484 19.7627 4.94818 19.688C4.68151 19.6127 4.48151 19.4583 4.34818 19.225L2.34818 15.775C2.21484 15.5417 2.18151 15.2873 2.24818 15.012C2.31484 14.7373 2.46484 14.5333 2.69818 14.4L5.99818 12.5L2.69818 10.6C2.46484 10.4667 2.31484 10.2623 2.24818 9.987C2.18151 9.71233 2.21484 9.45833 2.34818 9.225L4.34818 5.775C4.48151 5.54167 4.68151 5.38733 4.94818 5.312C5.21484 5.23733 5.46484 5.26667 5.69818 5.4L8.99818 7.3V3.5C8.99818 3.21667 9.09418 2.979 9.28618 2.787C9.47751 2.59567 9.71484 2.5 9.99818 2.5H13.9982C14.2815 2.5 14.5192 2.59567 14.7112 2.787C14.9025 2.979 14.9982 3.21667 14.9982 3.5V7.3L18.2982 5.4C18.5315 5.26667 18.7815 5.23733 19.0482 5.312C19.3148 5.38733 19.5148 5.54167 19.6482 5.775L21.6482 9.225C21.7815 9.45833 21.8148 9.71233 21.7482 9.987C21.6815 10.2623 21.5315 10.4667 21.2982 10.6L17.9982 12.5L21.2982 14.4C21.5315 14.5333 21.6815 14.7373 21.7482 15.012C21.8148 15.2873 21.7815 15.5417 21.6482 15.775L19.6482 19.225C19.5148 19.4583 19.3148 19.6127 19.0482 19.688C18.7815 19.7627 18.5315 19.7333 18.2982 19.6L14.9982 17.7V21.5C14.9982 21.7833 14.9025 22.0207 14.7112 22.212C14.5192 22.404 14.2815 22.5 13.9982 22.5H9.99818ZM10.9982 20.5H12.9982V15.1C12.9982 14.9 13.0815 14.754 13.2482 14.662C13.4148 14.5707 13.5815 14.575 13.7482 14.675L18.4232 17.375L19.4232 15.625L14.7482 12.925C14.5815 12.825 14.4982 12.679 14.4982 12.487C14.4982 12.2957 14.5815 12.15 14.7482 12.05L19.4232 9.35L18.4232 7.625L13.7482 10.325C13.5815 10.425 13.4148 10.429 13.2482 10.337C13.0815 10.2457 12.9982 10.1 12.9982 9.9V4.5H10.9982V9.9C10.9982 10.0833 10.9188 10.225 10.7602 10.325C10.6022 10.425 10.4315 10.4333 10.2482 10.35L5.57318 7.65L4.57318 9.375L9.24818 12.075C9.41484 12.175 9.49818 12.3207 9.49818 12.512C9.49818 12.704 9.41484 12.85 9.24818 12.95L4.57318 15.65L5.57318 17.375L10.2482 14.675C10.4148 14.575 10.5815 14.5707 10.7482 14.662C10.9148 14.754 10.9982 14.9 10.9982 15.1V20.5Z\" fill=\"#00308C\"/>\n </svg>\n `,\n 'information2': `\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13 11.5H11V17.5H13V11.5Z\" fill=\"#428FEC\"/>\n <path d=\"M12 9.5C12.28 9.5 12.52 9.4 12.71 9.21C12.9 9.02 13 8.78 13 8.5C13 8.22 12.9 7.98 12.71 7.79C12.52 7.6 12.28 7.5 12 7.5C11.72 7.5 11.48 7.6 11.29 7.79C11.1 7.98 11 8.22 11 8.5C11 8.78 11.1 9.02 11.29 9.21C11.48 9.4 11.72 9.5 12 9.5Z\" fill=\"#428FEC\"/>\n <path d=\"M21.21 8.6C20.69 7.38 19.97 6.33 19.07 5.43C18.17 4.53 17.11 3.82 15.9 3.29C14.68 2.77 13.38 2.5 12 2.5C10.62 2.5 9.32 2.76 8.1 3.29C6.88 3.82 5.83 4.53 4.93 5.43C4.03 6.33 3.32 7.39 2.79 8.6C2.26 9.82 2 11.12 2 12.5C2 13.88 2.26 15.18 2.79 16.4C3.31 17.62 4.03 18.68 4.93 19.57C5.83 20.46 6.89 21.18 8.1 21.71C9.32 22.24 10.62 22.5 12 22.5C13.38 22.5 14.68 22.24 15.9 21.71C17.12 21.19 18.17 20.47 19.07 19.57C19.97 18.67 20.68 17.61 21.21 16.4C21.74 15.18 22 13.88 22 12.5C22 11.12 21.74 9.82 21.21 8.6ZM17.67 18.18C16.12 19.73 14.23 20.5 12 20.5C9.77 20.5 7.88 19.73 6.33 18.18C4.78 16.63 4 14.74 4 12.5C4 10.26 4.78 8.38 6.33 6.83C7.88 5.28 9.77 4.5 12 4.5C14.23 4.5 16.12 5.28 17.67 6.83C19.22 8.38 20 10.27 20 12.5C20 14.73 19.23 16.62 17.67 18.18Z\" fill=\"#00308C\"/>\n </svg>\n `,\n 'calendar': `\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12.07 20H5C4.45 20 3.98 19.8 3.59 19.41C3.2 19.02 3 18.55 3 18V7C3 6.45 3.2 5.98 3.59 5.59C3.98 5.2 4.45 5 5 5H6V3H8V5H14V3H16V5H17C17.55 5 18.02 5.2 18.41 5.59C18.8 5.98 19 6.45 19 7V13.07C18.83 13.04 18.67 13.02 18.51 13.01C18.35 13.01 18.18 13 18 13C17.82 13 17.65 13 17.49 13.01C17.33 13.01 17.17 13.04 17 13.07V10H5V18H12.07C12.04 18.17 12.02 18.33 12.01 18.49C12.01 18.65 12 18.82 12 19C12 19.18 12 19.35 12.01 19.51C12.01 19.67 12.04 19.83 12.07 20Z\" fill=\"#00308C\"/>\n <path d=\"M17 23V20H14V18H17V15H19V18H22V20H19V23H17Z\" fill=\"#428FEC\"/>\n </svg>\n `,\n 'magnifying-map-pin': `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"64\" viewBox=\"0 0 64 64\" fill=\"none\">\n <path d=\"M36.6488 14.0579C33.3683 10.7787 29.0226 8.9683 24.4043 8.97684C19.7775 8.97684 15.4148 10.7872 12.1427 14.0835C8.88775 17.3712 7.08984 21.7179 7.08984 26.3378C7.08984 35.9107 14.8609 43.6988 24.4128 43.6903C29.0482 43.6903 33.4024 41.8713 36.6829 38.575C39.9464 35.2958 41.7358 30.9407 41.7358 26.3293C41.7358 21.7179 39.9294 17.3371 36.6574 14.0579H36.6488Z\" fill=\"white\"/>\n <path d=\"M24.3966 44.7748C14.2568 44.7748 6 36.5085 6 26.3378C6 21.4361 7.90868 16.8077 11.3682 13.3235C14.8447 9.82228 19.4715 7.89233 24.3881 7.89233C29.3047 7.89233 33.9315 9.81374 37.408 13.2979C40.8931 16.782 42.8103 21.4105 42.8103 26.3378C42.8103 31.2652 40.9016 35.868 37.4421 39.3522C33.9571 42.8534 29.3302 44.7833 24.4051 44.7833L24.3881 43.6988V42.6143C28.7423 42.6143 32.8238 40.9149 35.8998 37.8236C38.9503 34.7493 40.6375 30.676 40.6375 26.3464C40.6375 22.0168 38.9503 17.9178 35.8743 14.8436C32.8068 11.7693 28.7338 10.0785 24.4051 10.0785C20.0765 10.0785 15.9695 11.7778 12.9019 14.8692C9.84293 17.952 8.16431 22.0254 8.16431 26.3549C8.16431 35.3215 15.4497 42.6228 24.3881 42.6228V44.8004L24.3966 44.7748Z\" fill=\"#00308C\"/>\n <path d=\"M34.1278 36.0217C31.5289 38.6349 28.0779 40.078 24.414 40.078C16.8474 40.078 10.6953 33.921 10.6953 26.3378C10.6953 22.6829 12.1183 19.2414 14.7001 16.6369C17.299 14.0238 20.7415 12.5891 24.4054 12.5891C28.0694 12.5891 31.5119 14.0152 34.1022 16.6198C36.7011 19.2158 38.1241 22.6744 38.1241 26.3378C38.1241 29.9928 36.7096 33.4342 34.1193 36.0303L34.1278 36.0217Z\" fill=\"#9CCDFB\"/>\n <path d=\"M43.3268 38.783L36.8438 45.2803L50.9728 59.4403L57.4559 52.943L43.3268 38.783Z\" fill=\"#428FEC\"/>\n <path d=\"M53.3307 53.0155L45.5 45.1676L53.3307 53.0155Z\" fill=\"white\"/>\n <path d=\"M46.2708 44.3978L44.7344 45.9376L52.5611 53.7815L54.0975 52.2417L46.2708 44.3978Z\" fill=\"white\"/>\n <path d=\"M42.5703 39.5322L37.5703 44.5449L40.023 47.0021L45.023 41.9894L42.5703 39.5322Z\" fill=\"white\"/>\n <path d=\"M40.0308 48.5408L36.043 44.5442L42.5785 37.9944L46.5578 41.9909L40.0222 48.5408H40.0308ZM39.119 44.5442L40.0308 45.4665L43.4988 41.9909L42.587 41.0772L39.119 44.5528V44.5442Z\" fill=\"#00308C\"/>\n <path d=\"M57.9181 54.9028C57.9181 57.6696 55.6771 59.9155 52.9163 59.9155C52.5158 59.5142 52.1153 59.1128 51.7148 58.7115C53.3849 57.0377 55.0465 55.3725 56.7166 53.6987C57.1171 54.1001 57.5176 54.5015 57.9181 54.9028Z\" fill=\"white\"/>\n <path d=\"M52.4633 61.0001L50.1797 58.7029L50.9466 57.9344C52.6167 56.2606 54.2782 54.5954 55.9483 52.9216L56.7152 52.1531L57.4821 52.9216C57.8826 53.323 58.2831 53.7244 58.6835 54.1257L58.9988 54.4417V54.8943C58.9988 58.2589 56.2721 60.9915 52.9149 60.9915H52.4633V61.0001ZM53.2472 58.7115L53.3409 58.8054C55.1644 58.609 56.613 57.1573 56.8089 55.3298C56.7749 55.2956 56.7493 55.27 56.7152 55.2359C55.5564 56.3973 54.4061 57.5501 53.2472 58.7115Z\" fill=\"#00308C\"/>\n <path d=\"M37.5791 40.5697L36.043 42.1097L38.1401 44.2107L39.6763 42.6707L37.5791 40.5697Z\" fill=\"#00308C\"/>\n <path d=\"M38.7981 36.6309L37.2617 38.1707L39.9731 40.8879L41.5095 39.3481L38.7981 36.6309Z\" fill=\"#00308C\"/>\n <path d=\"M24.5655 3.08447C17.7403 3.08447 12.2188 8.62666 12.2188 15.4583C12.2188 22.29 24.5655 32.8535 24.5655 32.8535C24.5655 32.8535 36.9123 22.2985 36.9123 15.4583C36.9123 8.61812 31.3908 3.08447 24.5655 3.08447Z\" fill=\"#428FEC\"/>\n <path d=\"M24.5664 34.2796L23.8591 33.6819C23.3394 33.2378 11.1289 22.717 11.1289 15.4584C11.1289 8.19974 17.1617 2 24.5664 2C31.971 2 38.0038 8.03749 38.0038 15.4584C38.0038 22.8793 25.7934 33.2378 25.2736 33.6819L24.5664 34.2796ZM24.5664 4.16905C18.3546 4.16905 13.3017 9.23303 13.3017 15.4584C13.3017 20.326 20.8683 28.097 24.5664 31.4103C28.2644 28.097 35.831 20.326 35.831 15.4584C35.831 9.23303 30.7781 4.16905 24.5664 4.16905Z\" fill=\"#00308C\"/>\n <path d=\"M24.5675 22.0167C20.9546 22.0167 18.0234 19.0876 18.0234 15.4669C18.0234 11.8461 20.9546 8.91699 24.5675 8.91699C28.1804 8.91699 31.103 11.8461 31.103 15.4669C31.103 19.0876 28.1804 22.0167 24.5675 22.0167Z\" fill=\"white\"/>\n <path d=\"M24.5649 22.6914C20.5856 22.6914 17.3477 19.4464 17.3477 15.4584C17.3477 11.4704 20.5856 8.22534 24.5649 8.22534C28.5441 8.22534 31.7735 11.4704 31.7735 15.4584C31.7735 19.4464 28.5356 22.6914 24.5649 22.6914ZM24.5649 10.4029C21.7785 10.4029 19.512 12.6745 19.512 15.4584C19.512 18.2423 21.7785 20.5138 24.5649 20.5138C27.3512 20.5138 29.6092 18.2423 29.6092 15.4584C29.6092 12.6745 27.3512 10.4029 24.5649 10.4029Z\" fill=\"#00308C\"/>\n </svg>`,\n};\n\nconst systemLibrary: IconLibrary = {\n name: 'system',\n // @ts-expect-error - shrug.\n resolver: (name: keyof typeof icons) => {\n if (name in icons) {\n return `data:image/svg+xml,${encodeURIComponent(icons[name])}`;\n }\n return '';\n },\n};\n\nexport default systemLibrary;\n","import type OutlineIcon from '../outline-icon/outline-icon';\n\nimport systemLibrary from './libraries/library.system';\nimport bootstrapLibrary from './libraries/library.bootstrap';\nimport boxiconLibrary from './libraries/library.boxicons';\nimport lucideLibrary from './libraries/library.lucide';\nimport heroiconsLibrary from './libraries/library.heroicons';\nimport iconoirLibrary from './libraries/library.iconoir';\nimport ioniconsLibrary from './libraries/library.ionicons';\nimport jamLibrary from './libraries/library.jam';\nimport fontawesomeLibrary from './libraries/library.fontawesome';\nimport materialLibrary from './libraries/library.material';\nimport remixLibrary from './libraries/library.remix';\nimport uniconsLibrary from './libraries/library.unicons';\nimport customLibrary from './libraries/library.custom';\n\nexport type IconLibraryResolver = (name: string) => string;\nexport type IconLibraryMutator = (svg: SVGElement) => void;\nexport interface IconLibrary {\n name: string;\n resolver: IconLibraryResolver;\n mutator?: IconLibraryMutator;\n}\n\nlet registry: IconLibrary[] = [\n systemLibrary,\n bootstrapLibrary,\n boxiconLibrary,\n lucideLibrary,\n heroiconsLibrary,\n iconoirLibrary,\n ioniconsLibrary,\n jamLibrary,\n fontawesomeLibrary,\n materialLibrary,\n remixLibrary,\n uniconsLibrary,\n customLibrary,\n];\nlet watchedIcons: OutlineIcon[] = [];\n\nexport function watchIcon(icon: OutlineIcon) {\n watchedIcons.push(icon);\n}\n\nexport function unwatchIcon(icon: OutlineIcon) {\n watchedIcons = watchedIcons.filter(el => el !== icon);\n}\n\nexport function getIconLibrary(name?: string) {\n return registry.find(lib => lib.name === name);\n}\n\nexport function registerIconLibrary(\n name: string,\n options: { resolver: IconLibraryResolver; mutator?: IconLibraryMutator }\n) {\n unregisterIconLibrary(name);\n registry.push({\n name,\n resolver: options.resolver,\n mutator: options.mutator,\n });\n\n // Redraw watched icons\n watchedIcons.forEach(icon => {\n if (icon.library === name) {\n icon.redraw();\n }\n });\n}\n\nexport function unregisterIconLibrary(name: string) {\n registry = registry.filter(lib => lib.name !== name);\n}\n","import type { IconLibrary } from '../library';\n\nconst library: IconLibrary = {\n name: 'bootstrap',\n resolver: name =>\n `https://cdn.jsdelivr.net/npm/[email protected]/icons/${name}.svg`,\n};\n\nexport default library;\n","import { IconLibrary } from '../library';\n\nconst library: IconLibrary = {\n name: 'boxicons',\n resolver: name => {\n let folder = 'regular';\n if (name.substring(0, 4) === 'bxs-') folder = 'solid';\n if (name.substring(0, 4) === 'bxl-') folder = 'logos';\n return `https://cdn.jsdelivr.net/npm/[email protected]/svg/${folder}/${name}.svg`;\n },\n mutator: svg => svg.setAttribute('fill', 'currentColor'),\n};\n\nexport default library;\n","import { IconLibrary } from '../library';\n\nconst library: IconLibrary = {\n name: 'lucide',\n resolver: name =>\n `https://cdn.jsdelivr.net/npm/[email protected]/icons/${name}.svg`,\n};\n\nexport default library;\n","import type { IconLibrary } from '../library';\n\nconst library: IconLibrary = {\n name: 'heroicons',\n resolver: name =>\n `https://cdn.jsdelivr.net/npm/[email protected]/outline/${name}.svg`,\n mutator: svg => {\n svg.setAttribute('width', '16px');\n svg.setAttribute('height', '16px');\n },\n};\n\nexport default library;\n","import type { IconLibrary } from '../library';\n\nconst library: IconLibrary = {\n name: 'iconoir',\n resolver: name =>\n `https://cdn.jsdelivr.net/gh/lucaburgio/iconoir@latest/icons/${name}.svg`,\n};\n\nexport default library;\n","import { IconLibrary } from '../library';\n\nconst library: IconLibrary = {\n name: 'ionicons',\n resolver: name =>\n `https://cdn.jsdelivr.net/npm/[email protected]/dist/ionicons/svg/${name}.svg`,\n mutator: svg => {\n svg.setAttribute('fill', 'currentColor');\n svg.setAttribute('stroke', 'currentColor');\n [...svg.querySelectorAll('.ionicon-fill-none')].map(el =>\n el.setAttribute('fill', 'none')\n );\n [...svg.querySelectorAll('.ionicon-stroke-width')].map(el =>\n el.setAttribute('stroke-width', '32px')\n );\n },\n};\n\nexport default library;\n","import type { IconLibrary } from '../library';\n\nconst library: IconLibrary = {\n name: 'jam',\n resolver: name =>\n `https://cdn.jsdelivr.net/npm/[email protected]/svg/${name}.svg`,\n mutator: svg => svg.setAttribute('fill', 'currentColor'),\n};\n\nexport default library;\n","import type { IconLibrary } from '../library';\n\nconst library: IconLibrary = {\n name: 'fa',\n resolver: name => {\n const filename = name.replace(/^fa[rbs]-/, '');\n let folder = 'regular';\n if (name.substring(0, 4) === 'fas-') folder = 'solid';\n if (name.substring(0, 4) === 'fab-') folder = 'brands';\n return `https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/svgs/${folder}/${filename}.svg`;\n },\n mutator: svg => svg.setAttribute('fill', 'currentColor'),\n};\n\nexport default library;\n","import { IconLibrary } from '../library';\n\nconst library: IconLibrary = {\n name: 'material',\n resolver: name => {\n const match = name.match(/^(.*?)(_(round|sharp))?$/);\n // prettier-ignore\n // @ts-expect-error ts-mismatch\n return `https://cdn.jsdelivr.net/npm/@material-icons/[email protected]/svg/${match[1]}/${match[3] || 'outline'}.svg`;\n },\n mutator: svg => svg.setAttribute('fill', 'currentColor'),\n};\n\nexport default library;\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-ignore\nimport { IconLibrary } from '../library';\n\nconst library: IconLibrary = {\n name: 'remix',\n resolver: name => {\n const match = name.match(/^(.*?)\\/(.*?)?$/);\n // prettier-ignore\n // @ts-expect-error ts-mismatch\n match[1] = match[1].charAt(0).toUpperCase() + match[1].slice(1);\n // prettier-ignore\n // @ts-expect-error ts-mismatch\n return `https://cdn.jsdelivr.net/npm/[email protected]/icons/${match[1]}/${match[2]}.svg`;\n },\n mutator: svg => svg.setAttribute('fill', 'currentColor'),\n};\n\nexport default library;\n","import { IconLibrary } from '../library';\n\nconst library: IconLibrary = {\n name: 'unicons',\n resolver: name => {\n const match = name.match(/^(.*?)(-s)?$/);\n // prettier-ignore\n // @ts-expect-error ts-mismatch\n return `https://cdn.jsdelivr.net/npm/@iconscout/[email protected]/svg/${match[2] === '-s' ? 'solid' : 'line'}/${match[1]}.svg`;\n },\n mutator: svg => svg.setAttribute('fill', 'currentColor'),\n};\n\nexport default library;\n","import { IconLibrary } from '../library';\n\nconst library: IconLibrary = {\n name: 'custom',\n resolver: name => `./dist/assets/svg/custom/${name}.svg`,\n //mutator: svg => svg.setAttribute('fill', 'currentColor'),\n};\n\nexport default library;\n","interface IncludeFile {\n ok: boolean;\n status: number;\n html: string;\n}\n\nconst includeFiles = new Map<string, Promise<IncludeFile>>();\n\nexport function requestInclude(\n src: string,\n mode: 'cors' | 'no-cors' | 'same-origin' = 'cors'\n): Promise<IncludeFile> {\n if (includeFiles.has(src)) {\n return includeFiles.get(src)!;\n }\n const fileDataPromise = fetch(src, { mode: mode }).then(async response => {\n return {\n ok: response.ok,\n status: response.status,\n html: await response.text(),\n };\n });\n includeFiles.set(src, fileDataPromise);\n return fileDataPromise;\n}\n","import { requestInclude } from '../outline-include/request';\n\ntype IconFile =\n | {\n ok: true;\n status: number;\n svg: string;\n }\n | {\n ok: false;\n status: number;\n svg: null;\n };\n\ninterface IconFileUnknown {\n ok: boolean;\n status: number;\n svg: string | null;\n}\n\nconst iconFiles = new Map<string, IconFile>();\n\nexport async function requestIcon(url: string): Promise<IconFile> {\n if (iconFiles.has(url)) {\n return iconFiles.get(url)!;\n }\n const fileData = await requestInclude(url);\n const iconFileData: IconFileUnknown = {\n ok: fileData.ok,\n status: fileData.status,\n svg: null,\n };\n if (fileData.ok) {\n const div = document.createElement('div');\n div.innerHTML = fileData.html;\n const svg = div.firstElementChild;\n iconFileData.svg =\n svg?.tagName.toLowerCase() === 'svg' ? svg.outerHTML : '';\n }\n\n iconFiles.set(url, iconFileData as IconFile);\n return iconFileData as IconFile;\n}\n","/**\n * This file is auto generated via npm run generate.resolved-outline\n */\nexport default {\n destBasePath: 'dist',\n components: { bundle: ['outline', 'utility'] },\n assets: { dir: ['src/assets'], sync: ['dist', 'src/.storybook/static/dist'] },\n screens: {\n xs: '480px',\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n xxl: '1440px',\n xxxl: '2160px',\n },\n css: {\n global: [\n { src: 'outline.fonts.css', dest: 'dist/outline.fonts.css' },\n { src: 'src/shared.css', dest: 'dist/shared.css' },\n { src: 'src/ck-editor-styles.css', dest: 'dist/ck-editor-styles.css' },\n { src: 'outline.theme.css', dest: 'dist/outline.theme.css' },\n { src: 'src/tailwind.css', dest: 'dist/tailwind.css' },\n { src: 'src/.storybook/storybook.css', dest: 'dist/storybook.css' },\n ],\n fouc: { enabled: true, dest: 'dist/fouc.css' },\n },\n js: { output: { lazy: true, full: true, data: false, headerFooter: true } },\n color: { sets: ['outline', 'primary', 'secondary', 'tertiary', 'neutral'] },\n excludedStories: [],\n icons: {\n libraries: {\n bootstrap: true,\n boxicons: true,\n fontawesome: true,\n heroicons: true,\n iconoir: true,\n ionicons: true,\n jam: true,\n lucide: true,\n material: true,\n remix: true,\n unicons: true,\n },\n defaults: { library: 'bootstrap', size: '16px', icon: 'chevron-right' },\n },\n youtube: { defaultVideo: 'xiqgG8HUZXE' },\n vimeo: { defaultVideo: '432639001' },\n splide: { keyboard: false, arrows: true },\n};\n","import { CSSResultGroup, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport componentStyles from './outline-icon.css.lit';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { emit } from '../../../internal/event';\nimport { watch } from '../../../internal/watch';\nimport { OutlineElement } from '../outline-element/outline-element';\nimport { getIconLibrary, unwatchIcon, watchIcon } from './library';\nimport { requestIcon } from './request';\nimport outline from '../../../resolved-outline-config';\n\nconst parser = new DOMParser();\n\n/**\n * @since 1.0\n * @status stable\n *\n * @event outline-load - Emitted when the icon has loaded.\n * @event outline-error - Emitted when the icon fails to load due to an error.\n *\n * @csspart base - The component's base wrapper.\n *\n * @attr name\n * @attr src\n * @attr label\n * @attr library\n * @attr size\n */\n@customElement('outline-icon')\nexport default class OutlineIcon extends OutlineElement {\n static styles: CSSResultGroup = [componentStyles];\n\n @state() private svg = '';\n\n /** The name of the icon to draw. */\n @property({ type: String, reflect: true, attribute: 'name' })\n name?: string;\n\n /**\n * An external URL of an SVG file.\n *\n * WARNING: Be sure you trust the content you are including as it will be executed as code and can result in XSS attacks.\n */\n @property({ type: String, attribute: 'src' })\n src?: string;\n\n /** An alternate description to use for accessibility. If omitted, the icon will be ignored by assistive devices. */\n /** @todo: Make this default to \"true\" and be turned off when an icon is decorative. */\n @property({ attribute: 'label' })\n label: string | boolean = false;\n\n /** The name of a registered custom icon library. */\n @property({ type: String, attribute: 'library' })\n library = outline.icons.defaults.library;\n\n /**\n * The width and height of the icon.\n * @param size in pixels\n * @default 32px\n */\n @property({ attribute: 'size' })\n size: string | boolean = outline.icons.defaults.size;\n\n connectedCallback() {\n super.connectedCallback();\n watchIcon(this);\n }\n\n firstUpdated() {\n this.setIcon();\n this.sizeIcon();\n }\n\n updated() {\n this.setIcon();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n unwatchIcon(this);\n }\n\n private sizeIcon() {\n if (\n this.size &&\n typeof this.size === 'string' &&\n this.size !== outline.icons.defaults.size\n ) {\n const icon: HTMLElement | null | undefined =\n this.shadowRoot?.querySelector('.icon');\n icon?.style.setProperty('width', this.size);\n icon?.style.setProperty('height', this.size);\n }\n }\n\n private getUrl() {\n const library = getIconLibrary(this.library);\n if (this.name && library) {\n return library.resolver(this.name);\n }\n return this.src;\n }\n\n /** @internal Fetches the icon and redraws it. Used to handle library registrations. */\n redraw() {\n this.setIcon();\n }\n\n @watch('name')\n @watch('src')\n @watch('library')\n async setIcon() {\n const library = getIconLibrary(this.library);\n const url = this.getUrl();\n if (url) {\n try {\n const file = await requestIcon(url);\n if (url !== this.getUrl()) {\n // If the url has changed while fetching the icon, ignore this request\n return;\n } else if (file.ok) {\n const doc = parser.parseFromString(file.svg, 'text/html');\n const svgEl = doc.body.querySelector('svg');\n\n if (svgEl !== null) {\n library?.mutator?.(svgEl);\n\n this.svg = svgEl.outerHTML;\n emit(this, 'outline-load');\n } else {\n this.svg = '';\n emit(this, 'outline-error', { detail: { status: file.status } });\n }\n } else {\n this.svg = '';\n emit(this, 'outline-error', { detail: { status: file.status } });\n }\n } catch {\n emit(this, 'outline-error', { detail: { status: -1 } });\n }\n } else if (this.svg.length > 0) {\n // If we can't resolve a URL and an icon was previously set, remove it\n this.svg = '';\n }\n }\n\n render() {\n const hasLabel = typeof this.label === 'string' && this.label.length > 0;\n\n const wrapperClasses = {\n icon: true,\n [`icon-library--${this.library}`]: this.library,\n };\n // aria-hidden=${ifDefined(hasLabel ? undefined : 'true')}\n return html` <div\n part=\"base\"\n class=\"${classMap(wrapperClasses)}\"\n role=${ifDefined(hasLabel ? 'img' : undefined)}\n aria-label=${ifDefined(hasLabel ? this.label : undefined)}\n >\n ${unsafeSVG(this.svg)}\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'outline-icon': OutlineIcon;\n }\n}\n","import { customElement } from 'lit/decorators.js';\nimport OutlineIcon from '../../base/outline-icon/outline-icon';\nimport { CSSResultGroup } from 'lit';\nimport iconStyles from '../../base/outline-icon/outline-icon.css.lit';\n\n@customElement('tufts-icon')\nexport class TuftsIcon extends OutlineIcon {\n static styles: CSSResultGroup = [iconStyles];\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'tufts-icon': TuftsIcon;\n }\n}\n","\nimport { css } from 'lit';\nexport default css`\n/* Apply standardized box sizing to the component. */\n:host {\n box-sizing: border-box;\n}\n:host *,\n:host *::before,\n:host *::after {\n box-sizing: inherit;\n}\n/* Apply proper CSS for accessibly hiding elements to each component. */\n.visually-hidden {\n position: absolute !important;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n width: 1px;\n height: 1px;\n word-wrap: normal;\n}\n/* Apply component specific CSS */\n.lg,.md,.sm,.xl,.xs,.xxl{display:block;line-height:1.1;margin:0}.lg a,.md a,.sm a,.xl a,.xs a,.xxl a{color:var(--medium-blue);color:var(--color-font-content,var(--medium-blue));text-decoration:none}.lg a:hover,.md a:hover,.sm a:hover,.xl a:hover,.xs a:hover,.xxl a:hover{text-decoration:underline}.lg h1,.lg h2,.lg h3,.lg h4,.lg h5,.lg h6,.md h1,.md h2,.md h3,.md h4,.md h5,.md h6,.sm h1,.sm h2,.sm h3,.sm h4,.sm h5,.sm h6,.xl h1,.xl h2,.xl h3,.xl h4,.xl h5,.xl h6,.xs h1,.xs h2,.xs h3,.xs h4,.xs h5,.xs h6,.xxl h1,.xxl h2,.xxl h3,.xxl h4,.xxl h5,.xxl h6{all:unset;font-size:inherit}.clickable-card h1 a:hover,.clickable-card h2 a:hover,.clickable-card h3 a:hover,.clickable-card h4 a:hover,.clickable-card h5 a:hover,.clickable-card h6 a:hover{text-decoration:none}.clickable-card h1 a:after,.clickable-card h2 a:after,.clickable-card h3 a:after,.clickable-card h4 a:after,.clickable-card h5 a:after,.clickable-card h6 a:after{content:\"\";inset:0;position:absolute}.heading-color a{color:var(--heading-color)}.lg,.md,.sm,.xl,.xxl{font-family:var(--ff-display);font-weight:var(--fw-normal)}.page-headings{font-family:var(--ff-body);font-size:var(--fs-ph);font-weight:var(--fw-semibold);letter-spacing:var(--ls-ph);line-height:var(--lh-ph)}.xxl{font-size:var(--fs-h1);letter-spacing:var(--ls-h1);line-height:var(--lh-h1)}.xl{font-size:var(--fs-h2);letter-spacing:var(--ls-h2);line-height:var(--lh-h2)}.lg{font-size:var(--fs-h3);letter-spacing:var(--ls-h3);line-height:var(--lh-h3)}.md{font-size:var(--fs-h4);letter-spacing:var(--ls-h4);line-height:var(--lh-h4)}.sm{font-size:var(--fs-h5);letter-spacing:var(--ls-h5);line-height:var(--lh-h5)}.xs{font-family:var(--ff-body);font-size:var(--fs-h6);font-weight:var(--fw-bold);letter-spacing:var(--ls-h6);line-height:var(--lh-h6);text-transform:uppercase}tufts-heading a{text-decoration:none}.special-heading{color:var(--black-800);font-family:var(--ff-body);font-size:var(--fs-h5);font-style:normal;font-weight:var(--fw-semibold);line-height:var(--lh-h5)}`;","import{html as t,svg as r}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=Symbol.for(\"\"),l=t=>{if((null==t?void 0:t.r)===e)return null==t?void 0:t._$litStatic$},o=t=>({_$litStatic$:t,r:e}),i=(t,...r)=>({_$litStatic$:r.reduce(((r,e,l)=>r+(t=>{if(void 0!==t._$litStatic$)return t._$litStatic$;throw Error(`Value passed to 'literal' function must be a 'literal' result: ${t}. Use 'unsafeStatic' to pass non-literal values, but\\n take care to ensure page security.`)})(e)+t[l+1]),t[0]),r:e}),s=new Map,a=t=>(r,...e)=>{const o=e.length;let i,a;const n=[],u=[];let c,$=0,f=!1;for(;$<o;){for(c=r[$];$<o&&void 0!==(a=e[$],i=l(a));)c+=i+r[++$],f=!0;u.push(a),n.push(c),$++}if($===o&&n.push(r[o]),f){const t=n.join(\"$$lit$$\");void 0===(r=s.get(t))&&(n.raw=n,s.set(t,r=n)),e=u}return t(r,...e)},n=a(t),u=a(r);export{n as html,i as literal,u as svg,o as unsafeStatic,a as withStatic};\n//# sourceMappingURL=static.js.map\n","import { ReactiveControllerHost } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { html, unsafeStatic } from 'lit/static-html.js';\n\n/**\n * The SlotsController ReactiveController.\n *\n * This controller allows cloning slots into the shadow DOM,\n * by calling a function inside render() of the component.\n * Any changes in the light DOM trigger requestUpdate() and thus re-cloning\n * of the slots into the shadow DOM.\n * The controller dispatches any events that were specified when they are triggered\n * in the cloned slots in shadow DOM to the equivalent light DOM slot.\n *\n * @param host The host element\n */\n\nexport class SlotNGController {\n host: ReactiveControllerHost & HTMLElement;\n /**\n * Watches for changes to components childlist and clones nodes to shadow dom.\n */\n _mutationObserver = new MutationObserver(this._handleMutation.bind(this));\n\n constructor(host: ReactiveControllerHost & HTMLElement) {\n // Store a reference to the host\n this.host = host;\n // Register for lifecycle updates\n host.addController(this);\n }\n\n hostConnected(): void {}\n\n /**\n * MutationObserver callback.\n */\n _handleMutation() {\n // disconnect observer before making updates (to avoid infinite loop when adding comment)\n this._mutationObserver.disconnect();\n this.host.requestUpdate();\n }\n\n /**\n * Get slotted nodes by slot name.\n * @param {string | null} slotName - The slot name to search for.\n * @returns {Array} An array of slotted nodes.\n */\n getSlottedNodes(slotName: string | null = null) {\n const defaultSlot = slotName === '' || slotName === null;\n let slottedNodes = [];\n\n if (defaultSlot) {\n slottedNodes = Array.from(this.host.childNodes).filter(\n node => this.isDefaultSlotText(node) || this.isDefaultSlotElement(node)\n );\n } else {\n slottedNodes = Array.from(\n this.host.querySelectorAll(`[slot=${slotName}]`)\n );\n }\n\n return slottedNodes;\n }\n\n /**\n * Returns the number of slots for the given slot name.\n * If no slot name is provided, returns the number of slots for default slot.\n *\n * @param {string|null} [slotName=null] - The name of the slot to count nodes for.\n * @returns {number} - The number of slotted nodes.\n */\n count(slotName: string | null = null) {\n return this.getSlottedNodes(slotName).length;\n }\n\n /**\n * Check if a slot exists.\n * @param {string | null} slotName - The slot name to check for.\n * @returns {boolean} True if the slot exists, false otherwise.\n */\n exist(slotName: string | null = null) {\n return Boolean(this.getSlottedNodes(slotName).length);\n }\n\n /**\n * Check if a node is a default slot text.\n * @param {Node} node - The node to check.\n * @returns {boolean} True if the node is a default slot text, false otherwise.\n */\n isDefaultSlotText(node: Node) {\n return node.nodeType === node.TEXT_NODE && node.textContent!.trim() !== '';\n }\n\n /**\n * Check if a node is a default slot element.\n * @param {Node} node - The node to check.\n * @returns {boolean} True if the node is a default slot element, false otherwise.\n */\n isDefaultSlotElement(node: Node) {\n return (\n node.nodeType === node.ELEMENT_NODE &&\n (node as HTMLElement).getAttribute('slot') === null\n );\n }\n\n /**\n * Add annotations to a slot.\n * @param {string} slotName - The slot name.\n * @param {ChildNode} lightDomSlot - The light DOM slot.\n * @returns {HTMLElement} The annotated slot.\n */\n addAnnotations(slotName: string, lightDomSlot: ChildNode) {\n // Create cloned-node element\n const clonedSlot = lightDomSlot.cloneNode(true) as HTMLElement;\n\n // Add a comment above the slot in light DOM, to indicate it was cloned to shadow DOM\n const annotationComment =\n `slotsController cloned this ` +\n (slotName === '' ? 'default-slot' : `named-slot '${slotName}'`) +\n ` into the shadow DOM`;\n\n // Add the comment only once, avoid duplicate comments when requestUpdate() runs\n // Check if a light DOM comment already exist\n const commentExist = Array.from(this.host.childNodes).some(\n node => node.nodeValue === annotationComment\n );\n if (!commentExist) {\n lightDomSlot.before(document.createComment(annotationComment));\n }\n\n if (slotName !== '') {\n clonedSlot.setAttribute('cloned-slot-type', 'named-slot');\n clonedSlot.setAttribute('cloned-slot-name', slotName);\n clonedSlot.removeAttribute('slot');\n return clonedSlot;\n }\n\n if (this.isDefaultSlotElement(lightDomSlot)) {\n clonedSlot.setAttribute('cloned-slot-type', 'default-slot--element');\n clonedSlot.setAttribute('cloned-slot-name', 'default');\n clonedSlot.removeAttribute('slot');\n return clonedSlot;\n } else {\n // Insert the text-only default slot into a node element\n const slotWrapper = document.createElement('cloned-slot');\n clonedSlot.parentNode?.insertBefore(slotWrapper, clonedSlot);\n slotWrapper.appendChild(clonedSlot);\n slotWrapper.setAttribute('cloned-slot-type', 'default-slot--text');\n slotWrapper.setAttribute('cloned-slot-name', 'default');\n return slotWrapper;\n }\n }\n\n /**\n * Dispatch events from cloned slots in shadow DOM to the equivalent light DOM slot.\n * @param {string[]} eventsToDispatch - The events to dispatch.\n * @param {HTMLElement} clonedSlot - The cloned slot.\n *\n * As there is no way (aside from devtools) to determine what events are occurring in the DOM,\n * what we can do is simulate an event that originated in the shadow DOM.\n * Therefore, clicking on an element in a slotted shadow DOM would simulate a click event\n * on a parallel element in a slotted light DOM.\n *\n * When an event triggers -\n * Step 1 -\n * In the Shadow DOM, identify the path that leads to the element that triggered the event.\n *\n * Step 2 -\n * In the Light DOM, find the equivalent path to the one found in step 1.\n *\n * Step 3 -\n * Dispatch the event to the light DOM, following the same path that was found in step 2.\n *\n * Step 4 -\n * Wait for the component to refresh (by using timeout 0), then focus is reset to the component that hosts the element.\n *\n * Step 5 -\n * Focus the browser on the original element in Shadow DOM that triggered the event found in step 1\n */\n dispatchEventsToLightDom(\n eventsToDispatch: string[],\n clonedSlot: HTMLElement\n ) {\n // Dispatch events from shadow DOM to original node in light DOM\n eventsToDispatch.forEach(eventType => {\n clonedSlot.addEventListener(eventType, event => {\n if (event.target) {\n const elementPathInShadowDom = this.getElementPathInShadowDom(event);\n const elementPathInLightDom = this.getElementPathInLightDom(\n elementPathInShadowDom\n );\n\n // Dispatch same event to element in Light DOM\n if (elementPathInLightDom) {\n elementPathInLightDom.dispatchEvent(new Event(eventType));\n }\n\n // dispatchEvent focuses on the main component,\n // use setTimeout 0 to allow for display update to happen,\n // then restore the last focused element.\n setTimeout(() => {\n const originElementFocus = this.getElementPathInLightDom(\n elementPathInShadowDom,\n true\n ) as HTMLElement;\n if (originElementFocus) {\n originElementFocus.focus();\n }\n }, 0);\n }\n });\n });\n }\n\n /**\n * Render a slot in the shadow DOM.\n * @param {string} [slotName=''] - The slot name.\n * @param {string} [wrapperElement=null] - Optional wrapper for each slot.\n * @param {string[]} [eventsToDispatch=[]] - The events to dispatch.\n * @param {boolean} [addAnnotations=true] - Whether to add annotations to the slot.\n * @returns {Array | null} An array of cloned slots or null if no slots found.\n */\n renderInShadow(\n slotName = '',\n wrapperElement: null | string = null,\n eventsToDispatch = [] as string[],\n addAnnotations = true\n ) {\n // Cloning node allow us to re-use slots, as well a keep a copy in the light DOM.\n const slots = this.getSlottedNodes(slotName);\n\n if (slots) {\n const allClonedSlots = slots.map(slot => {\n const lightDomSlot = slot;\n let clonedSlot: HTMLElement;\n\n if (addAnnotations) {\n // Add additional annotations - cloned-slot attributes and a comment in light DOM\n clonedSlot = this.addAnnotations(slotName, lightDomSlot);\n } else {\n // Clone the slot into the shadow DOM as is with no annotations\n clonedSlot = lightDomSlot.cloneNode(true) as HTMLElement;\n }\n\n this.dispatchEventsToLightDom(eventsToDispatch, clonedSlot);\n\n if (wrapperElement) {\n const wrappedClonedSlot = document.createElement(wrapperElement);\n wrappedClonedSlot.appendChild(clonedSlot);\n return wrappedClonedSlot;\n }\n\n return clonedSlot;\n });\n\n // Add mutation observer to watch for changes in the light DOM.\n // Using setTimeout 0, to allow all updates to complete first.\n setTimeout(() => {\n this._mutationObserver.observe(this.host, {\n subtree: true,\n childList: true,\n attributes: true,\n characterData: true,\n });\n }, 0);\n\n return allClonedSlots;\n }\n return null;\n }\n\n /**\n * Get an array of CSS selectors that can be used to select the target of the event.\n * @param {Event} event - The event whose target we are trying to find.\n * @returns {Array} An array of CSS selectors that can be used to select the target of the event.\n */\n getElementPathInShadowDom(event: Event) {\n // Get the path of the event\n const path = event.composedPath() as HTMLElement[];\n\n // The selectors we will return\n const selectors = [];\n\n // Loop through the path until we find a shadow root\n let shadowFound = false;\n\n for (let i = 0; !shadowFound && i < path.length; i++) {\n const el = path[i];\n // If we find a shadow root, we are done\n if (el.nodeName === '#document-fragment') {\n shadowFound = true;\n } else {\n // Get a CSS selector for this element\n const selector = this.getSelectorForSingleElement(el);\n // If we found a selector, add it to our array\n if (selector) {\n selectors.push(selector);\n }\n }\n }\n\n // Return the selectors in the right order (we processed them in reverse)\n const reversedSelector = selectors.reverse();\n return reversedSelector;\n }\n\n /**\n * Get the class selector for a single element.\n * @param {HTMLElement} currentElement - The current element.\n * @returns {Object | null} The selector object or null if the element has no parent.\n */\n getSelectorForSingleElement(currentElement: HTMLElement) {\n // If the element has no parent element, it is the root element\n if (!currentElement.parentElement) {\n return null;\n }\n\n // Create a selector for the current element\n const currentSelectorClassName = Array.from(currentElement.classList).join(\n '.'\n );\n const currentSelector = `${currentElement.localName}${\n currentSelectorClassName !== '' ? '.' + currentSelectorClassName : ''\n }`;\n\n // Get all siblings of the current element\n const siblings = Array.from(\n currentElement.parentElement.querySelectorAll(currentSelector)\n );\n\n // Get the current element's index\n const currentIndex = siblings.indexOf(currentElement);\n\n // Create the final selector object\n const selector = {\n name: currentSelector,\n index: currentIndex,\n };\n return selector;\n }\n\n /**\n * Gets the targeted element from the event path.\n * @param {Array} elementPathInShadowDom - The path of the event.\n * @param {boolean} [isShadow=false] - Whether to search in the shadow DOM.\n * @returns {Element | null} The targeted element or null if not found.\n */\n getElementPathInLightDom(\n elementPathInShadowDom: {\n name: string;\n index: number;\n }[],\n isShadow = false\n ) {\n // start at the host element\n let El = isShadow\n ? (this.host.shadowRoot as Element | null)\n : (this.host as Element);\n\n if (!El) {\n return null;\n }\n\n // loop through the event path\n for (let i = 0; i < elementPathInShadowDom.length; i++) {\n // get the element with the name in the event path\n El = El.querySelectorAll(elementPathInShadowDom[i].name)[\n elementPathInShadowDom[i].index\n ];\n }\n // return the targeted element\n return El;\n }\n\n printExtraAttributes(extraAttributes: { name: string; value: string }[]) {\n return unsafeStatic(\n extraAttributes\n .map(attribute => `${attribute.name}=${attribute.value}`)\n .join(' ')\n );\n }\n\n /**\n * Conditionally render a slot with a wrapper and additional classes.\n * @param {string} slotName - The slot name.\n * @param {boolean} [renderInShadow=true] - Whether to render the slot in the shadow DOM.\n * @param {string | null} [classes=null] - Additional classes to add to the wrapper.\n * @param {string | null} [attributes=null] - Additional attributes to add to the wrapper.\n * @returns {TemplateResult | null} The rendered slot or null if the slot does not exist.\n */\n conditionalNGSlot(\n slotName: string,\n renderInShadow = true,\n extraClasses: string | null = null,\n extraAttributes: { name: string; value: string }[] = []\n ) {\n const defaultSlot = slotName === '' || slotName === null;\n const wrapperClasses = {\n 'default-slot': defaultSlot,\n [`${slotName}`]: !defaultSlot,\n [`${extraClasses}`]: extraClasses ?? false,\n };\n\n if (this.exist(slotName)) {\n return html` <div\n class=\"${ifDefined(classMap(wrapperClasses))}\"\n ${this.printExtraAttributes(extraAttributes)}\n >\n ${renderInShadow\n ? html`${this.renderInShadow(slotName)}`\n : html`<slot name=${slotName}></slot> `}\n </div>`;\n } else {\n return null;\n }\n }\n}\n","import { customElement, property } from 'lit/decorators.js';\nimport { OutlineElement } from '../../base/outline-element/outline-element';\nimport componentStyles from './tufts-heading.css.lit';\nimport { html } from 'lit/static-html.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport resolvedTailwindConfig from '../../../resolved-tailwind-config';\nimport { CSSResultArray } from 'lit';\nimport { SlotNGController } from '../../controllers/slot-ng-controller';\n\nexport type AllowedHeadingSizes = keyof typeof resolvedTailwindConfig.fontSize;\nexport type AllowedHeadingStyles =\n keyof typeof resolvedTailwindConfig.fontWeight;\n\n/**\n * The Tufts Heading\n * @element tufts-heading\n *\n * @slot - A default slot\n *\n * @attr level-size\n * @attr text-color\n * @attr page-headings\n * @attr clickable-card\n */\n@customElement('tufts-heading')\nexport class TuftsHeading extends OutlineElement {\n static styles: CSSResultArray = [componentStyles];\n ngSlot = new SlotNGController(this);\n\n @property({ type: String, reflect: true, attribute: 'level-size' })\n levelSize: AllowedHeadingSizes;\n\n @property({ type: String, reflect: true, attribute: 'text-color' })\n textColor: string;\n\n @property({ type: Boolean, reflect: true, attribute: 'page-headings' })\n pageHeadings = false;\n\n @property({ type: Boolean, reflect: true, attribute: 'clickable-card' })\n clickableCard = false;\n\n render() {\n const classes = {\n [`${this.levelSize}`]: !!this.levelSize,\n [`${this.textColor}`]: !!this.textColor,\n 'page-headings': !!this.pageHeadings,\n 'clickable-card': !!this.clickableCard,\n };\n\n return html`\n <div class=\"${classMap(classes)}\">${this.ngSlot.renderInShadow()}</div>\n `;\n }\n}\ndeclare global {\n interface HTMLElementTagNameMap {\n 'tufts-heading': TuftsHeading;\n }\n}\n","\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Linkset = void 0;\n;\n/**\n * A set of links.\n * @internal\n */\nclass Linkset {\n constructor(links) {\n this.elements = links;\n this.size = links.length;\n }\n /**\n * {@inheritDoc LinksetInterface.hasLinkTo}\n */\n hasLinkTo(relationType) {\n return this.elements.some((link) => link.rel === relationType);\n }\n /**\n * {@inheritDoc LinksetInterface.linkTo}\n */\n linkTo(relationType) {\n return this.elements.find((link) => link.rel === relationType);\n }\n /**\n * {@inheritDoc LinksetInterface.linksTo}\n */\n linksTo(relationType) {\n return new Linkset(this.elements.filter((link) => link.rel === relationType));\n }\n /**\n * {@inheritDoc LinksetInterface.linksFrom}\n */\n linksFrom(anchor) {\n return new Linkset(this.elements.filter((link) => link.anchor === anchor));\n }\n /**\n * {@inheritdoc LinksetInterface.linksWithAttribute}\n */\n linksWithAttribute(name) {\n return new Linkset(this.elements.filter((link) => Object.prototype.hasOwnProperty.call(link.attributes, name)));\n }\n /**\n * {@inheritdoc LinksetInterface.linksWithAttributeValue}\n */\n linksWithAttributeValue(name, value) {\n return new Linkset(this.linksWithAttribute(name).elements.filter((link) => {\n const values = (Array.isArray(link.attributes[name]) ? link.attributes[name] : [link.attributes[name]]);\n return values.some((v) => isAttributeEqual(v, value));\n }));\n }\n /**\n * Implements the iterable protocol.\n */\n [Symbol.iterator]() {\n const elems = this.elements;\n let pointer = 0;\n return {\n next() {\n if (pointer < elems.length) {\n return { value: elems[pointer++], done: false };\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n }\n /**\n * {@inheritDoc NormalizableLinksetInterface.normalize}\n */\n normalize() {\n const contexts = {};\n this.elements.forEach((_a) => {\n var { anchor, rel } = _a, target = __rest(_a, [\"anchor\", \"rel\"]);\n if (!Object.hasOwnProperty.call(contexts, anchor))\n contexts[anchor] = {};\n if (!Object.hasOwnProperty.call(contexts[anchor], rel))\n contexts[anchor][rel] = [];\n const { href, attributes } = target;\n const targetObject = Object.assign({ href }, attributes);\n contexts[anchor][rel].push(targetObject);\n });\n return {\n linkset: Object.entries(contexts).reduce((carry, [anchor, rels]) => {\n return [...carry, Object.assign({ anchor }, rels)];\n }, []),\n };\n }\n}\nexports.Linkset = Linkset;\n/**\n * Checks target attribute values for equality, respecting that a value may be internationalized.\n * @param a - A target attribute value.\n * @param b - Another target attribute value.\n * @returns boolean\n * True if both values are strictly equivalent. If the input values are internationalized, both the value and language\n * must match.\n * {@see {@link TargetAttributeValue}}\n */\nfunction isAttributeEqual(a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'string' && typeof b === 'string') {\n return a === b;\n }\n return a.value === a.value\n && a.language === a.language;\n}\n","\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Link = void 0;\n;\n/**\n * A web link.\n * @internal\n */\nclass Link {\n /**\n * Constructs a new link.\n * @param parameters - the link's parameters.\n * @see {@link LinkParameters}\n */\n constructor(parameters) {\n const { anchor, rel, href } = parameters, attributes = __rest(parameters, [\"anchor\", \"rel\", \"href\"]);\n this.anchor = anchor;\n this.rel = rel;\n this.href = href;\n this.attributes = attributes;\n }\n}\nexports.Link = Link;\n","\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.denormalize = exports.parse = void 0;\nconst linkset_1 = require(\"./core/linkset\");\nconst link_1 = require(\"./core/link\");\n/**\n * Denormalizes a set of links into an instance of a Linkset.\n * {@inheritDoc Linkset.from}\n * {@see {@link NormalizedLinksetInterface}}\n */\nfunction denormalize(normalized) {\n const links = [];\n normalized.linkset.forEach((contextObject) => {\n const { anchor } = contextObject, rels = __rest(contextObject, [\"anchor\"]);\n Object.keys(rels).forEach((rel) => {\n contextObject[rel].forEach((targetObject) => {\n links.push(new link_1.Link(Object.assign({ anchor, rel }, targetObject)));\n });\n });\n });\n return new linkset_1.Linkset(links);\n}\nexports.denormalize = denormalize;\n/**\n * Parses an application/linkset+json document into a Linkset instance.\n * {@see {@link denormalize}}\n */\nfunction parse(json) {\n return denormalize(JSON.parse(json));\n}\nexports.parse = parse;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildTree = exports.hierarchyCompare = exports.MenuElement = void 0;\nclass MenuElement {\n constructor(link, children = []) {\n this.link = link;\n this.children = buildTree([...children]);\n }\n get title() {\n return this.link.attributes.title;\n }\n}\nexports.MenuElement = MenuElement;\nfunction hierarchyCompare(a, b) {\n if (a.length === 0 && b.length === 0)\n return 0; // Nothing to sort\n if (a.length === 0 && b.length > 0)\n return -1; // End of A hierarchy\n if (a.length > 0 && b.length === 0)\n return 1; // End of B hierarchy\n // Compare the end of both hierarchies\n if (a.length === 1 && b.length === 1)\n return parseInt(a[0]) - parseInt(b[0]);\n // If the top levels are equal, compare the children\n if (a[0] === b[0])\n return hierarchyCompare(a.slice(1), b.slice(1));\n // Compare the top levels\n return parseInt(a[0]) - parseInt(b[0]);\n}\nexports.hierarchyCompare = hierarchyCompare;\nfunction buildTree(links) {\n // If there aren't any links or there is only one link, take a shortcut and return early.\n if (links.length < 2) {\n return links.length ? [new MenuElement(links.shift())] : [];\n }\n // Sorting by the hierarchy key is essential to capture link order and for the algorithm below to correctly build\n // subtrees.\n links.sort((a, b) => hierarchyCompare(a.attributes['hierarchy'], b.attributes['hierarchy']));\n const elements = [];\n let last;\n let children = [];\n do {\n const curr = links.shift();\n if (last) {\n if (curr.attributes['hierarchy'].length > last.attributes['hierarchy'].length) {\n children.push(curr);\n }\n else {\n elements.push(new MenuElement(last, children));\n last = curr;\n children = [];\n }\n }\n else {\n last = curr;\n }\n } while (links.length);\n elements.push(new MenuElement(last, children));\n return elements;\n}\nexports.buildTree = buildTree;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Menu = void 0;\nconst linkset_es6_1 = require(\"linkset-es6\");\nconst menu_element_1 = require(\"./menu-element\");\nclass Menu {\n constructor(machineName, linkset) {\n this.id = machineName;\n this.linkset = linkset;\n this.elements = this.linkset.elements;\n this.size = this.linkset.size;\n this.tree = (0, menu_element_1.buildTree)([...this.elements]);\n }\n [Symbol.iterator]() {\n const elems = this.elements;\n let pointer = 0;\n return {\n next() {\n if (pointer < elems.length) {\n return { value: elems[pointer++], done: false };\n }\n else {\n return { value: undefined, done: true };\n }\n },\n };\n }\n /**\n * {@inheritDoc LinksetInterface.hasLinkTo}\n */\n hasLinkTo(relationType) {\n return this.linkset.hasLinkTo(relationType);\n }\n /**\n * {@inheritDoc LinksetInterface.linkTo}\n */\n linkTo(relationType) {\n return this.linkset.linkTo(relationType);\n }\n /**\n * {@inheritDoc LinksetInterface.linksTo}\n */\n linksTo(relationType) {\n return new Menu(this.id, this.linkset.linksTo(relationType));\n }\n /**\n * {@inheritDoc LinksetInterface.linksFrom}\n */\n linksFrom(anchor) {\n return new Menu(this.id, this.linkset.linksTo(anchor));\n }\n /**\n * {@inheritdoc LinksetInterface.linksWithAttribute}\n */\n linksWithAttribute(name) {\n return new Menu(this.id, this.linkset.linksWithAttribute(name));\n }\n /**\n * {@inheritdoc LinksetInterface.linksWithAttributeValue}\n */\n linksWithAttributeValue(name, value) {\n return new Menu(this.id, this.linkset.linksWithAttributeValue(name, value));\n }\n /**\n * Creates a new menu from a normalized linkset.\n * @param normalized\n * A normalized linkset.\n * @param menuID\n * A menu machine name.o\n * @returns a new Menu object containing only link elements belonging to the given menu.\n */\n static from(normalized, menuID) {\n const linkset = (0, linkset_es6_1.denormalize)(normalized);\n const machineNames = [];\n if (!menuID) {\n linkset.linksWithAttribute('machine-name').elements.forEach((link) => {\n if (!machineNames.includes(link.attributes['machine-name'][0])) {\n machineNames.push(link.attributes['machine-name'][0]);\n }\n });\n }\n else {\n machineNames.push(menuID);\n }\n const menus = machineNames.map((machineName) => {\n return new Menu(machineName, linkset.linksWithAttributeValue('machine-name', machineName));\n });\n return menuID ? menus.shift() : menus;\n }\n}\nexports.Menu = Menu;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.denormalize = exports.parse = void 0;\nconst menu_1 = require(\"./core/menu\");\n/**\n * Denormalizes a set of links into an instance of a Menu.\n * {@inheritDoc Menu.from}\n * {@see {@link NormalizedMenuInterface}}\n */\nfunction denormalize(normalized, menuID) {\n return menu_1.Menu.from(normalized, menuID);\n}\nexports.denormalize = denormalize;\n/**\n * Parses Drupal menu JSON into a Menu instance.\n * {@see {@link denormalize}}\n */\nfunction parse(json, menuID) {\n return denormalize(JSON.parse(json), menuID);\n}\nexports.parse = parse;\n","import { OutlineElement } from '../../base/outline-element/outline-element';\nimport { CSSResultGroup, html, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport componentStyles from './tufts-menu.css.lit';\nimport '../tufts-icon/tufts-icon';\nimport '../tufts-heading/tufts-heading';\n\nimport {\n denormalize,\n MenuElementInterface,\n NormalizedMenuInterface,\n} from 'decoupled-menu-parser-es6';\n\n/**\n * The Tufts Menu Component\n *\n * @element tufts-menu\n *\n * @attr debug-menu\n * @attr menu-id\n * @attr menu-name\n * @attr menu-lang\n * @attr menu-type\n * @attr menu-heading-size\n * @attr mobile\n * @attr color-mode\n * @attr justify\n * @attr mobile-trigger\n */\n@customElement('tufts-menu')\nexport class TuftsMenu extends OutlineElement {\n static styles: CSSResultGroup = [componentStyles];\n\n tree: MenuElementInterface[];\n mobileStyle = 'none';\n isLoading = false;\n loadingMessage = 'Loading...';\n\n /**\n * Wether to use real from URL or debug menu.\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'debug-menu',\n })\n debugMenu: boolean;\n\n /**\n * Special case to strip link from top level items\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'top-menu-no-link',\n })\n topMenuNoLink = false;\n\n /**\n * Wether the menu item should be a button or text\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'menu-item-as-header',\n })\n menuItemAsHeader = false;\n\n /**\n * Menu machine name.\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'menu-id',\n })\n menuId = 'main';\n\n /**\n * Menu full name (for screen-readers).\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'menu-name',\n })\n menuName: string;\n\n /**\n * Menu language.\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'menu-lang',\n })\n menuLang = '';\n\n /**\n * Menu Type - 'menu' or 'groupcontentmenu'.\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'menu-type',\n })\n menuType = 'menu';\n\n /**\n * Use text items as dropdown buttons or as titles above children.\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'menu-heading-size',\n })\n menuHeadingSize = 'xs';\n\n /**\n * Force mobile menu (vertical) display.\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'mobile',\n })\n isMobile = false;\n\n /**\n * Color mode (light or dark).\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'color-mode',\n })\n colorMode = 'light';\n\n /**\n * Should menu be justified to the right.\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'justify',\n })\n justify: string;\n\n /**\n * Whether menu can trigger mobile/desktop switch.\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'mobile-trigger',\n })\n mobileTrigger = false;\n\n /**\n * Slice of menu to display (for multi-level menus).\n */\n @property({\n type: Number,\n reflect: true,\n attribute: 'initial-menu-depth',\n })\n initialMenuDepth = undefined;\n\n /**\n * Whether to keep first item or not. Can only be used if base-item attribute is set.\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'keep-base-item',\n })\n keepBaseItem = null;\n\n /**\n * How many levels of menu to display.\n */\n @property({\n type: Number,\n reflect: true,\n attribute: 'depth',\n })\n maxMenuDepth = null;\n\n /**\n * Whether menu dropdown should open/close automatically on hover\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'manual-mode',\n })\n manualMode = undefined;\n\n /**\n * Path of current page\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'active-page',\n })\n activePage: string;\n\n currentMenu: NormalizedMenuInterface;\n jsonMenuURL: string;\n\n connectedCallback() {\n super.connectedCallback();\n\n this.checkIfDesktopNavigationWraps =\n this.checkIfDesktopNavigationWraps.bind(this);\n\n if (this.menuId) {\n this.fetchData();\n }\n }\n\n closeMenuOnBlur() {\n const dropDownMenus = this.shadowRoot?.querySelectorAll('button ~ ul');\n dropDownMenus?.forEach(menu => {\n const allLinks = menu.querySelectorAll('a');\n const lastLink = allLinks[allLinks.length - 1];\n lastLink.addEventListener('blur', this.closeBlurMenu);\n });\n }\n\n closeBlurMenu(event: FocusEvent) {\n let buttonFound = false;\n let currentElement = event.target as HTMLElement;\n\n while (\n !buttonFound &&\n !currentElement.classList.contains('menu--level-2')\n ) {\n const closestUL = currentElement.parentElement?.closest('ul');\n const uncleElement = closestUL?.previousElementSibling;\n\n // Some submenus don't have dropdown button, the list is always expanded\n // If button found - close it, if not - go up one level\n if (uncleElement instanceof HTMLButtonElement) {\n uncleElement.setAttribute('aria-expanded', 'false');\n buttonFound = true;\n } else if (closestUL) {\n currentElement = closestUL;\n }\n }\n }\n\n closeMenu(event: FocusEvent) {\n const currentElement = event.target as HTMLElement;\n const button = currentElement.querySelector('button');\n button?.setAttribute('aria-expanded', 'false');\n }\n\n static openMenu(e: Event) {\n const target = e.target as HTMLElement;\n // If touch event, prevent mouseover event from triggering the submenu\n if (target.classList.contains('is-touch-event')) {\n target.classList.remove('is-touch-event');\n return;\n }\n\n // Do not close other menus unless the click is on the top level menu\n if (target.classList.contains('menu--level-1')) {\n TuftsMenu.closeAllMenusEvent(e);\n }\n\n const toggleButton = target.querySelector('button');\n toggleButton?.setAttribute('aria-expanded', 'true');\n }\n\n private _handleTouchStart(e: Event) {\n const target = e.target as HTMLElement;\n // If touch event, prevent mouseover event from triggering the submenu (gets removed in openMenu function)\n target.closest('li')?.classList.add('is-touch-event');\n }\n\n mobileTriggerMenu: HTMLElement | null | undefined;\n resizeObserver: ResizeObserver;\n\n /**\n * Set up Resize Observer to listen for changes to the size of the primary\n * navigation.\n *\n * @param {Element} primaryNav - The primary navigation's top-level <ul> element.\n */\n menuReady() {\n this.requestUpdate();\n\n // Only apply resizeObserver to menu with mobile-trigger\n if (this.mobileTrigger) {\n // After timeout of 0ms, the menu is in the DOM\n setTimeout(() => {\n this.mobileTriggerMenu = this.shadowRoot?.querySelector(\n `#${this.menuId}-menu`\n );\n if (this.mobileTriggerMenu) {\n this.resizeObserver = new ResizeObserver(\n this.checkIfDesktopNavigationWraps\n );\n this.resizeObserver.observe(this.mobileTriggerMenu);\n }\n this.closeMenuOnBlur();\n }, 0);\n }\n }\n\n disconnectedCallback() {\n if (this.mobileTriggerMenu) {\n this.resizeObserver.unobserve(this.mobileTriggerMenu);\n }\n }\n\n /**\n * This function performs a search on an array of objects to find the first item that matches the \"hierarchy\" property of a given active-page from Drupal. The search is based on the first three elements of the \"hierarchy\" property of the active-page, sliced from the full \"hierarchy\" array. The initial-menu-depth parameter is used to limit the search to the specified depth of the \"hierarchy\" array.\n * @param {string} activePage - The path of the currently active page.\n * @param {number} initialMenuDepth - The depth of the menu to display.\n * @param {NormalizedMenuInterface} jsonMenu - The menu data.\n * @returns {NormalizedMenuInterface} - The menu data.\n * @example\n * sliceMenu('/care/locations/circle-health/sub-test-2', 3, jsonMenu);\n * // => { \"title\": \"Circle Health\", \"url\": \"/care/locations/circle-health\", \"hierarchy\": [\"0\", \"1\", \"0\"] }\n *\n * Steps:\n * 1. Receives active-page from Drupal in the format \"/care/locations/circle-health/sub-test-2\".\n * 2. Look into that item's \"hierarchy\": [\"0\", \"1\", \"0\", \"3\", \"2\", \"1\"].\n * 3. According to initial-menu-depth (3), search json for the first item with that hierarchy, sliced with 3 first items (\"hierarchy\": [\"0\", \"1\", \"0\"]).\n * This is the base item.\n */\n\n sliceMenu() {\n if (\n !this.initialMenuDepth ||\n !this.activePage ||\n !this.currentMenu.linkset[0]\n ) {\n return;\n }\n const jsonMenuItems = this.currentMenu.linkset[0].item as unknown as {\n 'href': string;\n 'title': string;\n 'hierarchy': string[];\n 'machine-name': string[];\n }[];\n\n // find index of active page in jsonMenu\n const activePageIndex = jsonMenuItems.findIndex(item => {\n return JSON.stringify(item.href) === JSON.stringify(this.activePage);\n });\n\n // If active page is not found in menu, don't display the menu.\n if (activePageIndex === -1) {\n this.currentMenu.linkset[0].item = [];\n return;\n }\n\n // find top item in jsonMenu, according to initialMenuDepth\n const baseItemIndex = jsonMenuItems.findIndex(item => {\n return (\n JSON.stringify(item.hierarchy) ===\n JSON.stringify(\n jsonMenuItems[activePageIndex].hierarchy.slice(\n 0,\n this.initialMenuDepth\n )\n )\n );\n });\n\n const baseItem = jsonMenuItems[baseItemIndex];\n\n const baseItemDepth = jsonMenuItems[baseItemIndex].hierarchy.length;\n\n const filteredJsonMenuItems = jsonMenuItems.filter((item, index) => {\n // remove base item\n if (index === baseItemIndex) {\n if (!this.keepBaseItem) {\n return false;\n }\n }\n\n // Make sure menu item has same base hierarchy\n return baseItem.hierarchy.every(\n (val, index) => val === item.hierarchy[index]\n );\n });\n\n const slicedJsonMenuItems = filteredJsonMenuItems.map(item => {\n item.hierarchy = item.hierarchy.slice(baseItemDepth);\n return item;\n });\n\n this.currentMenu.linkset[0].item = slicedJsonMenuItems;\n }\n\n limitMenuDepth() {\n if (!this.maxMenuDepth || !this.currentMenu.linkset[0]) {\n return;\n }\n\n const jsonMenuItems = this.currentMenu.linkset[0].item;\n\n // If base item is kept - modify depth calculation\n const depth =\n this.maxMenuDepth - (this.initialMenuDepth && this.keepBaseItem ? 1 : 0);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentMenu.linkset[0].item = jsonMenuItems.filter((item: any) => {\n return item.hierarchy.length <= depth!;\n });\n }\n\n static menuLevelTemplate(levels: TemplateResult[], menuDepth: number) {\n return html`<ul class=\"menu--level-${menuDepth}\">\n ${levels}\n </ul>`;\n }\n\n buttonTemplate(\n classes: string,\n showTitle: boolean,\n title: string | undefined\n ) {\n return html`<button\n class=${classes}\n type=\"button\"\n @click=\"${TuftsMenu.toggleMenu}\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n >\n ${showTitle\n ? html`<span>${title}</span>`\n : html`<span class=\"visually-hidden\">${title} sub-navigation</span>`}\n <span class=\"dropdown-icon\">\n <tufts-icon\n name=\"chevron-down\"\n library=\"system\"\n size=\"1rem\"\n ></tufts-icon>\n </span>\n </button>`;\n }\n\n menuLinkAndParentTemplate(\n title: string | undefined,\n href: string,\n children: MenuElementInterface['children'],\n menuDepth: number\n ) {\n const manualMode = this.manualMode || this.isMobile;\n const menuLevelClass = `no-title dropdown-button menu--level-${menuDepth} menu-link--level-${menuDepth}`;\n return html`<li\n class=\"menu--level-${menuDepth} menu-item--level-${menuDepth}\"\n @mouseenter=\"${ifDefined(manualMode ? undefined : TuftsMenu.openMenu)}\"\n @mouseleave=\"${ifDefined(manualMode ? undefined : this.closeMenu)}\"\n @touchstart=\"${this._handleTouchStart}\"\n >\n <a\n href=${href}\n class=\"menu--level-${menuDepth} menu-link--level-${menuDepth}\"\n >${title}</a\n >\n ${this.buttonTemplate(menuLevelClass, false, title)}\n ${this.renderMenuLevel(children)}\n </li>`;\n }\n\n menuParentTemplate(\n title: string | undefined,\n children: MenuElementInterface['children'],\n menuDepth: number\n ) {\n const manualMode = this.manualMode || this.isMobile;\n return html`<li\n class=\"menu--level-${menuDepth} menu-item--level-${menuDepth}\"\n @mouseenter=\"${ifDefined(manualMode ? undefined : TuftsMenu.openMenu)}\"\n @mouseleave=\"${ifDefined(manualMode ? undefined : this.closeMenu)}\"\n @touchstart=\"${this._handleTouchStart}\"\n >\n ${this.menuItemAsHeader\n ? html`\n <tufts-heading level-size=\"${this.menuHeadingSize}\"\n ><h3>${title}</h3></tufts-heading\n >\n `\n : this.buttonTemplate('with-title dropdown-button', true, title)}\n ${this.renderMenuLevel(children)}\n </li>`;\n }\n\n static menuLinkTemplate(\n title: string | undefined,\n href: string,\n menuDepth: number\n ) {\n return html`<li\n class=\"menu--level-${menuDepth} menu-link--level-${menuDepth}\"\n >\n <a href=\"${href}\">${title}</a>\n </li>`;\n }\n\n static menuItemTemplate(title: string | undefined, menuDepth: number) {\n return html`<li\n class=\"menu--level-${menuDepth} menu-item--level-${menuDepth}\"\n >\n ${title}\n </li>`;\n }\n\n renderMenuLevel(level: MenuElementInterface['children']): TemplateResult {\n const levels = level.map((item: MenuElementInterface) => {\n let menuDepth = 0;\n if (Array.isArray(item.link.attributes.hierarchy)) {\n menuDepth = item.link.attributes.hierarchy.length;\n }\n return this.renderMenuItem(item, menuDepth);\n });\n\n return TuftsMenu.menuLevelTemplate(levels, levels[0].values[0] as number);\n }\n\n renderMenuItem(item: MenuElementInterface, menuDepth: number) {\n const title = item.link.attributes.title;\n const href = item.link.href;\n const children = item.children;\n if (!this.topMenuNoLink) {\n if (href && children && children.length) {\n return this.menuLinkAndParentTemplate(title, href, children, menuDepth);\n }\n }\n if (children && children.length) {\n return this.menuParentTemplate(title, children, menuDepth);\n }\n if (href) {\n return TuftsMenu.menuLinkTemplate(title, href, menuDepth);\n }\n return TuftsMenu.menuItemTemplate(title, menuDepth);\n }\n\n getDebugMenu() {\n return './dist/assets/menu-debug/' + this.menuId + '-menu.json';\n }\n\n getDrupalMenu() {\n // /system/menu/main/linkset\n // /es/system/menu/main/linkset\n // /system/groupcontentmenu/1/linkset\n // /es/system/groupcontentmenu/1/linkset\n\n const baseUrl = location.protocol + '//' + location.host;\n const langURL = this.menuLang ? '/' + this.menuLang : '';\n const drupalMenuURL =\n baseUrl + langURL + `/system/${this.menuType}/${this.menuId}/linkset`;\n return drupalMenuURL;\n }\n\n async fetchData() {\n this.isLoading = true;\n\n this.jsonMenuURL = this.debugMenu\n ? this.getDebugMenu()\n : this.getDrupalMenu();\n\n const response = await fetch(this.jsonMenuURL);\n if (!response.ok) {\n const message = `Unable to fetch ${this.jsonMenuURL}. ${response.status} ${response.statusText}`;\n throw new Error(message);\n }\n\n this.currentMenu = await response.json();\n\n this.sliceMenu();\n this.limitMenuDepth();\n\n const denormalized = denormalize(this.currentMenu, this.menuId);\n if (!Array.isArray(denormalized)) {\n this.tree = denormalized.tree;\n this.isLoading = false;\n this.menuReady();\n }\n }\n\n static closeAllMenusEvent(e: Event) {\n TuftsMenu.closeAllMenus(e.target as HTMLButtonElement);\n }\n\n static closeAllMenus(toggleButton: HTMLButtonElement) {\n const header = document.querySelector('tufts-header');\n\n const menus = header?.shadowRoot?.querySelectorAll('tufts-menu');\n // debugger;\n if (menus) {\n [...menus].forEach(menu => {\n const buttons = menu.shadowRoot?.querySelectorAll('button');\n if (buttons) {\n [...buttons].forEach(button => {\n if (button !== toggleButton) {\n button.setAttribute('aria-expanded', 'false');\n }\n });\n }\n });\n }\n }\n\n static toggleMenu(e: Event) {\n const target = e.target as HTMLElement;\n const toggleButton = target.closest('button');\n if (toggleButton) {\n const isExpanded = toggleButton.getAttribute('aria-expanded') === 'true';\n\n if (isExpanded) {\n toggleButton.setAttribute('aria-expanded', 'false');\n } else {\n toggleButton.setAttribute('aria-expanded', 'true');\n TuftsMenu.closeAllMenus(toggleButton);\n }\n }\n }\n\n private _dispatchMenuMode(mode: string) {\n const options = {\n detail: { menuId: this.menuId, mode: mode },\n bubbles: true,\n composed: true,\n };\n this.dispatchEvent(new CustomEvent('menuMode', options));\n }\n\n render() {\n if (this.isLoading) return null;\n // Don't display a menu if there is no data\n if (this.tree.length === 0) return null;\n\n return html`\n <nav\n class=\"${this.isMobile ? 'mobile' : ''} ${this.colorMode} ${this\n .justify} ${this.menuId}-menu\"\n id=\"${this.menuId}-menu\"\n aria-labelledby=\"${this.menuId}-menu-title\"\n >\n <h2 class=\"visually-hidden\" id=\"${this.menuId}-menu-title\">\n ${this.menuName}\n </h2>\n ${this.renderMenuLevel(this.tree)}\n </nav>\n `;\n }\n\n // Check if menu can fit on desktop\n // transitionToDesktopNavigation(navItem: HTMLElement, navWrapper: HTMLElement)\n transitionToDesktopNavigation() {\n this._dispatchMenuMode('desktop');\n\n // In Olivero - they first switch to desktop, then check if it should go back to mobile.\n /*\n // Double check to see if the navigation is wrapping, and if so, re-enable\n // mobile navigation. This solves an edge cases where if the amount of\n // navigation items always causes the primary navigation to wrap, and the\n // page is loaded at a narrower viewport and then widened, the mobile nav\n // may not be enabled.\n this._dispatchMenuMode('mobile');\n\n if (navWrapper.clientHeight > navItem.clientHeight) {\n this._dispatchMenuMode('desktop');\n }\n */\n }\n\n /**\n * Callback from Resize Observer. This checks if the primary navigation is\n * wrapping, and if so, transitions to the mobile navigation.\n *\n * @param {ResizeObserverEntry} entries - Object passed from ResizeObserver.\n */\n checkIfDesktopNavigationWraps(entries: ResizeObserverEntry[]) {\n const navItem = entries[0].target.querySelector('li');\n\n if (\n // Only set this if we're in desktop mode\n // @todo: add check for visibility of hamburger icon\n // isDesktopNav();\n // This line cause a problem when the screen is loaded as mobile, and expand, it never stop being mobile.\n // !document.querySelector('tufts-header')?.shadowRoot?.querySelector('header')?.classList.contains('mobile-mode') &&\n navItem &&\n entries[0].contentRect.height > navItem.clientHeight\n ) {\n const navMediaQuery = window.matchMedia(\n `(max-width: ${window.innerWidth + 15}px)` // 5px adds a small buffer before switching back.\n );\n this._dispatchMenuMode('mobile');\n\n // In the event that the viewport was resized, we remember the viewport\n // width with a one-time event listener ,so we can attempt to transition\n // from mobile navigation to desktop navigation.\n navMediaQuery.addEventListener(\n 'change',\n () => {\n this\n .transitionToDesktopNavigation\n // entries[0].target as HTMLElement,\n // navItem as HTMLElement\n ();\n },\n { once: true }\n );\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'tufts-menu': TuftsMenu;\n }\n}\n","\nimport { css } from 'lit';\nexport default css`\n/* Apply standardized box sizing to the component. */\n:host {\n box-sizing: border-box;\n}\n:host *,\n:host *::before,\n:host *::after {\n box-sizing: inherit;\n}\n/* Apply proper CSS for accessibly hiding elements to each component. */\n.visually-hidden {\n position: absolute !important;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n width: 1px;\n height: 1px;\n word-wrap: normal;\n}\n/* Apply component specific CSS */\n.container,.container-wrapper{position:relative}.container{--container-padding:var(--space-s-4xl);display:flex;flex-direction:column;gap:var(--tufts-container-space-between-elements);margin-left:auto;margin-right:auto;max-width:calc(var(--container-max-content-width) + var(--container-padding)*2);padding-left:var(--container-padding);padding-right:var(--container-padding);width:100%}.wide{--container-max-content-width:1660px}.medium{--container-max-content-width:1088px}.narrow{--container-max-content-width:864px}.full{--container-padding:0;max-width:2000px}.justify-end{justify-content:flex-end}.blue,.blue_dark,.green,.purple,.purple_dark{--color-font-content:var(--white);--color-font-link:var(--white);--background-color-text-wrapper-quote:var(--white);--color-font-quote:var(--black-800)}.blue_dark{--tufts-form-outline-color-hover-select:#9ccdfb}@media (prefers-reduced-motion:no-preference){.revealing{animation:revealing 1s ease-in-out}.drop-in{animation:drop-in 1s}.fade-in{animation:fade-in 2s}}@keyframes revealing{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes drop-in{0%{opacity:0;transform:rotate(30deg) translateY(-100%)}to{opacity:1;transform:rotate(0deg) translateY(0)}}`;","import { ReactiveControllerHost, ReactiveController } from 'lit';\nimport { debounce } from '../../utilities/debounce';\n\nexport type breakpointsRangeType = {\n min: number;\n max: number;\n};\n\n/**\n * ResizeController class\n * @implements {ReactiveController}\n */\nexport class ResizeController implements ReactiveController {\n host: ReactiveControllerHost & HTMLElement;\n resizeObserver: ResizeObserver;\n elementToObserve: Element;\n options: {\n debounce: number;\n breakpoints: number[];\n elementToRerender: ReactiveControllerHost & HTMLElement;\n };\n currentComponentWidth: number;\n currentBreakpointRange: number;\n breakpointsRangeArray: breakpointsRangeType[] = [];\n\n /**\n * Create a constructor that takes a host and options\n * @param {ReactiveControllerHost & Element} host - The host element\n * @param {{debounce?: number; breakpoints?: number[]}} [options={}] - The options object\n */\n constructor(\n host: ReactiveControllerHost & HTMLElement,\n options: {\n debounce?: number;\n breakpoints?: number[];\n elementToRerender?: ReactiveControllerHost & HTMLElement;\n } = {}\n ) {\n const defaultOptions = {\n debounce: 0,\n breakpoints: [768],\n elementToRerender: host,\n };\n\n /**\n * Remove any undefined variables from options object\n */\n const filteredOptionsObject = Object.fromEntries(\n Object.entries(options).filter(([_, value]) => value !== undefined)\n );\n this.options = { ...defaultOptions, ...filteredOptionsObject };\n\n this.host = host;\n this.host.addController(this);\n\n this.initializeBreakpointsRangeType();\n }\n\n /**\n * Initialize the breakpoints range array\n *\n * The default breakpoints array ([768]) will create this breakpoints range array:\n * [{min: 0, max: 767}, {min: 768, max: 100000}]\n *\n * If custom breakpoints array is provided, (for example [768, 1200, 2000]) this breakpoints range array will be created:\n * [{min: 0, max: 767}, {min: 768, max: 1199}, {min: 1200, max: 1999}, {min: 2000, max: 100000}]\n *\n */\n initializeBreakpointsRangeType() {\n // This will allow create an additional breakpoint from the last custom breakpoint to 100000\n this.options.breakpoints?.push(100000);\n\n let minBreakpoint = 0;\n this.options.breakpoints?.forEach(breakpoint => {\n const newBreakpointRange = {\n min: minBreakpoint,\n max: breakpoint - 1,\n };\n minBreakpoint = breakpoint;\n this.breakpointsRangeArray.push(newBreakpointRange);\n });\n }\n\n /**\n * Called when the host element is connected to the DOM\n */\n hostConnected() {\n if (!this.host.style.display) {\n // adding `display: block` to :host of component\n this.host.style.setProperty(\n 'display',\n 'var(--style-added-by-resize-controller, block)'\n );\n }\n\n // Create a new ResizeObserver and pass in the function to be called when the element is resized\n this.resizeObserver = new ResizeObserver(\n (entries: ResizeObserverEntry[]) => {\n // Create a debounced version of the onElementResize function\n debounce(\n this.onElementResize.bind(this),\n this.options.debounce\n )(entries);\n }\n );\n\n // Get a reference to the element you want to observe\n this.elementToObserve = this.host;\n\n // Observe the element for size changes\n this.resizeObserver.observe(this.elementToObserve);\n }\n\n /**\n * Called when the host element is disconnected from the DOM\n */\n hostDisconnected() {\n this.resizeObserver.disconnect();\n }\n\n /**\n * Called when the element is resized\n * @param {ResizeObserverEntry[]} _entries - The ResizeObserverEntry array\n */\n onElementResize(_entries: ResizeObserverEntry[]) {\n this.currentComponentWidth = _entries[0].contentRect.width;\n\n // skip if width is not yet set\n if (this.currentComponentWidth) {\n this.calculateNewBreakpointRange();\n }\n }\n\n /**\n * Calculate the new breakpoint based on the current width\n */\n calculateNewBreakpointRange() {\n let newBreakpointRange = this.currentBreakpointRange;\n\n this.breakpointsRangeArray.forEach((breakpoint, index) => {\n if (\n this.currentComponentWidth >= breakpoint.min &&\n this.currentComponentWidth <= breakpoint.max\n ) {\n newBreakpointRange = index;\n }\n });\n\n if (newBreakpointRange !== this.currentBreakpointRange) {\n this.currentBreakpointRange = newBreakpointRange;\n this.options.elementToRerender.requestUpdate();\n }\n }\n}\n","/**\n * Debounces a function\n * @template T\n * @param {T} func - The function to debounce\n * @param {number} delay - The delay in milliseconds\n * @param {boolean} [immediate=false] - Whether to execute the function immediately\n * @returns {(...args: Parameters<T>) => void} - The debounced function\n */\n\nexport const debounce = <T extends (...args: Parameters<T>) => void>(\n func: T,\n delay: number,\n immediate = false\n): ((...args: Parameters<T>) => void) => {\n let timeoutId: ReturnType<typeof setTimeout> | undefined = undefined;\n\n return function debounced(...args: Parameters<T>) {\n const executeFunc = () => func(...args);\n\n clearTimeout(timeoutId);\n\n if (immediate && timeoutId === undefined) {\n executeFunc();\n }\n\n timeoutId = setTimeout(executeFunc, delay);\n };\n};\n","import type { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/**\n * Options for the RevealTrigger controller.\n */\nexport type Options = {\n /**\n * The selector for the elements that trigger the reveal.\n */\n triggerSelector: string;\n /**\n * The class to add to the elements when they are revealed.\n */\n revealClass: string;\n /**\n * Whether to retrigger the reveal (by removing the class when the element is no longer in the viewport.)\n */\n retrigger?: boolean;\n};\n\n/**\n * The revealTrigger ReactiveController.\n *\n * This controller finds a class on the host element and adds a class when the element is in the viewport.\n * Very useful for animations - just add the class to the element and the animation will play when the element is in the viewport.\n *\n * @param host The host element\n */\nexport class RevealTrigger implements ReactiveController {\n host: ReactiveControllerHost & HTMLElement;\n options: Options;\n\n constructor(host: ReactiveControllerHost & HTMLElement, options: Options) {\n this.options = options;\n this.options = {\n triggerSelector: options.triggerSelector,\n revealClass: options.revealClass,\n retrigger: options.retrigger || false,\n };\n\n // Store a reference to the host\n this.host = host;\n this.host.addController(this);\n }\n\n /**\n * Called when the host element is connected to the DOM.\n */\n hostConnected() {\n this.setRevealClasses(this.host, this.options);\n }\n\n /**\n * Sets the reveal classes on the host element.\n *\n * @param host The host element\n * @param options The options for the controller\n */\n setRevealClasses(host: HTMLElement, options: Options) {\n setTimeout(() => {\n const elementsToReveal = host.shadowRoot?.querySelectorAll(\n options.triggerSelector\n );\n\n const revealObserver = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.intersectionRatio > 0) {\n entry.target.classList.add(options.revealClass);\n } else if (options.retrigger) {\n entry.target.classList.remove(options.revealClass);\n }\n });\n });\n\n elementsToReveal?.forEach(element => {\n revealObserver.observe(element);\n });\n }, 0);\n }\n}\n","import { CSSResultGroup, TemplateResult, html } from 'lit';\nimport { OutlineElement } from '../../base/outline-element/outline-element';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport componentStyles from './tufts-container.css.lit';\nimport '../tufts-pulse/tufts-pulse';\nimport { ResizeController } from '../../controllers/resize-controller';\nimport { RevealTrigger } from '../../controllers/reveal-trigger';\n\ntype containerWidths = 'wide' | 'medium' | 'narrow' | 'full';\n\ntype backgroundColor =\n | 'white'\n | 'blue'\n | 'blue_dark'\n | 'purple'\n | 'purple_dark'\n | 'green'\n | 'tint'\n | 'grey'\n | 'transparent';\n\n/**\n * The TuftseContainer component\n * @element tufts-container\n *\n * @slot - default\n * @attr top-margin\n * @attr bottom-margin\n * @attr padding\n * @attr pulse-orientation\n * @attr justify-end\n * @attr container-width\n * @attr background-color\n * @attr max-pulse-size\n * @attr pulse-mobile\n */\n@customElement('tufts-container')\nexport class TuftsContainer extends OutlineElement {\n static styles: CSSResultGroup = [componentStyles];\n resizeController: ResizeController;\n revealTrigger: RevealTrigger;\n\n // The resizeController is initialized here because displayPulseWidth is not set yet when constructor runs\n connectedCallback() {\n super.connectedCallback();\n if (this.pulseOrientation) {\n this.resizeController = new ResizeController(this, {\n breakpoints: [this.displayPulseWidth],\n });\n }\n }\n\n /**\n * The vertical space from the component above it (using Utopia fluid space variables defined in outline.theme.css, ie. space-3xl)\n **/\n @property({\n type: String,\n reflect: true,\n attribute: 'top-margin',\n })\n topMargin: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'bottom-margin',\n })\n bottomMargin: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'padding',\n })\n padding = 'space-l';\n\n @property({\n type: String,\n reflect: true,\n attribute: 'pulse-orientation',\n })\n pulseOrientation: null;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'pulse-top-alignment',\n })\n pulseTopAlignment: null;\n\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'justify-end',\n })\n justifyEnd = false;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'container-width',\n })\n containerWidth: containerWidths = 'wide';\n\n @property({\n type: String,\n reflect: true,\n attribute: 'background-color',\n })\n backgroundColor: backgroundColor = 'white';\n\n @property({\n type: String,\n reflect: true,\n attribute: 'max-pulse-size',\n })\n maxPulseSize = '650px';\n\n @property({\n type: String,\n reflect: true,\n attribute: 'gap',\n })\n gap = '0px';\n\n /**\n * Width at which the pulse is removed\n */\n @property({\n type: String,\n reflect: true,\n converter: Number,\n attribute: 'display-pulse-width',\n })\n displayPulseWidth = 1080;\n\n @property({ type: String, reflect: true, attribute: 'pulse-mobile' })\n pulseMobile = null;\n\n @property({ type: String, reflect: true, attribute: 'animation-type' })\n animationType: string;\n\n firstUpdated() {\n if (this.animationType) {\n this.revealTrigger = new RevealTrigger(this, {\n triggerSelector: '.animation',\n revealClass: this.animationType,\n });\n }\n }\n\n /**\n * By default, pulse is displayed only on desktop screens when pulse-orientation is set.\n * In the case where 'pulse-mobile' is true, the pulse is displayed at all resolutions.\n */\n displayPulse() {\n if (!this.pulseOrientation) {\n return false;\n }\n // if the resize controller is not defined yet, return false\n if (this.resizeController.currentBreakpointRange === undefined) {\n return false;\n }\n if (\n this.pulseMobile === 'true' ||\n this.resizeController.currentBreakpointRange !== 0\n ) {\n return true;\n }\n return false;\n }\n\n pulseTemplate(): TemplateResult {\n return html`\n ${this.displayPulse()\n ? html`<tufts-pulse\n orientation=\"${ifDefined(this.pulseOrientation)}\"\n max-size=\"${ifDefined(this.maxPulseSize)}\"\n pulse-top-alignment=\"${ifDefined(this.pulseTopAlignment)}\"\n ></tufts-pulse>`\n : null}\n `;\n }\n render(): TemplateResult {\n const containerWidth = this.containerWidth;\n let minPulseHeight = '0';\n // Pulse should always have a min-height\n if (\n this.pulseOrientation &&\n this.resizeController.currentBreakpointRange !== 0\n ) {\n minPulseHeight = `min(25rem, ${this.maxPulseSize})`;\n }\n const classes = {\n container: true,\n [containerWidth]: true,\n justifyEnd: this.justifyEnd,\n [this.backgroundColor]: this.backgroundColor,\n };\n const containerClass = {\n 'container-wrapper': true,\n 'animation': !!this.animationType,\n };\n return html`\n ${this.topMargin || this.bottomMargin || this.backgroundColor\n ? html` <style>\n .container-wrapper {\n background-color: var(--bg-color--${this.backgroundColor});\n padding-block: var(--${this.padding});\n min-height: ${minPulseHeight};\n }\n .container {\n margin-top: var(--${this.topMargin});\n margin-bottom: var(--${this.bottomMargin});\n --tufts-container-space-between-elements: ${this.gap};\n }\n </style>`\n : ''}\n <div class=\"${classMap(containerClass)}\">\n ${this.pulseTemplate()}\n <div class=\"${classMap(classes)}\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'tufts-container': TuftsContainer;\n }\n}\n","\nimport { css } from 'lit';\nexport default css`\n/* Apply standardized box sizing to the component. */\n:host {\n box-sizing: border-box;\n}\n:host *,\n:host *::before,\n:host *::after {\n box-sizing: inherit;\n}\n/* Apply proper CSS for accessibly hiding elements to each component. */\n.visually-hidden {\n position: absolute !important;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n width: 1px;\n height: 1px;\n word-wrap: normal;\n}\n/* Apply component specific CSS */\nheader{--logo-color--light-mode:var(--core-blue);--text-color--light-mode:var(--black-800);--link-hover-color--light-mode:var(--medium-blue);--chevron-color--light-mode:var(--medium-blue)}header:has(.extra-menu-toggle[aria-expanded=true]){--logo-color--dark-mode:var(--white);--text-color--dark-mode:var(--white);--link-hover-color--dark-mode:var(--white);--chevron-color--light-mode:var(--white)}.mobile .logo{max-width:180px}.logo{color:var(--logo-color--light-mode);color:var(--logo-color--dark-mode,var(--logo-color--light-mode));max-width:250px}.logo svg{display:flex;width:100%}.mobile-login{align-items:center;color:var(--black-800);display:flex;flex-direction:column;font-size:var(--fs-sm);line-height:var(--lh-sm);text-decoration:none}.header-wrapper{display:flex;flex-wrap:wrap;gap:2rem}.main-menu-wrapper{-webkit-margin-start:auto;align-items:center;display:flex;margin-inline-start:auto;position:relative}.extra-menu-toggle{-webkit-margin-start:2rem;-webkit-margin-before:4px;align-items:center;align-self:start;background:none;border:none;color:var(--medium-blue);cursor:pointer;display:flex;font-size:var(--fs-base);font-weight:var(--fw-semibold);margin-block-start:4px;margin-inline-start:2rem;padding:0}.extra-menu-toggle[aria-expanded=true]{color:var(--white)}.extra-menu-toggle--icon{-webkit-padding-start:.5rem;padding-inline-start:.5rem}.extra-menu--close{display:none}.close-search-button{height:3rem;justify-content:center;outline-offset:-2px;position:absolute;right:0;top:0;width:3rem}.close-search-button,.open-search-button{align-items:center;background:none;border:none;cursor:pointer;display:flex}.open-search-button{color:var(--chevron-color--light-mode);color:var(--chevron-color--dark-mode,var(--chevron-color--light-mode));flex-direction:column;padding:0}.mobile .open-search-button{width:3.5rem}header:not(.mobile) .open-search-button{-webkit-margin-before:4px;align-self:start;margin-block-start:4px}.search-dropdown{-webkit-padding-after:1rem;padding-block-end:1rem}[aria-expanded=false]+.search-wrapper{display:none}.search-wrapper{display:flex;flex-direction:column;gap:1.5rem}header:not(.mobile) .search-wrapper{background-color:var(--black-100);border-radius:0 0 16px 16px;border-top:2px solid var(--dark-green);box-shadow:3px 3px 11px rgba(0,0,0,.05),8px 10px 26px rgba(0,0,0,.19);padding:1rem;position:absolute;right:0;top:2.5rem;z-index:1}.search-wrapper .input-wrapper{align-items:center;background-color:#fff;border:1px solid var(--black-700);border-radius:41px;display:flex;justify-content:space-between;padding:.5rem .2rem}.search-wrapper input[type=search]{-webkit-margin-start:1rem;background-color:initial;border:none;font-size:var(--fs-lg);margin-inline-start:1rem;max-width:60vw;outline-offset:3px}.search-wrapper button[type=submit]{background-color:var(--dark-green);border-radius:50%;color:#fff;display:flex;height:3rem;margin-inline:1rem 5px;outline-offset:2px;outline-style:dashed;outline-width:2px;place-content:center;place-items:center;width:3rem}.search-wrapper button[type=submit]:focus{outline-color:var(--medium-blue)}.search-wrapper ::-moz-placeholder{color:var(--black-700)!important}.search-wrapper ::placeholder{color:var(--black-700)!important}.search-suggestions{-moz-column-gap:4.5rem;column-gap:4.5rem;display:flex;flex-wrap:wrap;justify-content:center;row-gap:1.5rem}.search-suggestions ul{display:flex;flex-direction:column;gap:1rem;list-style-type:none;margin:0;padding:0}.search-suggestions .suggestion-group-label{font-weight:var(--fw-bold);text-transform:uppercase}.search-suggestions .suggestion-link{color:var(--medium-blue);display:flex;gap:.5rem;text-decoration:none}.search-suggestions .suggestion-link:hover{text-decoration:underline}.mobile .search-suggestions{color:#fff;justify-content:flex-start}.mobile .search-suggestions li:first-child{font-size:var(--fs-base)}.mobile .search-suggestions .suggestion-link{-webkit-margin-start:1rem;color:#fff;margin-inline-start:1rem}.sticky-header{align-items:center;background-color:#fff;border-top:1px solid var(--black-450);bottom:0;display:flex;gap:1rem;gap:clamp(.5rem,-3rem + 20vw,3rem);justify-content:center;padding-block:.3rem .15rem;position:fixed;width:100%;z-index:500}.menu-dropdown{background-color:initial;border:none;cursor:pointer;padding:0;width:3rem}.menu-dropdown,.sticky-mobile-item{align-items:center;display:flex;flex-direction:column;font-size:1rem}.sticky-mobile-item{color:var(--black-800);line-height:1.5;text-decoration:none}.top-header{background-color:var(--white);border-bottom:1px solid var(--black-300);display:flex;gap:1rem;height:55px;margin-bottom:.5rem;padding:1.125rem 0;place-content:space-between;place-items:center}.sliding-header,.sliding-search{background:var(--dark-blue);display:grid;grid-template-rows:auto 1fr;height:calc(100% - 50px);inset:0;opacity:0;overflow:auto;position:fixed;transform:translateX(100%);visibility:hidden;z-index:500}@media (prefers-reduced-motion:no-preference){.sliding-header,.sliding-search{transition:transform .3s 0s,opacity 0s .3s,visibility 0s .3s}}.is-active{opacity:1;transform:translateX(0);visibility:visible}@media (prefers-reduced-motion:no-preference){.is-active{transition:transform .3s 0s}}.horizontal-divider{border-color:var(--light-blue);margin-block:var(--space-s);width:100%}`;","// code adopted from https://web.dev/building-a-dialog-component/#all-together\n\n// custom events to be added to <dialog>\nconst dialogClosingEvent = new Event('closing');\nconst dialogClosedEvent = new Event('closed');\nconst dialogOpeningEvent = new Event('opening');\nconst dialogOpenedEvent = new Event('opened');\nconst dialogRemovedEvent = new Event('removed');\n\n// track opening\nconst dialogAttrObserver = new MutationObserver(mutations => {\n mutations.forEach(async mutation => {\n if (mutation.attributeName === 'open') {\n const dialog = mutation.target as HTMLDialogElement;\n\n const isOpen = dialog.hasAttribute('open');\n if (!isOpen) return;\n\n // Limited browser support for inert yet, alternatively we add overflow: hidden to body element\n document.querySelector('body')!.style.overflow = 'hidden';\n\n // set focus\n const focusTarget = dialog.querySelector(\n '[autofocus]'\n ) as HTMLDialogElement;\n focusTarget\n ? focusTarget.focus()\n : dialog.querySelector('button')?.focus();\n\n dialog.dispatchEvent(dialogOpeningEvent);\n await animationsComplete(dialog);\n dialog.dispatchEvent(dialogOpenedEvent);\n }\n });\n});\n\n// track deletion\nconst dialogDeleteObserver = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n mutation.removedNodes.forEach(removedNode => {\n if (removedNode.nodeName === 'DIALOG') {\n removedNode.removeEventListener('click', lightDismiss);\n removedNode.removeEventListener('close', dialogClose);\n removedNode.dispatchEvent(dialogRemovedEvent);\n }\n });\n });\n});\n\n// wait for all dialog animations to complete their promises\nconst animationsComplete = (element: HTMLDialogElement) =>\n Promise.allSettled(\n element.getAnimations().map(animation => animation.finished)\n );\n\n// click outside the dialog handler\n\nconst lightDismiss = ({ target: dialog }: Event) => {\n const element = dialog as HTMLDialogElement;\n if (element.nodeName === 'DIALOG') {\n element.close('dismiss');\n }\n};\n\nconst dialogClose = async ({ target: dialog }: Event) => {\n document.querySelector('body')!.style.overflow = 'revert';\n const element = dialog as HTMLDialogElement;\n\n element.dispatchEvent(dialogClosingEvent);\n\n await animationsComplete(element);\n\n element.dispatchEvent(dialogClosedEvent);\n};\n\n// page load dialogs setup\nexport default async function (dialog: HTMLDialogElement) {\n dialog.addEventListener('click', lightDismiss);\n dialog.addEventListener('close', dialogClose);\n\n // Chrome doesn't close dialog with ESCAPE key, adding that functionality manually\n dialog.addEventListener('keydown', function (event) {\n if (event.key === 'Escape') {\n dialog.close('cancel');\n }\n });\n\n dialogAttrObserver.observe(dialog, {\n attributes: true,\n });\n\n dialogDeleteObserver.observe(document.body, {\n attributes: false,\n subtree: false,\n childList: true,\n });\n\n // remove loading attribute\n // prevent page load @keyframes playing\n await animationsComplete(dialog);\n dialog.removeAttribute('loading');\n}\n","export default `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 251 32\" width=\"251\" height=\"32\" fill=\"none\">\n <path fill=\"currentColor\" d=\"M.91.22h27.2V8.9h-4.3V5.2h-5.78v21.89h4.67v4.38H6.26V27.1h4.67V5.2H5.27v7.15H.9V.22ZM36.7 10.28v4.13h3.33v10.76l-.2.15c-1.46 1.12-2.85 1.69-4.12 1.69-1 0-1.74-.27-2.16-.8-.42-.53-.61-1.35-.61-2.6V10.28h-9.14v4.13h3.25v11.03c0 2.04.55 3.63 1.63 4.73 1.08 1.1 2.61 1.65 4.56 1.65a10.4 10.4 0 0 0 6.02-2.11l.77-.55v2.34h8.33v-4.1h-2.41V10.27h-9.25Zm17.79-8.09a7.99 7.99 0 0 0-1.98 5.53v2.55h-2.9v4.13h2.9v12.98h-2.91v4.11h12.24v-4.1h-3.4V14.4h3.4v-4.13h-3.4V7.33c0-2.97 1.25-3.6 2.29-3.6.92 0 1.65.7 2.16 2.07l4.06-3.26C65.55.87 63.37 0 60.4 0c-2.63 0-4.63.74-5.91 2.2h-.02Zm15.45 1.3-4.1 3.04v3.74h-2.76v4.13h2.75v12.14c0 3.6 1.65 5.29 5.19 5.29a12.78 12.78 0 0 0 4.71-.98v-3.9a6.14 6.14 0 0 1-1.69.3c-.95 0-1.56-.22-1.89-.66-.32-.44-.42-1.05-.42-2.06V14.42h3.98v-4.13h-3.97V2.17L69.9 3.51l.02-.02Zm8.2 7.86a5.57 5.57 0 0 0-1.54 1.96 5.73 5.73 0 0 0-.54 2.46 5.47 5.47 0 0 0 .56 2.52 5.3 5.3 0 0 0 1.64 1.95c1.5 1.15 4 2.02 7.45 2.6 1.74.3 2.9.61 3.51.96.31.14.57.36.75.65.19.3.28.63.28.97 0 .38-.1.74-.3 1.06a2.06 2.06 0 0 1-.77.75 5.2 5.2 0 0 1-2.81.65 5.98 5.98 0 0 1-3.5-.97 3.31 3.31 0 0 1-1-1.05 3.4 3.4 0 0 1-.48-1.4h-4.5v7.04h4.45v-1.6l.52.59c.89 1 2.6 1.51 5.07 1.51 2.68 0 4.77-.67 6.22-2a6.56 6.56 0 0 0 1.64-2.3 6.72 6.72 0 0 0 .53-2.81 6.26 6.26 0 0 0-1.14-3.76 6.34 6.34 0 0 0-3.04-2.25 39.48 39.48 0 0 0-5.94-1.4 14.05 14.05 0 0 1-3.23-.83 1.34 1.34 0 0 1-.57-.5 1.39 1.39 0 0 1-.2-.75c0-1.33 1.1-2.01 3.29-2.01 2.7 0 4.36.78 4.93 2.32h4.45V9.87h-4.34v.92l-.42-.18a13.4 13.4 0 0 0-5.35-1.06c-2.33 0-4.22.62-5.62 1.82v-.02Zm35.6 20.14 9.69-26.77v26.75h3.18V.22h-4.81L113 24.96 104.22.22H99.4v31.25h3.19V4.7l9.68 26.77 1.46.02ZM139.3 9.75c4.8 0 9.34 2.98 9.34 10.63v1.1h-15.66c.15 4.87 2.42 7.56 6.67 7.56 3.22 0 5.1-1.22 5.53-3.72h3.3c-.72 4.3-4.18 6.54-8.87 6.54-5.88 0-10.05-4.25-10.05-10.85v-.33c0-6.45 4.01-10.95 9.74-10.95v.02Zm5.96 8.97c-.32-4.41-2.53-6.17-5.96-6.17s-5.65 2.37-6.22 6.17h12.18ZM167.89.22h3.32v31.25h-3.33v-3.7a8.72 8.72 0 0 1-7.11 4.05c-5.45 0-9.39-3.96-9.39-10.62v-.33c0-6.54 3.98-11.16 9.72-11.16 3.45 0 5.6 1.74 6.8 3.8L167.87.23Zm.11 20.4c0-5.48-2.53-8.05-6.6-8.05-4.13 0-6.6 2.98-6.6 8.17v.33c0 5.4 2.83 7.97 6.34 7.97 3.85 0 6.87-2.6 6.87-8.1v-.32Zm7.22 10.85h3.3v-21.2h-3.3v21.2Zm1.65-28.46c.43 0 .85.14 1.22.38.35.25.63.6.8 1.01a2.3 2.3 0 0 1-.48 2.45 2.17 2.17 0 0 1-1.12.62c-.43.08-.87.04-1.27-.13a2.2 2.2 0 0 1-.98-.83 2.29 2.29 0 0 1-.36-1.25 2.3 2.3 0 0 1 .65-1.59c.4-.42.96-.66 1.54-.66Zm15.03 26c-4.01 0-6.8-2.77-6.8-8v-.33c0-5.03 2.9-8.13 6.68-8.13 2.87 0 5.25 1.27 5.77 4.66h3.26c-.64-5.44-4.7-7.48-9.03-7.48-5.57 0-10.1 4.41-10.1 10.95v.33c0 6.62 4.37 10.85 10.17 10.85 5.01 0 8.63-3.43 9.07-8.05h-3.06c-.36 3.47-3.02 5.2-5.97 5.2h.01Zm13.84-26c-.43 0-.86.13-1.22.38s-.64.6-.8 1a2.31 2.31 0 0 0-.13 1.3c.09.44.3.84.6 1.16a2.16 2.16 0 0 0 2.38.49c.4-.17.75-.46.99-.83.24-.37.36-.8.36-1.25a2.3 2.3 0 0 0-.64-1.58 2.18 2.18 0 0 0-1.54-.67Zm-1.65 7.27h3.31v21.2h-3.3v-21.2Zm17.3-.55c-3.42 0-5.73 1.74-6.68 3.76v-3.21h-3.3v21.2h3.3V18.51c0-3.84 2.74-5.85 5.8-5.85 3.34 0 4.9 1.68 4.9 5.44v13.36h3.29V18.36c0-6.22-3.02-8.63-7.31-8.63Zm29.35 11.72h-15.66c.16 4.86 2.42 7.56 6.68 7.56 3.22 0 5.06-1.22 5.52-3.72h3.3c-.71 4.3-4.17 6.54-8.87 6.54-5.88 0-10.06-4.25-10.06-10.85v-.33c0-6.45 4.02-10.95 9.74-10.95 4.82 0 9.35 2.98 9.35 10.63v1.12Zm-3.38-2.74c-.32-4.41-2.53-6.17-5.96-6.17-3.44 0-5.65 2.37-6.2 6.17h12.16Z\"/>\n</svg>\n`;\n","\nimport { css } from 'lit';\nexport default css`\n/* Apply standardized box sizing to the component. */\n:host {\n box-sizing: border-box;\n}\n:host *,\n:host *::before,\n:host *::after {\n box-sizing: inherit;\n}\n/* Apply proper CSS for accessibly hiding elements to each component. */\n.visually-hidden {\n position: absolute !important;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n width: 1px;\n height: 1px;\n word-wrap: normal;\n}\n/* Apply component specific CSS */\n:host{display:flex;vertical-align:middle}.btn{align-items:center;border:none;border-radius:60px;border-radius:var(--tufts-btn-radius,60px);cursor:pointer;display:flex;font-family:var(--ff-body);font-family:var(--tufts-btn-family,var(--ff-body));font-weight:var(--fw-bold);font-weight:var(--tufts-btn-weight,var(--fw-bold));justify-content:space-between;outline:none;padding:16px 36px;padding:var(--tufts-btn-padding,16px 36px);text-decoration-line:none;transition-duration:.1s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,outline,outline-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.btn[aria-disabled=true]{cursor:not-allowed;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn.primary{background-color:var(--dark-green);background-color:var(\n --tufts--button--primary-bg-color-default,var(--dark-green)\n );border:2px solid;border-color:var(--dark-green);box-shadow:none;box-shadow:var(--tufts--button--primary-ring-default,none);color:var(--white);color:var(--tufts--button--primary-text-color-default,var(--white));font-weight:700;padding:16px 32px;padding:var(\n --tufts--button--primary-padding,var(--tufts-btn-padding,16px 32px)\n )}.btn.primary:hover{background-color:var(--dark-blue);background-color:var(\n --tufts--button--primary-bg-color-hover,var(--dark-blue)\n );border-color:var(--dark-blue);box-shadow:none;box-shadow:var(--tufts--button--primary-ring-hover,none);color:var(--white);color:var(--tufts--button--primary-text-color-hover,var(--white))}.btn.primary:active,.btn.primary:focus{background-color:var(--dark-blue);background-color:var(\n --tufts--button--primary-bg-color-focus,var(--dark-blue)\n );border-color:var(--dark-blue);box-shadow:none;box-shadow:var(--tufts--button--primary-ring-focus,none);color:var(--white);color:var(--tufts--button--primary-text-color-focus,var(--white));font-weight:var(--fw-bold);font-weight:var(--tufts--button--primary-weight-focus,var(--fw-bold));outline:2px solid var(--dark-blue);outline-offset:2px}.btn.primary[aria-disabled=true]{background-color:var(--white);background-color:var(\n --tufts--button--primary--disabled-bg-color,var(--white)\n );border-color:var(--outline-gray-400);box-shadow:none;box-shadow:var(--tufts--button--primary--disabled-ring,none);color:var(--outline-gray-400);color:var(\n --tufts--button--primary--disabled-text-color,var(--outline-gray-400)\n );font-weight:var(--fw-bold);font-weight:var(--tufts--button--primary--disabled-weight,var(--fw-bold))}.btn.primary[aria-disabled=true]:focus{background-color:var(--white);background-color:var(\n --tufts--button--primary--disabled-bg-color-focus,var(--white)\n );box-shadow:none;box-shadow:var(--tufts--button--primary--disabled-ring-focus,none);color:var(--outline-gray-400);color:var(\n --tufts--button--primary--disabled-text-color-focus,var(--outline-gray-400)\n );font-weight:var(--fw-bold);font-weight:var(\n --tufts--button--primary--disabled-weight-focus,var(--fw-bold)\n );outline:none;outline-offset:none;outline-offset:var(\n --tufts-button--default--primary--disabled-ring-outline-offset,none\n )}.btn.primary.outlined{background-color:var(--white);color:var(--dark-green)}.btn.primary.outlined:focus,.btn.primary.outlined:hover{box-shadow:none;color:var(--dark-blue)}.btn.reversed{background-color:var(--white);background-color:var(\n --tufts--button--reversed-bg-color-default,var(--white)\n );border-radius:60px;border-radius:var(\n --tufts--button--reversed-radius,var(--tufts-btn-radius,60px)\n );box-shadow:none;box-shadow:var(--tufts--button--reversed-ring-default,none);color:var(--dark-green);color:var(--tufts--button--reversed-text-color-default,var(--dark-green));font-weight:var(--fw-bold);font-weight:var(--tufts--button--reversed-weight-default,var(--fw-bold));padding:16px 36px;padding:var(\n --tufts--button--reversed-padding,var(--tufts-btn-padding,16px 36px)\n )}.btn.reversed:hover{background-color:var(--dark-green);background-color:var(\n --tufts--button--reversed-bg-color-hover,var(--dark-green)\n );box-shadow:none;box-shadow:var(--tufts--button--reversed-ring-hover,none);color:var(--white);color:var(--tufts--button--reversed-text-color-hover,var(--white));font-weight:var(--fw-bold);font-weight:var(--tufts--button--reversed-weight-hover,var(--fw-bold))}.btn.reversed:active,.btn.reversed:focus{background-color:var(--white);background-color:var(\n --tufts--button--reversed-bg-color-focus,var(--white)\n );box-shadow:none;box-shadow:var(--tufts--button--reversed-ring-focus,none);color:var(--dark-blue);color:var(--tufts--button--reversed-text-color-focus,var(--dark-blue));font-weight:var(--fw-bold);font-weight:var(--tufts--button--reversed-weight-focus,var(--fw-bold));outline:2px solid var(--white);outline-offset:2px}.btn.reversed.outlined{background-color:initial;border:2px solid var(--white);color:var(--white)}.btn.reversed.outlined:hover{background-color:var(--white);box-shadow:2px solid var(--white);color:var(--dark-blue)}.btn.reversed.outlined:focus{background-color:var(--white);box-shadow:none;color:var(--dark-blue)}.btn.reversed[aria-disabled=true]{background-color:var(--white);background-color:var(\n --tufts--button--reversed--disabled-bg-color,var(--white)\n );box-shadow:var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--outline-gray-300);box-shadow:var(\n --tufts--button--reversed--disabled-ring,var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--outline-gray-300)\n );color:var(--outline-gray-400);color:var(\n --tufts--button--reversed--disabled-text-color,var(--outline-gray-400)\n );font-weight:var(--fw-bold);font-weight:var(--tufts--button--reversed--disabled-weight,var(--fw-bold))}.btn.reversed[aria-disabled=true]:active,.btn.reversed[aria-disabled=true]:focus{background-color:var(--white);background-color:var(\n --tufts--button--reversed--disabled-bg-color-focus,var(--white)\n );box-shadow:var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--outline-gray-300);box-shadow:var(\n --tufts--button--reversed--disabled-ring-focus,var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--outline-gray-300)\n );color:var(--outline-gray-400);color:var(\n --tufts--button--reversed--disabled-text-color-focus,var(--outline-gray-400)\n );font-weight:var(--fw-bold);font-weight:var(\n --tufts--button--reversed--disabled-weight-focus,var(--fw-bold)\n )}.btn.compact{background-color:var(--medium-blue);background-color:var(\n --tufts--button--compact-bg-color-default,var(--medium-blue)\n );border-radius:8px;box-shadow:none;box-shadow:var(--tufts--button--compact-ring-default,none);color:var(--white);color:var(--tufts--button--compact-text-color-default,var(--white));font-size:var(--fs-sm);font-weight:var(--fw-medium);font-weight:var(--tufts--button--compact-weight-default,var(--fw-medium));padding:11px 16px}.btn.compact:hover{box-shadow:none;box-shadow:var(--tufts--button--compact-ring-hover,none)}.btn.compact:active,.btn.compact:focus,.btn.compact:hover{background-color:var(--dark-blue);color:var(--white);font-weight:var(--fw-medium)}.btn.compact:active,.btn.compact:focus{box-shadow:none;box-shadow:var(--tufts--button--compact-ring-focus,none);outline:2px solid var(--dark-blue);outline-offset:2px}.btn.compact[aria-disabled=true]{background-color:var(--white);background-color:var(\n --tufts--button--compact--disabled-bg-color,var(--white)\n );box-shadow:var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--outline-gray-300);box-shadow:var(\n --tufts--button--compact--disabled-ring,var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--outline-gray-300)\n );color:var(--outline-gray-400);color:var(\n --tufts--button--compact--disabled-text-color,var(--outline-gray-400)\n );font-weight:var(--fw-medium);font-weight:var(--tufts--button--compact--disabled-weight,var(--fw-medium))}.btn.compact[aria-disabled=true]:focus{background-color:var(--white);background-color:var(\n --tufts--button--compact--disabled-bg-color-focus,var(--white)\n );box-shadow:var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--outline-gray-400);box-shadow:var(\n --tufts--button--compact--disabled-ring-focus,var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--outline-gray-400)\n );color:var(--outline-gray-400);color:var(\n --tufts--button--compact--disabled-text-color-focus,var(--outline-gray-400)\n );font-weight:var(--fw-medium);font-weight:var(\n --tufts--button--compact--disabled-weight-focus,var(--fw-medium)\n );outline:none}.btn.compact.reversed{background-color:var(--white);border:2px solid;color:var(--medium-blue);padding:10px 15px}.btn.compact.reversed:hover{background-color:var(--medium-blue);border-color:var(--medium-blue);color:var(--white)}.btn.compact.reversed:active,.btn.compact.reversed:hover{background-color:var(--white);border-color:var(--medium-blue);color:var(--medium-blue);outline:2px solid var(--medium-blue)}.btn.link{background-color:initial;background-color:var(--tufts--button--link-bg-color-default,transparent);border-radius:8px;box-shadow:none;box-shadow:var(--tufts--button--link-ring-default,none);color:var(--medium-blue);color:var(--tufts--button--link-text-color-default,var(--medium-blue));font-weight:var(--fw-bold);font-weight:var(--tufts--button--link-weight-default,var(--fw-bold));padding:5px 8px;padding:var(\n --tufts--button--link-padding,var(--tufts-btn-padding,5px 8px)\n );position:var(--tufts-button--link-position);-webkit-text-decoration:var(--tufts--button--link-decoration-default,none);text-decoration:none;text-decoration:var(--tufts--button--link-decoration-default,none)}.btn.link:hover{background-color:initial;background-color:var(--tufts--button--link-bg-color-hover,transparent);border-bottom:2px solid;border-radius:0;box-shadow:none;box-shadow:var(--tufts--button--link-ring-hover,none);color:var(--dark-blue);color:var(--tufts--button--link-text-color-hover,var(--dark-blue));font-weight:var(--fw-bold);font-weight:var(--tufts--button--link-weight-hover,var(--fw-bold));margin-bottom:-2px;-webkit-text-decoration:var(--tufts--button--link-decoration-hover,none);text-decoration:none;text-decoration:var(--tufts--button--link-decoration-hover,none)}.btn.link:active,.btn.link:focus{background-color:initial;background-color:var(--tufts--button--link-bg-color-focus,transparent);border:none;border-radius:8px;box-shadow:var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--medium-blue);box-shadow:var(\n --tufts--button--link-ring-focus,var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--medium-blue)\n );color:var(--dark-blue);color:var(--tufts--button--link-text-color-focus,var(--dark-blue));font-weight:var(--fw-bold);font-weight:var(--tufts--button--link-weight-focus,var(--fw-bold));margin:initial;-webkit-text-decoration:var(--tufts--button--link-decoration-focus,none);text-decoration:none;text-decoration:var(--tufts--button--link-decoration-focus,none)}.btn.link-reverse{background-color:initial;background-color:var(--tufts--button--link-bg-color-default,transparent);box-shadow:none;box-shadow:var(--tufts--button--link-ring-default,none);color:var(--white);font-weight:var(--fw-bold);font-weight:var(--tufts--button--link-weight-default,var(--fw-bold));padding:5px 8px;padding:var(\n --tufts--button--link-padding,var(--tufts-btn-padding,5px 8px)\n );position:var(--tufts-button--link-position);-webkit-text-decoration:var(--tufts--button--link-decoration-default,none);text-decoration:none;text-decoration:var(--tufts--button--link-decoration-default,none)}.btn.link-reverse:hover{background-color:var(--outline-transparent);background-color:var(\n --tufts--button--link-bg-color-hover,var(--outline-transparent)\n );border-bottom:2px solid;border-radius:0;box-shadow:none;box-shadow:var(--tufts--button--link-ring-hover,none);color:var(--white);font-weight:var(--fw-bold);font-weight:var(--tufts--button--link-weight-hover,var(--fw-bold));margin-bottom:-2px;-webkit-text-decoration:var(--tufts--button--link-decoration-hover,none);text-decoration:none;text-decoration:var(--tufts--button--link-decoration-hover,none)}.btn.link-reverse:active,.btn.link-reverse:focus{background-color:var(--outline-transparent);background-color:var(\n --tufts--button--link-bg-color-focus,var(--outline-transparent)\n );border:none;border-radius:60px;border-radius:var(\n --tufts--button--link-radius,var(--tufts-btn-radius,60px)\n );box-shadow:var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--white);box-shadow:var(\n --tufts--button--link-ring-default,var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--white)\n );color:var(--white);font-weight:var(--fw-bold);font-weight:var(--tufts--button--link-weight-focus,var(--fw-bold));margin:initial;-webkit-text-decoration:var(--tufts--button--link-decoration-focus,none);text-decoration:none;text-decoration:var(--tufts--button--link-decoration-focus,none)}.btn.link[aria-disabled=true]{background-color:var(--outline-transparent);background-color:var(\n --tufts--button--link--disabled-bg-color,var(--outline-transparent)\n );box-shadow:none;box-shadow:var(--tufts--button--link--disabled-ring,none);color:var(--outline-gray-500);color:var(\n --tufts--button--link--disabled-text-color,var(--outline-gray-500)\n );font-weight:var(--fw-bold);font-weight:var(--tufts--button--link--disabled-weight,var(--fw-bold));-webkit-text-decoration:var(--tufts--button--link--disabled-decoration,none);text-decoration:none;text-decoration:var(--tufts--button--link--disabled-decoration,none)}.btn.link[aria-disabled=true]:focus{background-color:initial;background-color:var(\n --tufts--button--link--disabled-bg-color-focus,transparent\n );box-shadow:var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--outline-gray-500);box-shadow:var(\n --tufts--button--link--disabled-ring-focus,var(--outline-ring-inset) 0 0 0 var(--outline-ring-offset-width) var(--outline-gray-500)\n );color:var(--outline-gray-500);color:var(\n --tufts--button--link--disabled-text-color-focus,var(--outline-gray-500)\n );font-weight:var(--fw-bold);font-weight:var(\n --tufts--button--link--disabled-weight-focus,var(--fw-bold)\n );-webkit-text-decoration:none;-webkit-text-decoration:var(\n --tufts--button--link--disabled-decoration-focus,none\n );text-decoration:none;text-decoration:var(\n --tufts--button--link--disabled-decoration-focus,none\n )}.btn.link.large{padding:10px}.btn.player{background-color:var(--white);border:2px solid var(--white);border-radius:100%;color:var(--medium-blue);height:60px;justify-content:center;line-height:var(--tufts-button--player-line-height);padding:0;width:60px}.btn.player:hover{background-color:var(--medium-blue);color:var(--white)}.btn.player:active,.btn.player:focus{background-color:var(--white);color:var(--medium-blue);outline:2px solid var(--white);outline-offset:4px}.btn.player ::slotted(tufts-icon[slot=right]){margin-left:var(--spacing-1)}.btn.button-icon{background-color:var(--dark-green);border-radius:100%;color:var(--white);height:58px;justify-content:center;line-height:58px;padding:0;width:58px}.btn.button-icon:hover{background-color:var(--dark-blue)}.btn.button-icon:active,.btn.button-icon:focus{background-color:var(--dark-green);outline:2px solid var(--white);outline-offset:4px}.btn.small{font-size:var(--fs-sm);line-height:var(--lh-sm);padding:12px 24px}.btn.medium{font-size:var(--fs-p-base);line-height:var(--lh-base)}.btn.large{width:100%}.full-link-in-slot a{color:currentColor;text-decoration:none}div[cloned-slot-name=default]{align-self:center;display:flex;gap:.5rem}.arrow-right:after{margin-left:.5em;-webkit-mask-size:cover;-webkit-mask:url('data:image/svg+xml;utf8,<svg width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6.11959e-07 9.5L12.17 9.5L6.58 15.09L8 16.5L16 8.5L8 0.499999L6.59 1.91L12.17 7.5L7.86805e-07 7.5L6.11959e-07 9.5Z\" fill=\"currentColor\"/></svg>') no-repeat 50% 50%;mask:url('data:image/svg+xml;utf8,<svg width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6.11959e-07 9.5L12.17 9.5L6.58 15.09L8 16.5L16 8.5L8 0.499999L6.59 1.91L12.17 7.5L7.86805e-07 7.5L6.11959e-07 9.5Z\" fill=\"currentColor\"/></svg>') no-repeat 50% 50%;mask-size:cover}.arrow-right:after,.x-circle-fill-before:before{background-color:currentColor;content:\"\";height:1em;width:1em}.x-circle-fill-before:before{margin-right:.5em;-webkit-mask-size:cover;-webkit-mask:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-x-circle-fill\" viewBox=\"0 0 16 16\"><path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293 5.354 4.646z\"></path></svg>') no-repeat 50% 50%;mask:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-x-circle-fill\" viewBox=\"0 0 16 16\"><path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293 5.354 4.646z\"></path></svg>') no-repeat 50% 50%;mask-size:cover}.chevron-right:after{margin-left:.5em;-webkit-mask-size:cover;-webkit-mask:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-chevron-right\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"></path></svg>') no-repeat 50% 50%;mask:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-chevron-right\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"></path></svg>') no-repeat 50% 50%;mask-size:cover}.chevron-left-before:before,.chevron-right:after{background-color:currentColor;content:\"\";height:1em;width:1em}.chevron-left-before:before{margin-right:.5em;-webkit-mask-size:cover;-webkit-mask:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-chevron-left\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/></svg>') no-repeat 50% 50%;mask:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-chevron-left\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/></svg>') no-repeat 50% 50%;mask-size:cover}.search:after{-webkit-mask-size:cover;-webkit-mask:url('data:image/svg+xml;utf8,<svg viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M20.6719 19.9434L15.1758 14.4473C16.3652 13.0117 17.0215 11.166 17.0215 9.15625C17.0215 4.48047 13.166 0.625 8.49023 0.625C3.77344 0.625 0 4.48047 0 9.15625C0 13.873 3.81445 17.6875 8.49023 17.6875C10.459 17.6875 12.3047 17.0312 13.7812 15.8418L19.2773 21.3379C19.4824 21.543 19.7285 21.625 20.0156 21.625C20.2617 21.625 20.5078 21.543 20.6719 21.3379C21.082 20.9688 21.082 20.3535 20.6719 19.9434ZM1.96875 9.15625C1.96875 5.54688 4.88086 2.59375 8.53125 2.59375C12.1406 2.59375 15.0938 5.54688 15.0938 9.15625C15.0938 12.8066 12.1406 15.7188 8.53125 15.7188C4.88086 15.7188 1.96875 12.8066 1.96875 9.15625Z\" fill=\"currentColor\"/></svg>') no-repeat 50% 50%;mask:url('data:image/svg+xml;utf8,<svg viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M20.6719 19.9434L15.1758 14.4473C16.3652 13.0117 17.0215 11.166 17.0215 9.15625C17.0215 4.48047 13.166 0.625 8.49023 0.625C3.77344 0.625 0 4.48047 0 9.15625C0 13.873 3.81445 17.6875 8.49023 17.6875C10.459 17.6875 12.3047 17.0312 13.7812 15.8418L19.2773 21.3379C19.4824 21.543 19.7285 21.625 20.0156 21.625C20.2617 21.625 20.5078 21.543 20.6719 21.3379C21.082 20.9688 21.082 20.3535 20.6719 19.9434ZM1.96875 9.15625C1.96875 5.54688 4.88086 2.59375 8.53125 2.59375C12.1406 2.59375 15.0938 5.54688 15.0938 9.15625C15.0938 12.8066 12.1406 15.7188 8.53125 15.7188C4.88086 15.7188 1.96875 12.8066 1.96875 9.15625Z\" fill=\"currentColor\"/></svg>') no-repeat 50% 50%;mask-size:cover}.player-stroked:after,.search:after{background-color:currentColor;content:\"\";height:1.5rem;width:1.5rem}.player-stroked:after{margin-left:.3em;-webkit-mask-size:auto;-webkit-mask:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 25\" fill=\"none\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18 12.4999L1.90735e-06 0.808593L8.85259e-07 24.1913L18 12.4999ZM14.3283 12.4999L2 4.49248L2 20.5074L14.3283 12.4999Z\" fill=\"currentColor\"></path></svg>') no-repeat 50% 50%;mask:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 25\" fill=\"none\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18 12.4999L1.90735e-06 0.808593L8.85259e-07 24.1913L18 12.4999ZM14.3283 12.4999L2 4.49248L2 20.5074L14.3283 12.4999Z\" fill=\"currentColor\"></path></svg>') no-repeat 50% 50%;mask-size:auto}`;","import { CSSResultGroup, html, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport componentStyles from './tufts-button.css.lit';\nimport { LinkTargetType } from '../../base/outline-link/config';\nimport { OutlineElement } from '../../base/outline-element/outline-element';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { SlotNGController } from '../../controllers/slot-ng-controller';\n\nexport type ButtonVariant =\n | 'link'\n | 'primary'\n | 'reversed'\n | 'compact'\n | 'player'\n | 'icon';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\n\n/**\n * The tufts Button component\n * @element tufts-button\n * @since 1.0.0\n *\n * @slot - default slot, used for button text.\n * @slot left - slot used for left side icon.\n * @slot right - slot used for right side icon.\n * @todo Convert styles to utilize CSS Variables.\n *\n * @attr icon-type\n * @attr button-url\n * @attr button-label\n * @attr button-target\n * @attr button-variant\n * @attr button-size\n * @attr is-disabled\n */\n@customElement('tufts-button')\nexport class TuftsButton extends OutlineElement {\n static styles: CSSResultGroup = [componentStyles];\n ngSlot = new SlotNGController(this);\n\n /**\n * The url to use for a link. This will render an anchor element.\n * Do not set this prop if you want to render a button element.\n */\n\n @property({ type: String, attribute: 'icon-type' })\n iconType = 'arrow-right';\n\n @property({ type: String, attribute: 'button-url' })\n buttonUrl: string;\n\n /**\n * ARIA label attribute to pass down to the resulting button or a\n * element. This is required for accessibility if we use a button\n * with an icon only.\n */\n @property({ type: String, attribute: 'button-label' })\n buttonLabel: string;\n\n /**\n * The target to use for a link, used in conjunction with the url attribute.\n */\n @property({ type: String, attribute: 'button-target' })\n buttonTarget: LinkTargetType;\n\n /**\n * The button style variant to use.\n */\n @property({ type: String, attribute: 'button-variant', reflect: true })\n buttonVariant: ButtonVariant = 'primary';\n\n /**\n * The button size to use.\n */\n @property({ type: String, attribute: 'button-size' })\n buttonSize: ButtonSize = 'medium';\n\n /**\n * Whether the button is disabled. Only applies to\n * implementations not using the url property\n */\n @property({ type: Boolean, attribute: 'is-disabled' })\n isDisabled = false;\n\n /**\n * A click handler to be passed only to onClick. DO NOT USE @click on this component.\n */\n @property() onClick: () => void;\n\n /**\n * A keyUp handler to be passed to the onKeyUp. DO NOT USE @keyup on this component.\n */\n @property() onKeyUp: () => void;\n\n hasLeftIcon: boolean;\n hasRightIcon: boolean;\n /**\n * Check to see if the link is external, pass target=\"_blank\" and rel=\"external\" if so. Returns true if the link is external.\n */\n isURLExternal(url: string): boolean {\n return (\n new URL(url, window.location.href).hostname !== window.location.hostname\n );\n }\n\n /**\n * TLDR: when a link has the attribute target=\"_blank\", always add ref=\"noreferrer noopener\"\n * https://cheatsheetseries.owasp.org/cheatsheets/HTML5_Security_Cheat_Sheet.html#tabnabbing\n */\n buttonRelRender(): string | undefined {\n return this.isURLExternal(this.buttonUrl)\n ? 'noreferrer noopener'\n : undefined;\n }\n\n /**\n * You can override target manually, but if not, we'll set it to \"_blank\" if the link is external.\n */\n buttonTargetRender(): LinkTargetType | undefined {\n if (this.buttonTarget) {\n return this.buttonTarget;\n }\n return this.isURLExternal(this.buttonUrl) ? '_blank' : undefined;\n }\n\n firstUpdated(): void {\n this.hasLeftIcon = this.ngSlot.exist('left');\n this.hasRightIcon = this.ngSlot.exist('right');\n }\n\n buttonTemplate(): TemplateResult {\n return this.buttonUrl\n ? html` <a\n class=\"btn ${this.buttonVariant} ${this.buttonSize} ${this.iconType}\"\n href=${this.buttonUrl}\n target=\"${ifDefined(this.buttonTargetRender())}\"\n rel=\"${ifDefined(this.buttonRelRender())}\"\n aria-label=\"${ifDefined(this.buttonLabel)}\"\n aria-disabled=\"${ifDefined(this.isDisabled)}\"\n >\n ${this.iconTemplate(this.hasLeftIcon, 'left')}\n ${this.ngSlot.renderInShadow()}\n ${this.iconTemplate(this.hasRightIcon, 'right')}\n </a>`\n : html`<button\n class=\"btn ${this.buttonVariant} ${this.buttonSize} ${this.iconType}\"\n aria-label=\"${ifDefined(this.buttonLabel)}\"\n aria-disabled=\"${ifDefined(this.isDisabled)}\"\n .onclick=\"${this.onClick}\"\n .onkeyup=\"${this.onKeyUp}\"\n >\n ${this.iconTemplate(this.hasLeftIcon, 'left')}\n ${this.ngSlot.renderInShadow()}\n ${this.iconTemplate(this.hasRightIcon, 'right')}\n </button> `;\n }\n\n linkInSlotTemplate(): TemplateResult {\n const link = this.querySelector('a');\n if (!link) {\n return html`<div\n class=\"btn ${this.buttonVariant} ${this.buttonSize} ${this.iconType}\"\n aria-disabled=\"true\"\n >\n ${this.ngSlot.renderInShadow()}\n </div>`;\n } else {\n const buttonVariantClasses = this.buttonVariant;\n const classesArray = [\n ...buttonVariantClasses.split(' '),\n 'btn',\n this.buttonSize,\n this.iconType,\n ];\n // Remove all empty strings from classes array, to prevent errors in `link.classList.add` below\n const filteredClassesArray = classesArray.filter(item => item !== '');\n link.classList.add(...filteredClassesArray);\n return html`\n ${this.iconTemplate(this.hasLeftIcon, 'left')}\n ${this.ngSlot.renderInShadow()}\n ${this.iconTemplate(this.hasRightIcon, 'right')}\n `;\n }\n }\n\n /**\n * Component render function\n * @returns TemplateResult\n * @todo This should utilize `outline-link` component.\n */\n render(): TemplateResult {\n return this.buttonLabel\n ? // If button-label provided, expect slot with text only\n this.buttonTemplate()\n : // If button-label is not provided, expect slot with a full link markup\n this.linkInSlotTemplate();\n }\n\n /**\n * Icon template\n *\n * @param exists - Whether the icon slot exists.\n * @param slot - The slot name to use.\n * @returns - The icon template.\n */\n iconTemplate(exists: boolean, slotName: string): TemplateResult | null {\n if (!exists) return null;\n return html`${this.ngSlot.renderInShadow(slotName)}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'tufts-button': TuftsButton;\n }\n}\n","import { OutlineElement } from '../../base/outline-element/outline-element';\nimport { CSSResultGroup, html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport componentStyles from './tufts-header.css.lit';\n// import { TuftsMenu } from '../tufts-menu/tufts-menu';\nimport GuiDialog from '../../../utilities/dialog';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport logoMarkup from './logo-markup';\nimport '../tufts-menu/tufts-menu';\nimport '../tufts-container/tufts-container';\n// import '../tufts-location/tufts-location';\nimport '../tufts-heading/tufts-heading';\nimport '../tufts-button/tufts-button';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\nimport { SlotNGController } from '../../controllers/slot-ng-controller';\n\n/**\n * The Tufts Header Component\n *\n * @element tufts-header\n *\n * @slot translate\n *\n * @attr debug-menu\n * @attr menu-id\n * @attr menu-name\n * @attr menu-lang\n * @attr menu-type\n * @attr hamburger-menu-open\n * @attr hamburger-menu-name\n * @attr mobile-mode\n * @attr group-name-label\n * @attr group-menu-id\n * @attr no-group-label\n * @attr zipcode-label\n * @attr find-button-label\n * @attr current-language\n * @attr translate-label\n * @attr en-url\n * @attr es-url\n * @attr main-menu-label\n * @attr utility-menu-label\n * @attr account-menu-1-label\n * @attr account-menu-1-url\n * @attr account-menu-2-label\n * @attr account-menu-2-url\n * @attr donate-url\n * @attr donate-label\n * @attr en-label\n * @attr es-label\n * @attr search-url\n * @attr search-placeholder\n * @attr menu-label\n * @attr group-menu-label\n * @attr chapter-url\n * @attr warning-text\n */\n\n@customElement('tufts-header')\nexport class TuftsHeader extends OutlineElement {\n static styles: CSSResultGroup = [componentStyles];\n ngSlot = new SlotNGController(this);\n\n @query('.mobile-menu-container')\n mobileMenu: HTMLElement;\n\n /**\n * Wether to use real from URL or debug menu.\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'debug-menu',\n })\n debugMenu: boolean;\n\n /**\n * Menu machine name.\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'menu-id',\n })\n menuId = 'main';\n\n /**\n * Menu full name (for screen-readers).\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'menu-name',\n })\n menuName = 'Main Navigation';\n\n /**\n * Menu language.\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'menu-lang',\n })\n menuLang = '';\n\n /**\n * Menu Type - 'menu' or 'groupcontentmenu'.\n */\n @property({\n type: String,\n reflect: true,\n attribute: 'menu-type',\n })\n menuType = 'menu';\n\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'hamburger-menu-open',\n })\n hamburgerMenuOpen: boolean;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'hamburger-menu-name',\n })\n hamburgerMenuName = 'main menu';\n\n /**\n * Force mobile menu (vertical) display.\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'mobile-mode',\n })\n isMobile = false;\n\n // isSticky = false;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'group-name-label',\n })\n groupNameLabel: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'group-menu-id',\n })\n groupMenuId: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'no-group-label',\n })\n noGroupLabel: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'zipcode-label',\n })\n zipcodeLabel: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'find-button-label',\n })\n findButtonLabel: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'current-language',\n })\n currentLanguage: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'translate-label',\n })\n translateLabel: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'en-url',\n })\n enURL: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'es-url',\n })\n esURL: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'main-menu-label',\n })\n mainMenuLabel: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'utility-menu-label',\n })\n utilityMenuLabel: string;\n\n // @property({\n // type: String,\n // reflect: true,\n // attribute: 'location-menu-label',\n // })\n // locationMenuLabel: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'account-menu-1-label',\n })\n accountMenu1Label: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'account-menu-1-url',\n })\n accountMenu1URL: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'account-menu-2-label',\n })\n accountMenu2Label: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'account-menu-2-url',\n })\n accountMenu2URL: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'donate-url',\n })\n donateURL: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'donate-label',\n })\n donateLabel: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'en-label',\n })\n enLabel: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'es-label',\n })\n esLabel: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'search-label',\n })\n searchLabel = 'Search';\n\n @property({\n type: String,\n reflect: true,\n attribute: 'search-url',\n })\n searchURL = 'search';\n\n @property({\n type: String,\n reflect: true,\n attribute: 'search-placeholder',\n })\n searchPlaceholder: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'menu-label',\n })\n menuLabel: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'group-menu-label',\n })\n groupMenuLabel: string;\n\n // @property({\n // type: Boolean,\n // reflect: true,\n // attribute: 'location-finder-open',\n // })\n // locationFinderOpen: boolean;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'chapter-url',\n })\n chapterUrl: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'warning-text',\n })\n warningText: string;\n\n @property({\n type: Object,\n })\n browserInfo: { name: string; version: number | string };\n\n @state() searchDropdownStatus = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.browserInfo = this.checkBrowser();\n }\n\n firstUpdated() {\n // this.stickyMode();\n }\n\n // USE THIS IF WE WANT TO GO BACK TO ANIMATE MENU (WIP FOR LATER)\n // updated() {\n // if (!this.hamburgerMenuOpen) {\n // this.collapseSection(this.mobileMenu);\n // }\n // }\n\n requestsBufferMap = new Map<string, boolean>();\n\n checkBrowser() {\n const ua = navigator.userAgent;\n let tem,\n M =\n ua.match(\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\n ) || [];\n if (/trident/i.test(M[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return { name: 'IE', version: tem[1] || '' };\n }\n if (M[1] === 'Chrome') {\n tem = ua.match(/\\bOPR|Edge\\/(\\d+)/);\n if (tem != null) {\n return { name: 'Opera', version: tem[1] };\n }\n }\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\n if ((tem = ua.match(/version\\/(\\d+\\.\\d+)/i)) != null) {\n M.splice(1, 1, tem[1]);\n }\n return {\n name: M[0],\n version: parseFloat(M[1]),\n };\n }\n\n /*\n * Set body padding as CSS variable to account for sticky header (padding itself gets applied in shared.css)\n */\n setBodyPadding() {\n const stickyHeaderHeight =\n this.shadowRoot?.querySelector('.sticky-header')?.clientHeight;\n\n if (stickyHeaderHeight) {\n document\n .querySelector('body')!\n .style.setProperty('--sticky-header-height', stickyHeaderHeight + 'px');\n }\n }\n\n /*\n * Create a Map for any menu that request mobile mode\n */\n private processRequests(menuId: string, mode: string) {\n if (mode === 'mobile') {\n this.requestsBufferMap.set(menuId, true);\n } else if (this.requestsBufferMap.has(menuId)) {\n this.requestsBufferMap.delete(menuId);\n }\n\n // set header mobile mode if at least 1 menu requires mobile mode\n this.isMobile = this.requestsBufferMap.size > 0;\n this.setBodyPadding();\n }\n\n private _menuModeListener(e: CustomEvent) {\n this.processRequests(e.detail.menuId, e.detail.mode);\n }\n\n _trapKeyboardMobileMenu(event: KeyboardEvent) {\n if (event.key === 'Tab' && !event.shiftKey) {\n // After opening mobile menu, next tab will focus on first menu item. This also traps the keyboard to go through menu items until hamburger menu is closed.\n\n // Only trap the keyboard if the active element is the menu dropdown\n if (\n !document.activeElement?.shadowRoot?.activeElement?.matches(\n 'button.menu-dropdown'\n )\n ) {\n return;\n }\n\n // Get all focusable elements in the menu\n const focusableElements =\n this.shadowRoot!.querySelector(\n 'tufts-menu'\n )!.shadowRoot!.querySelectorAll('a[href], button');\n\n if (!focusableElements) {\n return;\n }\n event.preventDefault();\n\n const firstFocusableElement = focusableElements[0] as HTMLElement;\n firstFocusableElement.focus();\n }\n }\n\n _trapKeyboardMobileSearch(event: KeyboardEvent) {\n if (event.key !== 'Tab') {\n return;\n }\n\n // Get the search button\n const searchButton = this.shadowRoot!.querySelector(\n '.open-search-button'\n ) as HTMLElement;\n\n // Get all focusable elements in the menu\n const focusableElements = this.shadowRoot\n ?.querySelector('#search-wrapper')\n ?.querySelectorAll('a[href], button, input');\n\n // If focusable elements are returned, then get the first and last elements\n if (focusableElements) {\n const firstSearchPanelElement = focusableElements[0] as HTMLElement;\n const lastSearchPanelElement = focusableElements[\n focusableElements.length - 1\n ] as HTMLElement;\n\n // If the active element is the search button, then the next tab will go to the first element in the search panel. If the active element is the last element in the panel, the next tab will go to the search button.\n if (document.activeElement?.shadowRoot?.activeElement === searchButton) {\n event.preventDefault();\n firstSearchPanelElement.focus();\n } else if (\n document.activeElement?.shadowRoot?.activeElement ===\n lastSearchPanelElement\n ) {\n event.preventDefault();\n searchButton!.focus();\n }\n }\n }\n\n render() {\n return html`\n ${this.browserInfo?.name === 'Safari' && this.browserInfo?.version < 15.5\n ? html`<div class=\"outdated-browser-banner\">\n <tufts-icon\n library=\"material\"\n name=\"error\"\n size=\"1.5rem\"\n ></tufts-icon>\n ${this.warningText}\n </div>`\n : null}\n\n <header\n @menuMode=${this._menuModeListener}\n class=${classMap({\n mobile: this.isMobile,\n // 'is-sticky': this.isSticky,\n })}\n >\n <div class=\"tufts-main-header\">\n ${this.isMobile ? this.mobileTemplate() : this.desktopTemplate()}\n </div>\n ${this.isMobile ? this.stickyMobileTemplate() : ''}\n </header>\n `;\n }\n\n toggleHamburgerMenu() {\n // USE THIS IF WE WANT TO GO BACK TO ANIMATE MENU (WIP FOR LATER)\n // this.hamburgerMenuOpen\n // ? this.collapseSection(this.mobileMenu)\n // : this.expandSection(this.mobileMenu);\n this.hamburgerMenuOpen = !this.hamburgerMenuOpen;\n\n if (this.hamburgerMenuOpen) {\n this.searchDropdownStatus = false;\n document.querySelector('body')!.style.overflow = 'hidden';\n this._trapKeyboardMobileMenu = this._trapKeyboardMobileMenu.bind(this);\n document.addEventListener('keydown', this._trapKeyboardMobileMenu);\n } else {\n document.querySelector('body')!.style.overflow = 'revert';\n document.removeEventListener('keydown', this._trapKeyboardMobileMenu);\n }\n }\n\n topMobileTemplate() {\n return html` ${this.logoTemplate()} ${this.loginTemplate()}`;\n }\n\n loginTemplate() {\n return html`\n <a class=\"mobile-login\" href=\"/user\">\n <tufts-icon name=\"login\" size=\"1.5rem\" library=\"system\"></tufts-icon>\n Login\n </a>\n `;\n }\n\n mobileMenuTriggerTemplate() {\n return html` <button\n class=\"menu-dropdown\"\n @click=\"${this.toggleHamburgerMenu}\"\n aria-label=\"Main Menu\"\n aria-expanded=\"${this.hamburgerMenuOpen}\"\n aria-controls=\"sliding-header\"\n >\n <tufts-icon\n name=\"${this.hamburgerMenuOpen ? 'close-mobile' : 'duo-menu'}\"\n size=\"1.25rem\"\n library=\"system\"\n ></tufts-icon>\n <span class=\"sticky-mobile-item menu-label\"\n >${this.hamburgerMenuOpen ? 'Close' : 'Menu'}\n </span>\n </button>`;\n }\n\n mobileSearchTriggerTemplate() {\n return html` <button\n type=\"button\"\n class=\"open-search-button\"\n aria-expanded=\"${this.searchDropdownStatus}\"\n aria-controls=\"#search-wrapper\"\n @click=\"${this.toggleMobileSearchDropdown}\"\n >\n <tufts-icon\n name=\"${this.searchDropdownStatus ? 'close-mobile' : 'duo-search'}\"\n size=\"1.25rem\"\n library=\"system\"\n ></tufts-icon>\n <span class=\"sticky-mobile-item search-label\"\n >${this.searchDropdownStatus ? 'Close' : this.searchLabel}\n </span>\n </button>`;\n }\n\n stickyMobileTemplate() {\n return html` <div class=\"sticky-header\">\n ${this.mobileMenuTriggerTemplate()}\n <a class=\"sticky-mobile-item locations-menu\" href=\"/care/locations\">\n <tufts-icon\n name=\"locations\"\n size=\"1.25em\"\n library=\"system\"\n ></tufts-icon>\n Locations\n </a>\n <a class=\"sticky-mobile-item doctors-menu\" href=\"/find-a-doctor\">\n <tufts-icon name=\"doctors\" size=\"1.25em\" library=\"system\"></tufts-icon>\n Doctors\n </a>\n ${this.mobileSearchTriggerTemplate()}\n </div>`;\n }\n\n mobileTemplate() {\n return html`\n <tufts-container padding=\"space-0\" background-color=\"white\">\n <div class=\"top-header\">${this.topMobileTemplate()}</div>\n </tufts-container>\n <div\n id=\"sliding-header\"\n class=\"sliding-header ${this.hamburgerMenuOpen ? 'is-active' : ''}\"\n >\n <tufts-container padding=\"space-0\" background-color=\"white\">\n <div class=\"top-header\">${this.topMobileTemplate()}</div>\n </tufts-container>\n <div class=\"hamburger-dropdown\">\n <tufts-container padding=\"space-m\" background-color=\"transparent\">\n ${this.mainMenuTemplate()}\n <hr class=\"horizontal-divider\" />\n ${this.utilityMenuTemplate()}\n </tufts-container>\n </div>\n </div>\n <div\n id=\"sliding-search\"\n class=\"sliding-search ${this.searchDropdownStatus ? 'is-active' : ''}\"\n >\n <tufts-container padding=\"space-0\" background-color=\"white\">\n <div class=\"top-header\">${this.topMobileTemplate()}</div>\n </tufts-container>\n <div class=\"search-dropdown\">\n <tufts-container padding=\"space-m\" background-color=\"transparent\">\n <div id=\"search-wrapper\" class=\"search-wrapper\">\n ${this.searchFormTemplate()} ${this.searchFormSuggestionLinks()}\n </div>\n </tufts-container>\n </div>\n </div>\n `;\n }\n\n // LEAVING THE BELOW FUNCTIONS IN IN CASE WE WANT TO ANIMATE THE MENU DROPDOWN LATER.\n\n // collapseSection(element: HTMLElement) {\n // element.style.maxHeight = '0px';\n // //isMobile && (element.style.overflow = 'hidden');\n // setTimeout(() => {\n // element.ariaHidden = 'true';\n // element.style.visibility = 'hidden';\n // }, 250);\n // }\n\n // expandSection(element: HTMLElement) {\n // // get the height of the element's inner content and the height of any possible\n // // nested sub dropdown's inner content, regardless of their actual size\n // element.ariaHidden = 'false';\n // let totalScrollHeight = 0;\n // element.style.visibility = 'visible';\n // const locationMenuHeight =\n // element.querySelector('#utility-menu')?.scrollHeight;\n\n // const menus = element\n // .querySelector('tufts-menu')\n // ?.shadowRoot?.querySelectorAll('.menu-level-ul');\n\n // if (menus)\n // menus.forEach(child => {\n // //(child as HTMLElement).style.visibility = 'visible';\n // const subDropDownHeight: number | undefined = child.scrollHeight;\n // totalScrollHeight += subDropDownHeight ? subDropDownHeight : 0;\n // });\n\n // element.style.maxHeight =\n // (locationMenuHeight ? locationMenuHeight : 0) + totalScrollHeight + 'px';\n // // isMobile && setTimeout(() => (element.style.overflow = 'visible'), 100);\n // }\n\n desktopTemplate() {\n return html`\n <tufts-container\n background-color=\"blue_dark\"\n container-width=\"wide\"\n padding=\"space-3xs-2xs\"\n >\n ${this.utilityMenuTemplate()}\n </tufts-container>\n\n <tufts-container\n background-color=\"${this.extraMenuOpen ? 'blue_dark' : 'white'}\"\n >\n <div class=\"header-wrapper\">\n ${this.logoTemplate()}\n <div class=\"main-menu-wrapper\">\n ${this.mainMenuTemplate()} ${this.searchDropdownDesktopTemplate()}\n ${this.menuToggleTemplate()}\n </div>\n </div>\n <div\n id=\"extra-menu\"\n class=\"extra-menu extra-menu--${this.extraMenuOpen\n ? 'open'\n : 'close'}\"\n >\n <div class=\"feature-links-menu-wrapper\">\n ${this.featureLinksMenuTemplate()}\n </div>\n <div class=\"header-menu-wrapper\">${this.headerMenuTemplate()}</div>\n </div>\n </tufts-container>\n `;\n }\n\n logoTemplate() {\n return html` <a href=\"/\" title=\"Home\" class=\"logo\">\n ${unsafeHTML(logoMarkup)}\n </a>`;\n }\n\n mainMenuTemplate() {\n return html`\n <tufts-menu\n mobile=${ifDefined(this.isMobile ? 'true' : undefined)}\"\n debug-menu=\"${ifDefined(this.debugMenu)}\"\n menu-id=\"main\"\n depth=\"2\"\n menu-name=\"${this.menuName}\"\n menu-label=\"${this.mainMenuLabel}\"\n menu-lang=\"${this.currentLanguage}\"\n menu-heading-size=\"xs\"\n mobile-trigger=\"true\"\n color-mode=\"light\"\n justify=\"right\"\n top-menu-no-link\n ></tufts-menu>\n `;\n }\n\n utilityMenuTemplate() {\n return html`\n <tufts-menu\n mobile=${ifDefined(this.isMobile ? 'true' : undefined)}\"\n debug-menu=\"${ifDefined(this.debugMenu)}\"\n menu-id=\"header-utility\"\n menu-name=\"utility\"\n menu-label=\"Utility\"\n mobile-trigger=\"true\"\n color-mode=\"dark\"\n justify=\"right\"\n ></tufts-menu>\n `;\n }\n\n @state() extraMenuOpen = false;\n toggleExtraMenu() {\n this.extraMenuOpen = !this.extraMenuOpen;\n }\n\n menuToggleTemplate() {\n return html`\n <button\n class=\"extra-menu-toggle\"\n @click=\"${this.toggleExtraMenu}\"\n aria-expanded=\"${this.extraMenuOpen}\"\n aria-controls=\"extra-menu\"\n >\n ${this.extraMenuOpen ? 'Close ' : 'Menu '}\n <span class=\"extra-menu-toggle--icon\">\n <tufts-icon\n name=\"${this.extraMenuOpen ? 'close' : 'hamburger-menu'}\"\n library=\"system\"\n size=\"1.5rem\"\n >\n </tufts-icon>\n </span>\n </button>\n `;\n }\n\n featureLinksMenuTemplate() {\n return html`\n <tufts-menu\n mobile=${ifDefined(this.isMobile ? 'true' : undefined)}\"\n debug-menu=\"${ifDefined(this.debugMenu)}\"\n menu-id=\"feature-links\"\n menu-name=\"feature-links\"\n menu-label=\"Feature Links\"\n menu-heading-size=\"xs\"\n color-mode=\"dark\"\n ></tufts-menu>\n `;\n }\n\n headerMenuTemplate() {\n return html`\n <tufts-menu\n mobile=${ifDefined(this.isMobile ? 'true' : undefined)}\"\n debug-menu=\"${ifDefined(this.debugMenu)}\"\n menu-id=\"header-menu\"\n menu-name=\"header-menu\"\n menu-label=\"Header menu\"\n menu-heading-size=\"xs\"\n color-mode=\"dark\"\n ></tufts-menu>\n `;\n }\n\n @state() translateMenuOpen = false;\n openTranslateMenu() {\n this.translateMenuOpen = true;\n }\n closeTranslateMenu() {\n this.translateMenuOpen = false;\n }\n toggleTranslateMenu(e: KeyboardEvent) {\n e.key === 'Enter' && (this.translateMenuOpen = !this.translateMenuOpen);\n e.key === 'Escape' && (this.translateMenuOpen = false);\n }\n translateMenuTemplate() {\n return html`\n <div\n class=\"translate-menu-button-container\"\n @mouseenter=\"${this.openTranslateMenu}\"\n @mouseleave=\"${this.closeTranslateMenu}\"\n @keydown=\"${this.toggleTranslateMenu}\"\n >\n <button\n class=\"no-title dropdown-button\"\n type=\"button\"\n aria-expanded=\"${this.translateMenuOpen}\"\n aria-haspopup=\"true\"\n tabindex=\"0\"\n >\n ${this.translateLabel}\n <span class=\"dropdown-icon\">\n <tufts-icon\n name=\"chevron-down\"\n library=\"system\"\n size=\"1rem\"\n ></tufts-icon>\n </span>\n </button>\n <div class=\"translate-menu\">\n <ul>\n <li><a href=\"${this.enURL}\">${this.enLabel}</a></li>\n <li><a href=\"${this.esURL}\">${this.esLabel}</a></li>\n </ul>\n <div class=\"google-translate\">\n ${this.ngSlot.renderInShadow('translate')}\n <div class=\"google-watermark\">\n Powered by\n <tufts-icon\n library=\"system\"\n name=\"google-logo\"\n size-width=\"3rem\"\n ></tufts-icon>\n </div>\n </div>\n </div>\n </div>\n `;\n }\n\n searchFormTemplate() {\n return html`\n <form action=\"/search\" method=\"get\" accept-charset=\"UTF-8\">\n <label for=\"search-input\" class=\"visually-hidden\"\n >${this.searchPlaceholder}</label\n >\n <div class=\"input-wrapper\">\n <input\n type=\"search\"\n placeholder=\"${this.isMobile ? '' : 'Search by keyword or phrase'}\"\n id=\"search-input\"\n name=\"text\"\n value=\"\"\n size=\"30\"\n maxlength=\"128\"\n />\n\n <button type=\"submit\" value=\"Search\">\n <tufts-icon\n name=\"magnifying-glass\"\n size=\"1.5rem\"\n library=\"system\"\n ></tufts-icon>\n <span class=\"visually-hidden\">${this.searchLabel}</span>\n </button>\n </div>\n </form>\n `;\n }\n\n mobileSearchTemplate() {\n return html`\n <tufts-container padding=\"space-0\" background-color=\"white\">\n <div class=\"top-header\">${this.topMobileTemplate()}</div>\n </tufts-container>\n <div\n id=\"sliding-search\"\n class=\"sliding-search ${this.hamburgerMenuOpen ? 'is-active' : ''}\"\n >\n <tufts-container padding=\"space-0\" background-color=\"white\">\n <div class=\"top-header\">${this.topMobileTemplate()}</div>\n </tufts-container>\n <div class=\"hamburger-dropdown\">\n <tufts-container padding=\"space-m\" background-color=\"transparent\">\n ${this.mainMenuTemplate()}\n <hr class=\"horizontal-divider\" />\n ${this.utilityMenuTemplate()}\n </tufts-container>\n </div>\n </div>\n `;\n }\n\n suggestionLinksTemplate(searchKeywords: string) {\n return html`\n <li>\n <a\n class=\"suggestion-link\"\n href=\"/search?text=${encodeURIComponent(searchKeywords)}\"\n >\n <tufts-icon\n library=\"system\"\n name=\"search-suggestion\"\n size=\"1.5rem\"\n ></tufts-icon>\n ${searchKeywords}\n </a>\n </li>\n `;\n }\n\n searchFormSuggestionLinks() {\n return html`\n <div class=\"search-suggestions\">\n <ul>\n <li>\n <span class=\"suggestion-group-label\"> Common searches </span>\n </li>\n ${this.suggestionLinksTemplate('Medical records')}\n ${this.suggestionLinksTemplate('COVID-19 testing')}\n ${this.suggestionLinksTemplate('COVID-19 vaccines')}\n ${this.suggestionLinksTemplate('Clinical trials')}\n </ul>\n <ul>\n <li>\n <span class=\"suggestion-group-label\"> Popular Services </span>\n </li>\n ${this.suggestionLinksTemplate('Primary care')}\n ${this.suggestionLinksTemplate('Dermatology')}\n ${this.suggestionLinksTemplate('Cardiology')}\n ${this.suggestionLinksTemplate('Urgent Care')}\n </ul>\n </div>\n `;\n }\n\n searchDropdownDesktopTemplate() {\n return html`\n ${this.searchDropdownTriggerTemplate()}\n <div id=\"search-wrapper\" class=\"search-wrapper\">\n ${this.searchFormTemplate()} ${this.searchFormSuggestionLinks()}\n </div>\n `;\n }\n\n searchDropdownMobileTemplate() {\n return html` ${this.searchDropdownTriggerTemplate()} `;\n }\n\n toggleMobileSearchDropdown() {\n this.searchDropdownStatus = !this.searchDropdownStatus;\n\n if (this.searchDropdownStatus) {\n this.hamburgerMenuOpen = false;\n document.querySelector('body')!.style.overflow = 'hidden';\n this._trapKeyboardMobileSearch =\n this._trapKeyboardMobileSearch.bind(this);\n document.addEventListener('keydown', this._trapKeyboardMobileSearch);\n } else {\n document.querySelector('body')!.style.overflow = 'revert';\n document.removeEventListener('keydown', this._trapKeyboardMobileSearch);\n }\n }\n\n toggleDesktopSearchDropdown() {\n this.searchDropdownStatus = !this.searchDropdownStatus;\n const searchPanel =\n document.activeElement?.shadowRoot?.activeElement?.nextElementSibling;\n const focusableElements = searchPanel?.querySelectorAll(\n 'input, a[href], button'\n );\n if (focusableElements) {\n const lastfocusableElement = focusableElements[\n focusableElements.length - 1\n ] as HTMLElement;\n if (this.searchDropdownStatus) {\n this.closeBlurSearch = this.closeBlurSearch.bind(this);\n lastfocusableElement.addEventListener('blur', this.closeBlurSearch);\n } else {\n lastfocusableElement.removeEventListener('blur', this.closeBlurSearch);\n }\n }\n }\n\n closeBlurSearch(event: FocusEvent) {\n const currentElement = event.target as HTMLElement;\n currentElement.removeEventListener('blur', this.closeBlurSearch);\n const searchToggleButton =\n currentElement.closest('#search-wrapper')?.previousElementSibling;\n searchToggleButton?.setAttribute('aria-expanded', 'false');\n this.searchDropdownStatus = false;\n }\n\n searchDropdownTriggerTemplate() {\n const mobileSearchIcon = this.searchDropdownStatus\n ? 'close'\n : 'magnifying-glass';\n return html`\n <button\n type=\"button\"\n class=\"open-search-button\"\n aria-expanded=\"${this.searchDropdownStatus}\"\n aria-controls=\"#search-wrapper\"\n @click=\"${this.toggleDesktopSearchDropdown}\"\n >\n <tufts-icon\n name=\"${this.isMobile ? 'duo-search' : mobileSearchIcon}\"\n size=\"${this.isMobile ? '1.25rem' : '1.5rem'}\"\n library=\"system\"\n ></tufts-icon>\n <span class=\"search-label ${!this.isMobile ? 'visually-hidden' : null}\"\n >${this.searchLabel}</span\n >\n </button>\n `;\n }\n\n searchDialogTemplate() {\n return html`\n <button\n class=\"open-search-button\"\n data-dialog-id=\"search\"\n @click=\"${this.openDialog}\"\n >\n <tufts-icon\n name=\"${this.isMobile ? 'duo-search' : 'magnifying-glass'}\"\n size=\"${this.isMobile ? '1.25rem' : '1.5rem'}\"\n library=\"system\"\n ></tufts-icon>\n <span class=\"search-label ${!this.isMobile ? 'visually-hidden' : null}\"\n >${this.searchLabel}</span\n >\n </button>\n <dialog id=\"search\">\n <button\n class=\"close-search-button\"\n type=\"button\"\n @click=\"${this.closeDialog}\"\n >\n <tufts-icon name=\"close\" library=\"system\" size=\"1.5rem\"></tufts-icon>\n </button>\n\n <form method=\"dialog\">${this.searchFormTemplate()}</form>\n </dialog>\n `;\n }\n\n openDialog(e: Event) {\n const trigger = e.currentTarget as HTMLDialogElement;\n const dialogElement = trigger.nextElementSibling as HTMLDialogElement;\n const input = trigger.parentElement?.querySelector(\n '#search-input'\n ) as HTMLInputElement;\n input.value = '';\n GuiDialog(dialogElement);\n dialogElement.showModal();\n }\n\n closeDialog(e: Event) {\n const trigger = e.currentTarget as HTMLDialogElement;\n const dialogElement = trigger.closest('dialog') as HTMLDialogElement;\n dialogElement.close('cancel');\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'tufts-header': TuftsHeader;\n }\n}\n","import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function i(i,n){return o({descriptor:o=>{const t={get(){var o,n;return null!==(n=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(i))&&void 0!==n?n:null},enumerable:!0,configurable:!0};if(n){const n=\"symbol\"==typeof o?Symbol():\"__\"+o;t.get=function(){var o,t;return void 0===this[n]&&(this[n]=null!==(t=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(i))&&void 0!==t?t:null),this[n]}}return t}})}export{i as query};\n//# sourceMappingURL=query.js.map\n","\nimport { css } from 'lit';\nexport default css`\n/* Apply standardized box sizing to the component. */\n:host {\n box-sizing: border-box;\n}\n:host *,\n:host *::before,\n:host *::after {\n box-sizing: inherit;\n}\n/* Apply proper CSS for accessibly hiding elements to each component. */\n.visually-hidden {\n position: absolute !important;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n width: 1px;\n height: 1px;\n word-wrap: normal;\n}\n/* Apply component specific CSS */\n.social-links-container{flex-wrap:wrap}.icons-container,.social-links-container{align-items:center;color:var(--black-600);display:flex}.text-container{align-items:center;display:flex;white-space:nowrap}.icon-container{align-items:center;display:flex;gap:.5rem}.icon-text{font-family:var(--ff-display);font-size:20px;font-weight:600}ul{align-items:center;display:flex;flex-wrap:wrap;gap:.25rem;list-style-type:none;margin:0;padding:0}ul.md{gap:1.25rem}ul.lg{gap:2rem}a{color:var(--black-600);text-decoration:none;white-space:nowrap}[cloned-slot-name=text]{font-weight:600}.separator{-webkit-margin-start:.5rem;background-color:var(--black-600);border:none;height:1px;margin:0;margin-inline-start:.5rem;width:32px}.separator.white{background-color:var(--white)}.white{color:var(--white)}.white .icon-container{color:var(--brand-primary)}.header-container{-webkit-margin-after:2rem;color:var(--brand-background-hover);font-weight:600;margin-block-end:2rem}:host([content-align=center]) .social-links-container{justify-content:center}`;","import { CSSResultGroup, TemplateResult, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport componentStyles from './tufts-social-links.css.lit';\nimport { OutlineElement } from '../../base/outline-element/outline-element';\nimport { classMap } from 'lit/directives/class-map.js';\nimport type { HorizontalAlignment } from '../../base/outline-element/utils/types';\nimport '../tufts-icon/tufts-icon';\nimport { SlotNGController } from '../../controllers/slot-ng-controller';\n\n/**\n * The TuftsSocialLinks component\n * @element tufts-social-links\n *\n * @slot text\n *\n * @attr facebook-account\n * @attr twitter-account\n * @attr linkedin-account\n * @attr youtube-account\n * @attr pintrest-account\n * @attr podcasts-account\n * @attr instagram-account\n * @attr web-name\n * @attr share-page-url\n * @attr screen-reader-text\n * @attr header-text\n * @attr link-size\n * @attr has-separator\n * @attr white-icons\n * @attr increased-gap\n * @attr target-aria-label\n * @attr mail-to\n * @attr content-align\n *\n * @property If you want the option to share a page on Facebook Twitter and LinkedIn add the URL of the page to share using the attribute 'share-page-url\n * @property Add a URL linking to Facebook with the attribute \"fb-link\"\n * @property Add a URL linking to Twitter with the attribute \"tw-link\"\n * @property Add a URL linking to LinkedIn with the attribute \"li-link\"\n * @property Add a URL linking to InstaGram with the attribute \"ig-link\"\n * @property Add a URL linking to YouTube with the attribute \"yt-link\"\n * @property Add a URL linking to Pinterest with the attribute \"pst-link\"\n * @property Add a URL linking to a Podcast with the attribute \"pod-link\"\n * @property Add a URL linking to a website with the attribute \"web-link\"\n */\n\n@customElement('tufts-social-links')\nexport class TuftsSocialLinks extends OutlineElement {\n static styles: CSSResultGroup = [componentStyles];\n ngSlot = new SlotNGController(this);\n\n @property({ type: Boolean, attribute: 'not-track-icon-footer' })\n footerNoTracker: false;\n\n @property({ type: String, attribute: 'fb-link' })\n fbLink: string;\n\n @property({ type: String, attribute: 'tw-link' })\n twLink: string;\n\n @property({ type: String, attribute: 'li-link' })\n liLink: string;\n\n @property({ type: String, attribute: 'ig-link' })\n igLink: string;\n\n @property({ type: String, attribute: 'yt-link' })\n ytLink: string;\n\n @property({ type: String, attribute: 'pst-link' })\n pstLink: string;\n\n @property({ type: String, attribute: 'pod-link' })\n podCastLink: string;\n\n @property({ type: String, attribute: 'web-link' })\n webLink: string;\n\n @property({ type: String, attribute: 'facebook-account' })\n facebookAccount: string;\n\n @property({ type: String, attribute: 'twitter-account' })\n twitterAccount: string;\n\n @property({ type: String, attribute: 'linkedin-account' })\n linkedInAccount: string;\n\n @property({ type: String, attribute: 'youtube-account' })\n youtubeAccount: string;\n\n @property({ type: String, attribute: 'pinterest-account' })\n pinterestAccount: string;\n\n @property({ type: String, attribute: 'podcasts-account' })\n podcastsAccount: string;\n\n @property({ type: String, attribute: 'instagram-account' })\n instagramAccount: string;\n\n @property({ type: String, attribute: 'web-name' })\n webName: string;\n\n @property({ type: String, attribute: 'share-page-url' })\n shareUrl: string;\n\n @property({ type: String, attribute: 'screen-reader-text' })\n ariaLabelText: string;\n\n @property({ type: String, attribute: 'header-text' })\n headerText: string;\n\n @property({ type: String, attribute: 'link-size' })\n linkSize = '2rem';\n\n @property({ type: Boolean, attribute: 'has-separator' })\n hasSeparator: boolean;\n\n @property({ type: Boolean, attribute: 'white-icons' })\n whiteIcons: boolean;\n\n @property({ type: String, attribute: 'increased-gap' })\n increasedGap: string;\n\n /**\n * arial label text to (opens in a new tab)\n */\n\n @property({ type: String, attribute: 'target-aria-label' })\n targetAriaLabel: string;\n\n @property({ type: String, attribute: 'mail-to' })\n mailTo: string;\n\n @property({\n type: String,\n reflect: true,\n attribute: 'content-align',\n })\n contentAlign: HorizontalAlignment;\n\n @state() hasText: boolean;\n\n connectedCallback() {\n super.connectedCallback();\n this.hasText = this.ngSlot.exist('text');\n }\n\n renderIcon(\n url: string,\n name: string,\n account?: string | null,\n library = 'system'\n ) {\n account = account || null;\n if (url) {\n if (name === 'globe') {\n return html`<li>\n <a\n href=\"${url}\"\n target=\"_blank\"\n aria-label=\"${this.ariaLabelText} ${account} ${this\n .targetAriaLabel}\"\n class=\"icon-container ${this.footerNoTracker\n ? ''\n : 'social-share-icons'}\"\n >\n <tufts-icon\n library=${library}\n name=${name}\n size=${this.linkSize}\n ></tufts-icon>\n ${account ? html`<span class=\"icon-text\">${account}</span>` : null}\n ${account ? this.indicatorIconTemplate() : null}\n </a>\n </li>`;\n }\n const social = name.replace(/^fa[rbs]-/, '');\n return html`<li>\n <a\n href=\"${url}\"\n target=\"_blank\"\n aria-label=\"${this.ariaLabelText} ${social === 'envelope'\n ? 'email'\n : social} ${this.targetAriaLabel}\"\n class=\"icon-container ${this.footerNoTracker\n ? ''\n : 'social-share-icons'}\"\n >\n <tufts-icon\n library=${library}\n name=${name}\n size=${this.linkSize}\n ></tufts-icon>\n ${account ? html`<span class=\"icon-text\">${account}</span>` : null}\n ${account ? this.indicatorIconTemplate() : null}\n </a>\n </li>`;\n } else {\n return;\n }\n }\n\n render(): TemplateResult {\n const containerClasses = {\n 'social-links-container': true,\n 'has-separator': this.hasSeparator,\n 'white': this.whiteIcons,\n };\n\n const iconClasses = {\n 'icons-container': true,\n 'white': this.whiteIcons,\n };\n\n return html`\n ${this.headerTemplate()}\n <div class=\"${classMap(containerClasses)}\">\n ${this.textTemplate()}\n <div class=\"${classMap(iconClasses)}\">\n <ul class=\"${this.increasedGap}\">\n ${this.shareUrl\n ? html`${this.renderIcon(\n 'https://www.facebook.com/sharer/sharer.php?u=' +\n this.shareUrl,\n 'fab-facebook'\n )}\n ${this.renderIcon(\n 'https://twitter.com/intent/tweet?url=' + this.shareUrl,\n 'fab-twitter'\n )}\n ${this.renderIcon(\n 'https://www.linkedin.com/shareArticle?mini=true&url=' +\n this.shareUrl,\n 'fab-linkedin'\n )}\n ${this.mailTo\n ? this.renderIcon('mailto:' + this.mailTo, 'fas-envelope')\n : null}`\n : html`\n ${this.renderIcon(\n this.fbLink,\n 'fab-facebook',\n this.facebookAccount\n )}\n ${this.renderIcon(\n this.twLink,\n 'fab-twitter',\n this.twitterAccount\n )}\n ${this.renderIcon(\n this.liLink,\n 'fab-linkedin',\n this.linkedInAccount\n )}\n ${this.renderIcon(\n this.igLink,\n 'fab-instagram',\n this.instagramAccount\n )}\n ${this.renderIcon(\n this.ytLink,\n 'fab-youtube',\n this.youtubeAccount\n )}\n ${this.renderIcon(\n this.pstLink,\n 'fab-pinterest',\n this.pinterestAccount\n )}\n ${this.renderIcon(\n this.podCastLink,\n 'fas-podcast',\n this.podcastsAccount\n )}\n ${this.renderIcon(this.webLink, 'globe', this.webName)}\n `}\n </ul>\n </div>\n </div>\n `;\n }\n\n /**\n * Template partial for the indicator Icon.\n * @returns TemplateResult | null\n */\n indicatorIconTemplate(): TemplateResult | null {\n return html` <span class=\"indicador-icon\">\n <tufts-icon library=\"system\" name=\"link-out\" size=\"1rem\"></tufts-icon>\n </span>`;\n }\n\n /**\n * Template partial for the text slot.\n * @returns TemplateResult | null\n */\n textTemplate(): TemplateResult | null {\n if (!this.hasText) return null;\n\n const separatorClasses = {\n separator: true,\n white: this.whiteIcons,\n };\n\n return html`\n <div class=\"text-container\">\n <slot name=\"text\"></slot>\n ${this.hasSeparator\n ? html`<hr class=\"${classMap(separatorClasses)}\" />`\n : null}\n </div>\n `;\n }\n\n headerTemplate(): TemplateResult | null {\n if (!this.headerText) return null;\n\n return html` <div class=\"header-container\">${this.headerText}</div> `;\n }\n}\n","\nimport { css } from 'lit';\nexport default css`\n/* Apply standardized box sizing to the component. */\n:host {\n box-sizing: border-box;\n}\n:host *,\n:host *::before,\n:host *::after {\n box-sizing: inherit;\n}\n/* Apply proper CSS for accessibly hiding elements to each component. */\n.visually-hidden {\n position: absolute !important;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n width: 1px;\n height: 1px;\n word-wrap: normal;\n}\n/* Apply component specific CSS */\n:host{display:block}.footer-container{display:flex;flex-direction:column;font-family:var(--ff-body);row-gap:7.5rem}.footer-container,.footer-container a{color:var(--white)}.footer-container a[href^=tel]{text-decoration:none}.footer-container.medium{row-gap:3rem}.footer-container.large{-moz-column-gap:12rem;column-gap:12rem;flex-direction:row;row-gap:3rem}.footer-content{display:flex;flex-direction:column;width:100%}.below-menu{-webkit-margin-before:clamp(3.75rem,12.5vw + 1.25rem,12.5rem);margin-block-start:clamp(3.75rem,12.5vw + 1.25rem,12.5rem)}.large .below-menu,.medium .below-menu{align-items:flex-end;display:flex;flex-wrap:wrap;justify-content:space-between}.address-phone{font-size:var(--fs-lg)}.phone{-webkit-margin-before:1.5rem;font-size:var(--fs-h5);margin-block-start:1.5rem}.social-wrapper{-webkit-margin-before:4rem;margin-block-start:4rem;text-align:center}.large .social-wrapper,.medium .social-wrapper{-webkit-margin-before:0;margin-block-start:0;text-align:end}.social-links{display:flex;justify-content:center}.large .social-links,.medium .social-links{justify-content:end}.copyright-terms{-webkit-margin-before:1rem;align-items:baseline;font-size:var(--fs-base);margin-block-start:1rem}.large .copyright-terms,.medium .copyright-terms{display:inline-flex;flex-wrap:wrap;gap:1rem}.terms{font-weight:var(--fw-medium)}.note{-webkit-margin-before:2rem;font-size:var(--fs-p-mini);margin-block-start:2rem;text-align:center}.large .note,.medium .note{text-align:end}`;","import { html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { OutlineElement } from '../../base/outline-element/outline-element';\nimport { SlotNGController } from '../../controllers/slot-ng-controller';\nimport { ResizeController } from '../../controllers/resize-controller';\nimport componentStyles from './tufts-footer.css.lit';\nimport '../tufts-container/tufts-container';\nimport { classMap } from 'lit/directives/class-map.js';\n\n/**\n * The tufts-footer component\n * @element tufts-footer\n *\n * @slot logo\n * @slot menu\n * @slot address\n * @slot phone\n * @slot social-links\n * @slot copyright\n * @slot terms\n * @slot note\n */\n@customElement('tufts-footer')\nexport class TuftsFooter extends OutlineElement {\n ngSlot = new SlotNGController(this);\n resizeController = new ResizeController(this, {\n breakpoints: [768, 1440],\n });\n static styles = [componentStyles];\n\n render() {\n const containerClasses = {\n 'footer-container': true,\n 'mobile': this.resizeController.currentBreakpointRange === 0,\n 'medium': this.resizeController.currentBreakpointRange === 1,\n 'large': this.resizeController.currentBreakpointRange === 2,\n };\n return html`\n <tufts-container container-width=\"full\" padding=\"0\">\n <tufts-container\n background-color=\"blue_dark\"\n pulse-orientation=\"${this.resizeController.currentBreakpointRange ===\n 2\n ? 'bottom-left'\n : 'top-right'}\"\n max-pulse-size=\"32rem\"\n pulse-mobile=\"true\"\n >\n <div class=\"${classMap(containerClasses)}\">\n ${this.ngSlot.conditionalNGSlot('logo')}\n <div class=\"footer-content\">\n <slot name=\"menu\"></slot>\n <div class=\"below-menu\">\n <div class=\"address-phone\">\n ${this.ngSlot.conditionalNGSlot('address')}\n ${this.ngSlot.conditionalNGSlot('phone')}\n </div>\n <div class=\"social-wrapper\">\n ${this.ngSlot.conditionalNGSlot('social-links')}\n <div class=\"copyright-terms\">\n ${this.ngSlot.conditionalNGSlot('copyright')}\n ${this.ngSlot.conditionalNGSlot('terms')}\n </div>\n </div>\n </div>\n ${this.ngSlot.conditionalNGSlot('note')}\n </div>\n </div>\n </tufts-container>\n </tufts-container>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'tufts-footer': TuftsFooter;\n }\n}\n"],"names":["t","window","e","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","n","WeakMap","o","constructor","this","_$cssResult$","Error","cssText","styleSheet","length","get","replaceSync","set","toString","i","reduce","c","cssRules","r","trustedTypes","h","emptyScript","reactiveElementPolyfillSupport","toAttribute","Boolean","Object","Array","JSON","stringify","fromAttribute","Number","parse","a","l","attribute","type","String","converter","reflect","hasChanged","d","HTMLElement","super","_$Ei","Map","isUpdatePending","hasUpdated","_$El","u","static","finalize","push","observedAttributes","elementProperties","forEach","_$Ep","_$Ev","state","noAccessor","hasOwnProperty","getPropertyDescriptor","defineProperty","requestUpdate","configurable","enumerable","finalized","getPrototypeOf","properties","getOwnPropertyNames","getOwnPropertySymbols","createProperty","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","_$E_","Promise","enableUpdating","_$AL","_$Eg","addController","_$ES","renderRoot","isConnected","hostConnected","call","removeController","splice","indexOf","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$EO","removeAttribute","getPropertyOptions","has","_$EC","_$Ej","async","reject","scheduleUpdate","performUpdate","shouldUpdate","willUpdate","hostUpdate","update","_$Ek","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","slice","createComment","f","_","m","p","RegExp","g","$","y","x","_$litType$","strings","values","w","T","for","A","E","C","createTreeWalker","P","v","lastIndex","exec","test","startsWith","V","parts","el","currentNode","content","firstChild","remove","append","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","k","I","L","R","tagName","data","innerHTML","N","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","S","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","M","nextSibling","z","_$AI","_$AH","_$AA","_$AB","options","_$Cm","startNode","endNode","_$AR","iterator","insertBefore","createTextNode","_$AC","_$AP","setConnected","element","fill","j","arguments","H","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","litHtmlPolyfillSupport","litHtmlVersions","renderOptions","_$Do","renderBefore","render","_$litPart$","_$litElement$","globalThis","litElementHydrateSupport","LitElement","litElementPolyfillSupport","litElementVersions","customElements","define","kind","elements","finisher","descriptor","key","placement","originalKey","initializer","HTMLSlotElement","assignedElements","OutlineElement","__decorate","customElement","pulseOrientation","css","TuftsPulse","maxSize","pulseTopAlignment","html","pulseSVG","orientation","componentStyles","property","_$Ct","_$Ci","keys","filter","join","nt","st","add","classList","delete","it","directiveName","_t","raw","resultType","emit","event","CustomEvent","assign","bubbles","cancelable","composed","detail","dispatchEvent","watch","propName","resolvedOptions","waitUntilFirstUpdate","proto","decoratedFnName","propNameKey","changedProps","oldValue","newValue","icons","player","search","close","login","locations","doctors","monitor","target","information","alert","training","certification","external","download","profile","snowflake","information2","calendar","registry","resolver","encodeURIComponent","folder","substring","mutator","svg","querySelectorAll","filename","replace","match","charAt","toUpperCase","watchedIcons","getIconLibrary","find","lib","includeFiles","iconFiles","requestIcon","url","fileData","src","fileDataPromise","fetch","then","response","ok","status","text","requestInclude","iconFileData","div","firstElementChild","outerHTML","outline","libraries","bootstrap","boxicons","fontawesome","heroicons","iconoir","ionicons","jam","lucide","material","remix","unicons","defaults","library","size","icon","parser","DOMParser","OutlineIcon","label","setIcon","sizeIcon","_a","querySelector","style","setProperty","getUrl","redraw","file","svgEl","parseFromString","body","_b","hasLabel","wrapperClasses","classMap","ifDefined","undefined","unsafeSVG","TuftsIcon","iconStyles","_$litStatic$","SlotNGController","_mutationObserver","MutationObserver","_handleMutation","bind","disconnect","getSlottedNodes","slotName","slottedNodes","from","node","isDefaultSlotText","isDefaultSlotElement","count","exist","TEXT_NODE","trim","ELEMENT_NODE","addAnnotations","lightDomSlot","clonedSlot","cloneNode","annotationComment","some","nodeValue","before","slotWrapper","dispatchEventsToLightDom","eventsToDispatch","eventType","elementPathInShadowDom","getElementPathInShadowDom","elementPathInLightDom","getElementPathInLightDom","Event","setTimeout","originElementFocus","focus","renderInShadow","wrapperElement","slots","allClonedSlots","slot","wrappedClonedSlot","observe","subtree","childList","attributes","characterData","path","composedPath","selectors","shadowFound","nodeName","selector","getSelectorForSingleElement","currentElement","parentElement","currentSelectorClassName","currentSelector","localName","isShadow","El","printExtraAttributes","extraAttributes","unsafeStatic","value","conditionalNGSlot","extraClasses","defaultSlot","TuftsHeading","ngSlot","pageHeadings","clickableCard","classes","levelSize","textColor","__rest","propertyIsEnumerable","linkset","Linkset","links","hasLinkTo","relationType","link","rel","linkTo","linksTo","linksFrom","anchor","linksWithAttribute","linksWithAttributeValue","b","language","isAttributeEqual","elems","pointer","next","done","normalize","contexts","href","targetObject","entries","carry","rels","Link","parameters","dist","denormalize","linkset_1","require$$0","link_1","require$$1","normalized","contextObject","json","menuElement","buildTree","hierarchyCompare","MenuElement","children","title","parseInt","shift","sort","last","curr","menu","Menu","linkset_es6_1","menu_element_1","machineName","id","tree","menuID","machineNames","includes","menus","denormalize_1","menu_1","TuftsMenu","TuftsMenu_1","mobileStyle","isLoading","loadingMessage","topMenuNoLink","menuItemAsHeader","menuId","menuLang","menuType","menuHeadingSize","isMobile","colorMode","mobileTrigger","initialMenuDepth","keepBaseItem","maxMenuDepth","manualMode","checkIfDesktopNavigationWraps","fetchData","closeMenuOnBlur","dropDownMenus","allLinks","closeBlurMenu","buttonFound","contains","closestUL","closest","uncleElement","previousElementSibling","HTMLButtonElement","closeMenu","button","closeAllMenusEvent","toggleButton","_handleTouchStart","menuReady","mobileTriggerMenu","resizeObserver","ResizeObserver","unobserve","sliceMenu","activePage","currentMenu","jsonMenuItems","item","activePageIndex","findIndex","baseItemIndex","hierarchy","baseItem","baseItemDepth","slicedJsonMenuItems","every","val","limitMenuDepth","depth","levels","menuDepth","buttonTemplate","showTitle","toggleMenu","menuLinkAndParentTemplate","menuLevelClass","openMenu","renderMenuLevel","menuParentTemplate","level","renderMenuItem","menuLevelTemplate","menuLinkTemplate","menuItemTemplate","getDebugMenu","getDrupalMenu","location","protocol","jsonMenuURL","debugMenu","message","statusText","denormalized","closeAllMenus","header","buttons","_dispatchMenuMode","justify","menuName","transitionToDesktopNavigation","navItem","contentRect","height","clientHeight","navMediaQuery","matchMedia","innerWidth","ResizeController","breakpointsRangeArray","defaultOptions","debounce","breakpoints","elementToRerender","filteredOptionsObject","fromEntries","initializeBreakpointsRangeType","minBreakpoint","breakpoint","newBreakpointRange","min","max","display","func","delay","immediate","timeoutId","args","executeFunc","clearTimeout","onElementResize","elementToObserve","_entries","currentComponentWidth","width","calculateNewBreakpointRange","currentBreakpointRange","RevealTrigger","triggerSelector","revealClass","retrigger","setRevealClasses","elementsToReveal","revealObserver","IntersectionObserver","entry","intersectionRatio","TuftsContainer","padding","justifyEnd","containerWidth","backgroundColor","maxPulseSize","gap","displayPulseWidth","pulseMobile","resizeController","animationType","revealTrigger","displayPulse","pulseTemplate","minPulseHeight","container","containerClass","animation","topMargin","bottomMargin","dialogClosingEvent","dialogClosedEvent","dialogOpeningEvent","dialogOpenedEvent","dialogRemovedEvent","dialogAttrObserver","mutations","mutation","attributeName","dialog","hasAttribute","overflow","focusTarget","animationsComplete","dialogDeleteObserver","removedNodes","removedNode","lightDismiss","dialogClose","allSettled","getAnimations","finished","TuftsButton","iconType","buttonVariant","buttonSize","isDisabled","isURLExternal","URL","hostname","buttonRelRender","buttonUrl","buttonTargetRender","buttonTarget","hasLeftIcon","hasRightIcon","buttonLabel","iconTemplate","onClick","onKeyUp","linkInSlotTemplate","filteredClassesArray","exists","TuftsHeader","hamburgerMenuName","searchLabel","searchURL","searchDropdownStatus","requestsBufferMap","extraMenuOpen","translateMenuOpen","browserInfo","checkBrowser","ua","navigator","userAgent","tem","version","appName","appVersion","parseFloat","setBodyPadding","stickyHeaderHeight","processRequests","_menuModeListener","_trapKeyboardMobileMenu","shiftKey","_c","activeElement","matches","focusableElements","preventDefault","_trapKeyboardMobileSearch","searchButton","firstSearchPanelElement","lastSearchPanelElement","_d","_e","_f","warningText","mobile","mobileTemplate","desktopTemplate","stickyMobileTemplate","toggleHamburgerMenu","hamburgerMenuOpen","topMobileTemplate","logoTemplate","loginTemplate","mobileMenuTriggerTemplate","mobileSearchTriggerTemplate","toggleMobileSearchDropdown","mainMenuTemplate","utilityMenuTemplate","searchFormTemplate","searchFormSuggestionLinks","searchDropdownDesktopTemplate","menuToggleTemplate","featureLinksMenuTemplate","headerMenuTemplate","unsafeHTML","mainMenuLabel","currentLanguage","toggleExtraMenu","openTranslateMenu","closeTranslateMenu","toggleTranslateMenu","translateMenuTemplate","translateLabel","enURL","enLabel","esURL","esLabel","searchPlaceholder","mobileSearchTemplate","suggestionLinksTemplate","searchKeywords","searchDropdownTriggerTemplate","searchDropdownMobileTemplate","toggleDesktopSearchDropdown","searchPanel","nextElementSibling","lastfocusableElement","closeBlurSearch","searchToggleButton","mobileSearchIcon","searchDialogTemplate","openDialog","closeDialog","trigger","currentTarget","dialogElement","GuiDialog","showModal","query","TuftsSocialLinks","linkSize","hasText","renderIcon","account","ariaLabelText","targetAriaLabel","footerNoTracker","indicatorIconTemplate","social","containerClasses","hasSeparator","white","whiteIcons","iconClasses","headerTemplate","textTemplate","increasedGap","shareUrl","mailTo","fbLink","facebookAccount","twLink","twitterAccount","liLink","linkedInAccount","igLink","instagramAccount","ytLink","youtubeAccount","pstLink","pinterestAccount","podCastLink","podcastsAccount","webLink","webName","separatorClasses","separator","headerText","TuftsFooter","medium","large"],"mappings":";;;;;IAKA,MAAMA,EAAEC,OAAOC,EAAEF,EAAEG,kBAAa,IAASH,EAAEI,UAAUJ,EAAEI,SAASC,eAAe,uBAAuBC,SAASC,WAAW,YAAYC,cAAcD,UAAUE,EAAEC,SAASC,EAAE,IAAIC,QAAQ,MAAMC,EAAEC,YAAYd,EAAEE,EAAES,GAAG,GAAGI,KAAKC,cAAa,EAAGL,IAAIF,EAAE,MAAMQ,MAAM,qEAAqEF,KAAKG,QAAQlB,EAAEe,KAAKf,EAAEE,CAAC,CAAKiB,iBAAa,IAAInB,EAAEe,KAAKF,EAAE,MAAMJ,EAAEM,KAAKf,EAAE,GAAGE,QAAG,IAASF,EAAE,CAAC,MAAME,OAAE,IAASO,GAAG,IAAIA,EAAEW,OAAOlB,IAAIF,EAAEW,EAAEU,IAAIZ,SAAI,IAAST,KAAKe,KAAKF,EAAEb,EAAE,IAAIQ,eAAec,YAAYP,KAAKG,SAAShB,GAAGS,EAAEY,IAAId,EAAET,GAAG,CAAC,OAAOA,CAAC,CAACwB,WAAW,OAAOT,KAAKG,OAAO,EAAE,MAAqDO,EAAE,CAACzB,KAAKE,KAAK,MAAMS,EAAE,IAAIX,EAAEoB,OAAOpB,EAAE,GAAGE,EAAEwB,QAAQ,CAACxB,EAAEO,EAAEE,IAAIT,EAAE,CAACF,IAAI,IAAG,IAAKA,EAAEgB,aAAa,OAAOhB,EAAEkB,QAAQ,GAAG,iBAAiBlB,EAAE,OAAOA,EAAE,MAAMiB,MAAM,mEAAmEjB,EAAE,uFAAwF,EAArP,CAAuPS,GAAGT,EAAEW,EAAE,IAAIX,EAAE,IAAI,OAAO,IAAIa,EAAEF,EAAEX,EAAES,EAAC,EAAiPkB,EAAEzB,EAAEF,GAAGA,EAAEA,GAAGA,aAAaQ,cAAc,CAACR,IAAI,IAAIE,EAAE,GAAG,IAAI,MAAMO,KAAKT,EAAE4B,SAAS1B,GAAGO,EAAES,QAAQ,MAAhtBlB,IAAG,IAAIa,EAAE,iBAAiBb,EAAEA,EAAEA,EAAE,QAAG,EAAOS,GAA6qBoB,CAAE3B,EAAG,EAAjE,CAAmEF,GAAGA;;;;;ICA3yC,IAAIS,EAAE,MAAMP,EAAED,OAAO4B,EAAE3B,EAAE4B,aAAaC,EAAEF,EAAEA,EAAEG,YAAY,GAAGnB,EAAEX,EAAE+B,+BAA+BtB,EAAE,CAACuB,YAAYlC,EAAEyB,GAAG,OAAOA,GAAG,KAAKU,QAAQnC,EAAEA,EAAE+B,EAAE,KAAK,MAAM,KAAKK,OAAO,KAAKC,MAAMrC,EAAE,MAAMA,EAAEA,EAAEsC,KAAKC,UAAUvC,GAAG,OAAOA,CAAC,EAAEwC,cAAcxC,EAAEyB,GAAG,IAAIhB,EAAET,EAAE,OAAOyB,GAAG,KAAKU,QAAQ1B,EAAE,OAAOT,EAAE,MAAM,KAAKyC,OAAOhC,EAAE,OAAOT,EAAE,KAAKyC,OAAOzC,GAAG,MAAM,KAAKoC,OAAO,KAAKC,MAAM,IAAI5B,EAAE6B,KAAKI,MAAM1C,EAAE,CAAC,MAAMA,GAAGS,EAAE,IAAI,EAAE,OAAOA,CAAC,GAAGkC,EAAE,CAAC3C,EAAEyB,IAAIA,IAAIzB,IAAIyB,GAAGA,GAAGzB,GAAGA,GAAG4C,EAAE,CAACC,WAAU,EAAGC,KAAKC,OAAOC,UAAUrC,EAAEsC,SAAQ,EAAGC,WAAWP,GAAG,MAAMQ,UAAUC,YAAYtC,cAAcuC,QAAQtC,KAAKuC,KAAK,IAAIC,IAAIxC,KAAKyC,iBAAgB,EAAGzC,KAAK0C,YAAW,EAAG1C,KAAK2C,KAAK,KAAK3C,KAAK4C,GAAG,CAACC,sBAAsB5D,GAAG,IAAIyB,EAAEV,KAAK8C,YAAY,QAAQpC,EAAEV,KAAKgB,SAAI,IAASN,EAAEA,EAAEV,KAAKgB,EAAE,IAAI+B,KAAK9D,EAAE,CAAY+D,gCAAqBhD,KAAK8C,WAAW,MAAM7D,EAAE,GAAG,OAAOe,KAAKiD,kBAAkBC,SAAO,CAAGxC,EAAEhB,KAAK,MAAMP,EAAEa,KAAKmD,KAAKzD,EAAEgB,QAAG,IAASvB,IAAIa,KAAKoD,KAAK5C,IAAIrB,EAAEO,GAAGT,EAAE8D,KAAK5D,GAAI,IAAGF,CAAC,CAAC4D,sBAAsB5D,EAAEyB,EAAEmB,GAAG,GAAGnB,EAAE2C,QAAQ3C,EAAEoB,WAAU,GAAI9B,KAAK8C,WAAW9C,KAAKiD,kBAAkBzC,IAAIvB,EAAEyB,IAAIA,EAAE4C,aAAatD,KAAKR,UAAU+D,eAAetE,GAAG,CAAC,MAAMS,EAAE,iBAAiBT,EAAEU,SAAS,KAAKV,EAAEE,EAAEa,KAAKwD,sBAAsBvE,EAAES,EAAEgB,QAAG,IAASvB,GAAGkC,OAAOoC,eAAezD,KAAKR,UAAUP,EAAEE,EAAE,CAAC,CAAC0D,6BAA6B5D,EAAEyB,EAAEhB,GAAG,MAAM,CAACY,MAAM,OAAON,KAAKU,EAAE,EAAEF,IAAIrB,GAAG,MAAM2B,EAAEd,KAAKf,GAAGe,KAAKU,GAAGvB,EAAEa,KAAK0D,cAAczE,EAAE6B,EAAEpB,EAAE,EAAEiE,cAAa,EAAGC,YAAW,EAAG,CAACf,0BAA0B5D,GAAG,OAAOe,KAAKiD,kBAAkB3C,IAAIrB,IAAI4C,CAAC,CAACgB,kBAAkB,GAAG7C,KAAKuD,eAAe,aAAa,OAAM,EAAGvD,KAAK6D,WAAU,EAAG,MAAM5E,EAAEoC,OAAOyC,eAAe9D,MAAM,GAAGf,EAAE6D,gBAAW,IAAS7D,EAAE+B,IAAIhB,KAAKgB,EAAE,IAAI/B,EAAE+B,IAAIhB,KAAKiD,kBAAkB,IAAIT,IAAIvD,EAAEgE,mBAAmBjD,KAAKoD,KAAK,IAAIZ,IAAIxC,KAAKuD,eAAe,cAAc,CAAC,MAAMtE,EAAEe,KAAK+D,WAAWrD,EAAE,IAAIW,OAAO2C,oBAAoB/E,MAAMoC,OAAO4C,sBAAsBhF,IAAI,IAAI,MAAMS,KAAKgB,EAAEV,KAAKkE,eAAexE,EAAET,EAAES,GAAG,CAAC,OAAOM,KAAKmE,cAAcnE,KAAKoE,eAAepE,KAAKqE,SAAQ,CAAE,CAACxB,sBAAsBnC,GAAG,MAAMhB,EAAE,GAAG,GAAG4B,MAAMgD,QAAQ5D,GAAG,CAAC,MAAMvB,EAAE,IAAIoF,IAAI7D,EAAE8D,KAAK,KAAKC,WAAW,IAAI,MAAM/D,KAAKvB,EAAEO,EAAEgF,QAAQzF,EAAEyB,GAAG,WAAM,IAASA,GAAGhB,EAAEqD,KAAK9D,EAAEyB,IAAI,OAAOhB,CAAC,CAACmD,YAAY5D,EAAEyB,GAAG,MAAMhB,EAAEgB,EAAEoB,UAAU,OAAM,IAAKpC,OAAE,EAAO,iBAAiBA,EAAEA,EAAE,iBAAiBT,EAAEA,EAAE0F,mBAAc,CAAM,CAAC/B,IAAI,IAAI3D,EAAEe,KAAK4E,KAAK,IAAIC,SAAS5F,GAAGe,KAAK8E,eAAe7F,IAAIe,KAAK+E,KAAK,IAAIvC,IAAIxC,KAAKgF,OAAOhF,KAAK0D,gBAAgB,QAAQzE,EAAEe,KAAKD,YAAYiB,SAAI,IAAS/B,GAAGA,EAAEiE,SAASjE,GAAGA,EAAEe,OAAO,CAACiF,cAAchG,GAAG,IAAIyB,EAAEhB,GAAG,QAAQgB,EAAEV,KAAKkF,YAAO,IAASxE,EAAEA,EAAEV,KAAKkF,KAAK,IAAInC,KAAK9D,QAAG,IAASe,KAAKmF,YAAYnF,KAAKoF,cAAc,QAAQ1F,EAAET,EAAEoG,qBAAgB,IAAS3F,GAAGA,EAAE4F,KAAKrG,GAAG,CAACsG,iBAAiBtG,GAAG,IAAIyB,EAAE,QAAQA,EAAEV,KAAKkF,YAAO,IAASxE,GAAGA,EAAE8E,OAAOxF,KAAKkF,KAAKO,QAAQxG,KAAK,EAAE,EAAE,CAAC+F,OAAOhF,KAAKD,YAAYkD,kBAAkBC,SAAO,CAAGjE,EAAEyB,KAAKV,KAAKuD,eAAe7C,KAAKV,KAAKuC,KAAK/B,IAAIE,EAAEV,KAAKU,WAAWV,KAAKU,GAAI,GAAE,CAACgF,mBAAmB,IAAIzG,EAAE,MAAMS,EAAE,QAAQT,EAAEe,KAAK2F,kBAAa,IAAS1G,EAAEA,EAAEe,KAAK4F,aAAa5F,KAAKD,YAAY8F,mBAAmB,MDAx3D,EAACnG,EAAEE,KAAKT,EAAEO,EAAEoG,mBAAmBlG,EAAEmG,KAAK9G,GAAGA,aAAaQ,cAAcR,EAAEA,EAAEmB,aAAaR,EAAEsD,SAAS/D,IAAI,MAAMS,EAAEoG,SAASC,cAAc,SAASnG,EAAEb,EAAEiH,cAAS,IAASpG,GAAGF,EAAEuG,aAAa,QAAQrG,GAAGF,EAAEwG,YAAYjH,EAAEgB,QAAQT,EAAE2G,YAAYzG,EAAG,GAAE,ECAqpDc,CAAEhB,EAAEM,KAAKD,YAAYoE,eAAezE,CAAC,CAAC4G,oBAAoB,IAAIrH,OAAE,IAASe,KAAKmF,aAAanF,KAAKmF,WAAWnF,KAAK0F,oBAAoB1F,KAAK8E,gBAAe,GAAI,QAAQ7F,EAAEe,KAAKkF,YAAO,IAASjG,GAAGA,EAAEiE,SAASjE,IAAI,IAAIyB,EAAE,OAAO,QAAQA,EAAEzB,EAAEoG,qBAAgB,IAAS3E,OAAE,EAAOA,EAAE4E,KAAKrG,EAAG,GAAE,CAAC6F,eAAe7F,GAAE,CAAEsH,uBAAuB,IAAItH,EAAE,QAAQA,EAAEe,KAAKkF,YAAO,IAASjG,GAAGA,EAAEiE,SAASjE,IAAI,IAAIyB,EAAE,OAAO,QAAQA,EAAEzB,EAAEuH,wBAAmB,IAAS9F,OAAE,EAAOA,EAAE4E,KAAKrG,EAAG,GAAE,CAACwH,yBAAyBxH,EAAEyB,EAAEhB,GAAGM,KAAK0G,KAAKzH,EAAES,EAAE,CAACiH,KAAK1H,EAAEyB,EAAEhB,EAAEmC,GAAG,IAAI1C,EAAE,MAAM2B,EAAEd,KAAKD,YAAYoD,KAAKlE,EAAES,GAAG,QAAG,IAASoB,IAAG,IAAKpB,EAAEwC,QAAQ,CAAC,MAAMlB,QAAG,KAAU,QAAQ7B,EAAEO,EAAEuC,iBAAY,IAAS9C,OAAE,EAAOA,EAAEgC,aAAazB,EAAEuC,UAAUrC,GAAGuB,YAAYT,EAAEhB,EAAEqC,MAAM/B,KAAK2C,KAAK1D,EAAE,MAAM+B,EAAEhB,KAAK4G,gBAAgB9F,GAAGd,KAAKmG,aAAarF,EAAEE,GAAGhB,KAAK2C,KAAK,IAAI,CAAC,CAAC+D,KAAKzH,EAAEyB,GAAG,IAAIhB,EAAE,MAAMP,EAAEa,KAAKD,YAAYe,EAAE3B,EAAEiE,KAAK9C,IAAIrB,GAAG,QAAG,IAAS6B,GAAGd,KAAK2C,OAAO7B,EAAE,CAAC,MAAM7B,EAAEE,EAAE0H,mBAAmB/F,GAAGE,EAAE,mBAAmB/B,EAAEgD,UAAU,CAACR,cAAcxC,EAAEgD,gBAAW,KAAU,QAAQvC,EAAET,EAAEgD,iBAAY,IAASvC,OAAE,EAAOA,EAAE+B,eAAexC,EAAEgD,UAAUrC,EAAEI,KAAK2C,KAAK7B,EAAEd,KAAKc,GAAGE,EAAES,cAAcf,EAAEzB,EAAE8C,MAAM/B,KAAK2C,KAAK,IAAI,CAAC,CAACe,cAAczE,EAAEyB,EAAEhB,GAAG,IAAIP,GAAE,OAAG,IAASF,MAAMS,EAAEA,GAAGM,KAAKD,YAAY8G,mBAAmB5H,IAAIkD,YAAYP,GAAG5B,KAAKf,GAAGyB,IAAIV,KAAK+E,KAAK+B,IAAI7H,IAAIe,KAAK+E,KAAKvE,IAAIvB,EAAEyB,IAAG,IAAKhB,EAAEwC,SAASlC,KAAK2C,OAAO1D,SAAI,IAASe,KAAK+G,OAAO/G,KAAK+G,KAAK,IAAIvE,KAAKxC,KAAK+G,KAAKvG,IAAIvB,EAAES,KAAKP,GAAE,IAAKa,KAAKyC,iBAAiBtD,IAAIa,KAAK4E,KAAK5E,KAAKgH,OAAO,CAACC,aAAajH,KAAKyC,iBAAgB,EAAG,UAAUzC,KAAK4E,IAAI,CAAC,MAAM3F,GAAG4F,QAAQqC,OAAOjI,EAAE,CAAC,MAAMA,EAAEe,KAAKmH,iBAAiB,OAAO,MAAMlI,SAASA,GAAGe,KAAKyC,eAAe,CAAC0E,iBAAiB,OAAOnH,KAAKoH,eAAe,CAACA,gBAAgB,IAAInI,EAAE,IAAIe,KAAKyC,gBAAgB,OAAOzC,KAAK0C,WAAW1C,KAAKuC,OAAOvC,KAAKuC,KAAKW,SAAO,CAAGjE,EAAEyB,IAAIV,KAAKU,GAAGzB,IAAIe,KAAKuC,UAAK,GAAQ,IAAI7B,GAAE,EAAG,MAAMhB,EAAEM,KAAK+E,KAAK,IAAIrE,EAAEV,KAAKqH,aAAa3H,GAAGgB,GAAGV,KAAKsH,WAAW5H,GAAG,QAAQT,EAAEe,KAAKkF,YAAO,IAASjG,GAAGA,EAAEiE,SAASjE,IAAI,IAAIyB,EAAE,OAAO,QAAQA,EAAEzB,EAAEsI,kBAAa,IAAS7G,OAAE,EAAOA,EAAE4E,KAAKrG,EAAG,IAAGe,KAAKwH,OAAO9H,IAAIM,KAAKyH,MAAM,CAAC,MAAMxI,GAAG,MAAMyB,GAAE,EAAGV,KAAKyH,OAAOxI,CAAC,CAACyB,GAAGV,KAAK0H,KAAKhI,EAAE,CAAC4H,WAAWrI,GAAI,CAAAyI,KAAKzI,GAAG,IAAIyB,EAAE,QAAQA,EAAEV,KAAKkF,YAAO,IAASxE,GAAGA,EAAEwC,SAASjE,IAAI,IAAIyB,EAAE,OAAO,QAAQA,EAAEzB,EAAE0I,mBAAc,IAASjH,OAAE,EAAOA,EAAE4E,KAAKrG,EAAG,IAAGe,KAAK0C,aAAa1C,KAAK0C,YAAW,EAAG1C,KAAK4H,aAAa3I,IAAIe,KAAK6H,QAAQ5I,EAAE,CAACwI,OAAOzH,KAAK+E,KAAK,IAAIvC,IAAIxC,KAAKyC,iBAAgB,CAAE,CAAKqF,qBAAiB,OAAO9H,KAAK+H,mBAAmB,CAACA,oBAAoB,OAAO/H,KAAK4E,IAAI,CAACyC,aAAapI,GAAG,OAAM,CAAE,CAACuI,OAAOvI,QAAG,IAASe,KAAK+G,OAAO/G,KAAK+G,KAAK7D,SAAO,CAAGjE,EAAEyB,IAAIV,KAAK2G,KAAKjG,EAAEV,KAAKU,GAAGzB,KAAKe,KAAK+G,UAAK,GAAQ/G,KAAKyH,MAAM,CAACI,QAAQ5I,GAAI,CAAA2I,aAAa3I,GAAE;;;;;;ACAv0K,IAAIA,EDAs0KmD,EAAEyB,WAAU,EAAGzB,EAAEa,kBAAkB,IAAIT,IAAIJ,EAAE+B,cAAc,GAAG/B,EAAEyD,kBAAkB,CAACmC,KAAK,QAAQ,MAAMlI,GAAGA,EAAE,CAACmI,gBAAgB7F,KAAK,QAAQ1C,EAAEP,EAAE+I,+BAA0B,IAASxI,EAAEA,EAAEP,EAAE+I,wBAAwB,IAAInF,KAAK,SCAthL,MAACrC,EAAExB,OAAOQ,EAAEgB,EAAEK,aAAa5B,EAAEO,EAAEA,EAAEyI,aAAa,WAAW,CAACC,WAAWnJ,GAAGA,SAAI,EAAOa,EAAE,QAAQF,EAAE,QAAQyI,KAAKC,SAAS,IAAIC,MAAM,MAAM1G,EAAE,IAAIjC,EAAEoB,EAAE,IAAIa,KAAKf,EAAEkF,SAAS5D,EAAE,IAAItB,EAAE0H,cAAc,IAAI5F,EAAE3D,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAE2B,EAAEU,MAAMgD,QAAyE1C,EAAE,cAAc6G,EAAE,sDAAsDC,EAAE,OAAOC,EAAE,KAAKC,EAAEC,OAAO,KAAKjH,sBAAsBA,MAAMA,uCAAuC,KAAKkH,EAAE,KAAKC,EAAE,KAAKC,EAAE,qCAAwFC,EAAjDhK,IAAG,CAACyB,KAAKhB,KAAK,CAACwJ,WAAWjK,EAAEkK,QAAQzI,EAAE0I,OAAO1J,IAAM2J,CAAE,GAAUC,EAAE3J,OAAO4J,IAAI,gBAAgBC,EAAE7J,OAAO4J,IAAI,eAAeE,EAAE,IAAI5J,QAAQ6J,EAAE5I,EAAE6I,iBAAiB7I,EAAE,IAAI,MAAK,GAAI8I,EAAE,CAAC3K,EAAEyB,KAAK,MAAMhB,EAAET,EAAEoB,OAAO,EAAEwB,EAAE,GAAG,IAAIf,EAAEsB,EAAE,IAAI1B,EAAE,QAAQ,GAAGkC,EAAE6F,EAAE,IAAI,IAAI/H,EAAE,EAAEA,EAAEhB,EAAEgB,IAAI,CAAC,MAAMhB,EAAET,EAAEyB,GAAG,IAAIvB,EAAEyB,EAAEiJ,GAAG,EAAEjI,EAAE,EAAE,KAAKA,EAAElC,EAAEW,SAASuC,EAAEkH,UAAUlI,EAAEhB,EAAEgC,EAAEmH,KAAKrK,GAAG,OAAOkB,IAAIgB,EAAEgB,EAAEkH,UAAUlH,IAAI6F,EAAE,QAAQ7H,EAAE,GAAGgC,EAAE8F,OAAE,IAAS9H,EAAE,GAAGgC,EAAE+F,OAAE,IAAS/H,EAAE,IAAIoI,EAAEgB,KAAKpJ,EAAE,MAAME,EAAE+H,OAAO,KAAKjI,EAAE,GAAG,MAAMgC,EAAEgG,QAAG,IAAShI,EAAE,KAAKgC,EAAEgG,GAAGhG,IAAIgG,EAAE,MAAMhI,EAAE,IAAIgC,EAAE,MAAM9B,EAAEA,EAAE2H,EAAEoB,GAAG,QAAG,IAASjJ,EAAE,GAAGiJ,GAAG,GAAGA,EAAEjH,EAAEkH,UAAUlJ,EAAE,GAAGP,OAAOlB,EAAEyB,EAAE,GAAGgC,OAAE,IAAShC,EAAE,GAAGgI,EAAE,MAAMhI,EAAE,GAAGmI,EAAED,GAAGlG,IAAImG,GAAGnG,IAAIkG,EAAElG,EAAEgG,EAAEhG,IAAI8F,GAAG9F,IAAI+F,EAAE/F,EAAE6F,GAAG7F,EAAEgG,EAAE9H,OAAE,GAAQ,MAAMuI,EAAEzG,IAAIgG,GAAG3J,EAAEyB,EAAE,GAAGuJ,WAAW,MAAM,IAAI,GAAG7H,GAAGQ,IAAI6F,EAAE/I,EAAEsB,EAAE6I,GAAG,GAAGhI,EAAEkB,KAAK5D,GAAGO,EAAE6I,MAAM,EAAEsB,GAAG/J,EAAEJ,EAAE6I,MAAMsB,GAAGjK,EAAEyJ,GAAG3J,EAAEE,IAAI,IAAIiK,GAAGhI,EAAEkB,UAAK,GAAQrC,GAAG2I,EAAE,CAAC,MAAMzI,EAAEwB,GAAGnD,EAAES,IAAI,QAAQ,IAAIgB,EAAE,SAAS,IAAI,IAAIY,MAAMgD,QAAQrF,KAAKA,EAAEsE,eAAe,OAAO,MAAMrD,MAAM,kCAAkC,MAAM,MAAC,IAASf,EAAEA,EAAEiJ,WAAWxH,GAAGA,EAAEiB,EAAC,EAAG,MAAMqI,EAAEnK,aAAaoJ,QAAQlK,EAAEiK,WAAWxI,GAAGvB,GAAG,IAAI6B,EAAEhB,KAAKmK,MAAM,GAAG,IAAIrJ,EAAE,EAAE8B,EAAE,EAAE,MAAMhC,EAAE3B,EAAEoB,OAAO,EAAEwJ,EAAE7J,KAAKmK,OAAOvI,EAAE6G,GAAGmB,EAAE3K,EAAEyB,GAAG,GAAGV,KAAKoK,GAAGF,EAAEjE,cAAcrE,EAAEzC,GAAGuK,EAAEW,YAAYrK,KAAKoK,GAAGE,QAAQ,IAAI5J,EAAE,CAAC,MAAMzB,EAAEe,KAAKoK,GAAGE,QAAQ5J,EAAEzB,EAAEsL,WAAW7J,EAAE8J,SAASvL,EAAEwL,UAAU/J,EAAEgK,WAAW,CAAC,KAAK,QAAQ1J,EAAE0I,EAAEiB,aAAad,EAAExJ,OAAOO,GAAG,CAAC,GAAG,IAAII,EAAE4J,SAAS,CAAC,GAAG5J,EAAE6J,gBAAgB,CAAC,MAAM5L,EAAE,GAAG,IAAI,MAAMyB,KAAKM,EAAE8J,oBAAoB,GAAGpK,EAAEqK,SAASjL,IAAIY,EAAEuJ,WAAWrK,GAAG,CAAC,MAAMF,EAAE+I,EAAE7F,KAAK,GAAG3D,EAAE8D,KAAKrC,QAAG,IAAShB,EAAE,CAAC,MAAMT,EAAE+B,EAAEgK,aAAatL,EAAEiF,cAAc7E,GAAGmL,MAAMrL,GAAGc,EAAE,eAAeqJ,KAAKrK,GAAGmK,EAAE9G,KAAK,CAAChB,KAAK,EAAEmJ,MAAMpK,EAAEqK,KAAKzK,EAAE,GAAGyI,QAAQlK,EAAEmM,KAAK,MAAM1K,EAAE,GAAG2K,EAAE,MAAM3K,EAAE,GAAG4K,EAAE,MAAM5K,EAAE,GAAG6K,EAAEC,GAAG,MAAM3B,EAAE9G,KAAK,CAAChB,KAAK,EAAEmJ,MAAMpK,GAAG,CAAC,IAAI,MAAMJ,KAAKzB,EAAE+B,EAAE4F,gBAAgBlG,EAAE,CAAC,GAAGsI,EAAEgB,KAAKhJ,EAAEyK,SAAS,CAAC,MAAMxM,EAAE+B,EAAEoF,YAAY6E,MAAMrL,GAAGc,EAAEzB,EAAEoB,OAAO,EAAE,GAAGK,EAAE,EAAE,CAACM,EAAEoF,YAAY1G,EAAEA,EAAEuB,YAAY,GAAG,IAAI,IAAIvB,EAAE,EAAEA,EAAEgB,EAAEhB,IAAIsB,EAAEyJ,OAAOxL,EAAES,GAAG0C,KAAKsH,EAAEiB,WAAWd,EAAE9G,KAAK,CAAChB,KAAK,EAAEmJ,QAAQpK,IAAIE,EAAEyJ,OAAOxL,EAAEyB,GAAG0B,IAAI,CAAC,CAAC,MAAM,GAAG,IAAIpB,EAAE4J,SAAS,GAAG5J,EAAE0K,OAAO7J,EAAEgI,EAAE9G,KAAK,CAAChB,KAAK,EAAEmJ,MAAMpK,QAAQ,CAAC,IAAI7B,GAAG,EAAE,MAAM,KAAKA,EAAE+B,EAAE0K,KAAKjG,QAAQ7F,EAAEX,EAAE,KAAK4K,EAAE9G,KAAK,CAAChB,KAAK,EAAEmJ,MAAMpK,IAAI7B,GAAGW,EAAES,OAAO,CAAC,CAACS,GAAG,CAAC,CAAC+B,qBAAqB5D,EAAEyB,GAAG,MAAMhB,EAAEoB,EAAEmF,cAAc,YAAY,OAAOvG,EAAEiM,UAAU1M,EAAES,CAAC,EAAE,SAASkM,EAAE3M,EAAEyB,EAAEhB,EAAET,EAAEE,GAAG,IAAIW,EAAEF,EAAEiC,EAAEb,EAAE,GAAGN,IAAI4I,EAAE,OAAO5I,EAAE,IAAII,OAAE,IAAS3B,EAAE,QAAQW,EAAEJ,EAAEmM,YAAO,IAAS/L,OAAE,EAAOA,EAAEX,GAAGO,EAAEoM,KAAK,MAAM1J,EAAEQ,EAAElC,QAAG,EAAOA,EAAEqL,gBAAgB,OAAO,MAAMjL,OAAE,EAAOA,EAAEf,eAAeqC,IAAI,QAAQxC,EAAE,MAAMkB,OAAE,EAAOA,EAAEkL,YAAO,IAASpM,GAAGA,EAAE0F,KAAKxE,GAAE,QAAI,IAASsB,EAAEtB,OAAE,GAAQA,EAAE,IAAIsB,EAAEnD,GAAG6B,EAAEmL,KAAKhN,EAAES,EAAEP,SAAI,IAASA,GAAG,QAAQ0C,GAAGb,EAAEtB,GAAGmM,YAAO,IAAShK,EAAEA,EAAEb,EAAE6K,KAAK,IAAI1M,GAAG2B,EAAEpB,EAAEoM,KAAKhL,QAAG,IAASA,IAAIJ,EAAEkL,EAAE3M,EAAE6B,EAAEoL,KAAKjN,EAAEyB,EAAE0I,QAAQtI,EAAE3B,IAAIuB,CAAC,CAAC,MAAMyL,EAAEpM,YAAYd,EAAEyB,GAAGV,KAAK4C,EAAE,GAAG5C,KAAKoM,UAAK,EAAOpM,KAAKqM,KAAKpN,EAAEe,KAAKsM,KAAK5L,CAAC,CAAK6L,iBAAa,OAAOvM,KAAKsM,KAAKC,UAAU,CAAKC,WAAO,OAAOxM,KAAKsM,KAAKE,IAAI,CAAC3C,EAAE5K,GAAG,IAAIyB,EAAE,MAAM0J,IAAIE,QAAQ5K,GAAGyK,MAAMhL,GAAGa,KAAKqM,KAAKvM,GAAG,QAAQY,EAAE,MAAMzB,OAAE,EAAOA,EAAEwN,qBAAgB,IAAS/L,EAAEA,EAAEI,GAAG4L,WAAWhN,GAAE,GAAIgK,EAAEW,YAAYvK,EAAE,IAAIF,EAAE8J,EAAEiB,WAAW9I,EAAE,EAAEb,EAAE,EAAEoB,EAAEjD,EAAE,GAAG,UAAK,IAASiD,GAAG,CAAC,GAAGP,IAAIO,EAAE8I,MAAM,CAAC,IAAIxK,EAAE,IAAI0B,EAAEL,KAAKrB,EAAE,IAAIiM,EAAE/M,EAAEA,EAAEgN,YAAY5M,KAAKf,GAAG,IAAImD,EAAEL,KAAKrB,EAAE,IAAI0B,EAAEgJ,KAAKxL,EAAEwC,EAAE+I,KAAK/I,EAAE+G,QAAQnJ,KAAKf,GAAG,IAAImD,EAAEL,OAAOrB,EAAE,IAAImM,EAAEjN,EAAEI,KAAKf,IAAIe,KAAK4C,EAAEG,KAAKrC,GAAG0B,EAAEjD,IAAI6B,EAAE,CAACa,KAAK,MAAMO,OAAE,EAAOA,EAAE8I,SAAStL,EAAE8J,EAAEiB,WAAW9I,IAAI,CAAC,OAAO/B,CAAC,CAAC8I,EAAE3J,GAAG,IAAIyB,EAAE,EAAE,IAAI,MAAMhB,KAAKM,KAAK4C,OAAE,IAASlD,SAAI,IAASA,EAAEyJ,SAASzJ,EAAEoN,KAAK7N,EAAES,EAAEgB,GAAGA,GAAGhB,EAAEyJ,QAAQ9I,OAAO,GAAGX,EAAEoN,KAAK7N,EAAEyB,KAAKA,GAAG,EAAE,MAAMiM,EAAE5M,YAAYd,EAAEyB,EAAEhB,EAAEP,GAAG,IAAIW,EAAEE,KAAK+B,KAAK,EAAE/B,KAAK+M,KAAKvD,EAAExJ,KAAKoM,UAAK,EAAOpM,KAAKgN,KAAK/N,EAAEe,KAAKiN,KAAKvM,EAAEV,KAAKsM,KAAK5M,EAAEM,KAAKkN,QAAQ/N,EAAEa,KAAKmN,KAAK,QAAQrN,EAAE,MAAMX,OAAE,EAAOA,EAAEiG,mBAAc,IAAStF,GAAGA,CAAC,CAAK0M,WAAO,IAAIvN,EAAEyB,EAAE,OAAO,QAAQA,EAAE,QAAQzB,EAAEe,KAAKsM,YAAO,IAASrN,OAAE,EAAOA,EAAEuN,YAAO,IAAS9L,EAAEA,EAAEV,KAAKmN,IAAI,CAAKZ,iBAAa,IAAItN,EAAEe,KAAKgN,KAAKT,WAAW,MAAM7L,EAAEV,KAAKsM,KAAK,YAAO,IAAS5L,GAAG,MAAM,MAAMzB,OAAE,EAAOA,EAAE2L,YAAY3L,EAAEyB,EAAE6L,YAAYtN,CAAC,CAAKmO,gBAAY,OAAOpN,KAAKgN,IAAI,CAAKK,cAAU,OAAOrN,KAAKiN,IAAI,CAACH,KAAK7N,EAAEyB,EAAEV,MAAMf,EAAE2M,EAAE5L,KAAKf,EAAEyB,GAAGkC,EAAE3D,GAAGA,IAAIuK,GAAG,MAAMvK,GAAG,KAAKA,GAAGe,KAAK+M,OAAOvD,GAAGxJ,KAAKsN,OAAOtN,KAAK+M,KAAKvD,GAAGvK,IAAIe,KAAK+M,MAAM9N,IAAIqK,GAAGtJ,KAAK8I,EAAE7J,QAAG,IAASA,EAAEiK,WAAWlJ,KAAK+I,EAAE9J,QAAG,IAASA,EAAE2L,SAAS5K,KAAKsJ,EAAErK,GAAhpIA,IAAG2B,EAAE3B,IAAI,mBAAmB,MAAMA,OAAE,EAAOA,EAAEU,OAAO4N,WAA+lI1D,CAAE5K,GAAGe,KAAKqL,EAAEpM,GAAGe,KAAK8I,EAAE7J,EAAE,CAACkN,EAAElN,GAAG,OAAOe,KAAKgN,KAAKT,WAAWiB,aAAavO,EAAEe,KAAKiN,KAAK,CAAC3D,EAAErK,GAAGe,KAAK+M,OAAO9N,IAAIe,KAAKsN,OAAOtN,KAAK+M,KAAK/M,KAAKmM,EAAElN,GAAG,CAAC6J,EAAE7J,GAAGe,KAAK+M,OAAOvD,GAAG5G,EAAE5C,KAAK+M,MAAM/M,KAAKgN,KAAKJ,YAAYlB,KAAKzM,EAAEe,KAAKsJ,EAAExI,EAAE2M,eAAexO,IAAIe,KAAK+M,KAAK9N,CAAC,CAAC8J,EAAE9J,GAAG,IAAIyB,EAAE,MAAM0I,OAAO1J,EAAEwJ,WAAW/J,GAAGF,EAAEa,EAAE,iBAAiBX,EAAEa,KAAK0N,KAAKzO,SAAI,IAASE,EAAEiL,KAAKjL,EAAEiL,GAAGF,EAAEjE,cAAc9G,EAAE6B,EAAEhB,KAAKkN,UAAU/N,GAAG,IAAI,QAAQuB,EAAEV,KAAK+M,YAAO,IAASrM,OAAE,EAAOA,EAAE2L,QAAQvM,EAAEE,KAAK+M,KAAKnE,EAAElJ,OAAO,CAAC,MAAMT,EAAE,IAAIkN,EAAErM,EAAEE,MAAMU,EAAEzB,EAAE4K,EAAE7J,KAAKkN,SAASjO,EAAE2J,EAAElJ,GAAGM,KAAKsJ,EAAE5I,GAAGV,KAAK+M,KAAK9N,CAAC,CAAC,CAACyO,KAAKzO,GAAG,IAAIyB,EAAE+I,EAAEnJ,IAAIrB,EAAEkK,SAAS,YAAO,IAASzI,GAAG+I,EAAEjJ,IAAIvB,EAAEkK,QAAQzI,EAAE,IAAIwJ,EAAEjL,IAAIyB,CAAC,CAAC2K,EAAEpM,GAAG2B,EAAEZ,KAAK+M,QAAQ/M,KAAK+M,KAAK,GAAG/M,KAAKsN,QAAQ,MAAM5M,EAAEV,KAAK+M,KAAK,IAAIrN,EAAEP,EAAE,EAAE,IAAI,MAAMW,KAAKb,EAAEE,IAAIuB,EAAEL,OAAOK,EAAEqC,KAAKrD,EAAE,IAAIiN,EAAE3M,KAAKmM,EAAE/J,KAAKpC,KAAKmM,EAAE/J,KAAKpC,KAAKA,KAAKkN,UAAUxN,EAAEgB,EAAEvB,GAAGO,EAAEoN,KAAKhN,GAAGX,IAAIA,EAAEuB,EAAEL,SAASL,KAAKsN,KAAK5N,GAAGA,EAAEuN,KAAKL,YAAYzN,GAAGuB,EAAEL,OAAOlB,EAAE,CAACmO,KAAKrO,EAAEe,KAAKgN,KAAKJ,YAAYlM,GAAG,IAAIhB,EAAE,IAAI,QAAQA,EAAEM,KAAK2N,YAAO,IAASjO,GAAGA,EAAE4F,KAAKtF,MAAK,GAAG,EAAGU,GAAGzB,GAAGA,IAAIe,KAAKiN,MAAM,CAAC,MAAMvM,EAAEzB,EAAE2N,YAAY3N,EAAEuL,SAASvL,EAAEyB,CAAC,CAAC,CAACkN,aAAa3O,GAAG,IAAIyB,OAAE,IAASV,KAAKsM,OAAOtM,KAAKmN,KAAKlO,EAAE,QAAQyB,EAAEV,KAAK2N,YAAO,IAASjN,GAAGA,EAAE4E,KAAKtF,KAAKf,GAAG,EAAE,MAAMuM,EAAEzL,YAAYd,EAAEyB,EAAEhB,EAAEP,EAAEW,GAAGE,KAAK+B,KAAK,EAAE/B,KAAK+M,KAAKvD,EAAExJ,KAAKoM,UAAK,EAAOpM,KAAK6N,QAAQ5O,EAAEe,KAAKmL,KAAKzK,EAAEV,KAAKsM,KAAKnN,EAAEa,KAAKkN,QAAQpN,EAAEJ,EAAEW,OAAO,GAAG,KAAKX,EAAE,IAAI,KAAKA,EAAE,IAAIM,KAAK+M,KAAKzL,MAAM5B,EAAEW,OAAO,GAAGyN,KAAK,IAAI9L,QAAQhC,KAAKmJ,QAAQzJ,GAAGM,KAAK+M,KAAKvD,CAAC,CAAKiC,cAAU,OAAOzL,KAAK6N,QAAQpC,OAAO,CAAKe,WAAO,OAAOxM,KAAKsM,KAAKE,IAAI,CAACM,KAAK7N,EAAEyB,EAAEV,KAAKN,EAAEP,GAAG,MAAMW,EAAEE,KAAKmJ,QAAQ,IAAIvJ,GAAE,EAAG,QAAG,IAASE,EAAEb,EAAE2M,EAAE5L,KAAKf,EAAEyB,EAAE,GAAGd,GAAGgD,EAAE3D,IAAIA,IAAIe,KAAK+M,MAAM9N,IAAIqK,EAAE1J,IAAII,KAAK+M,KAAK9N,OAAO,CAAC,MAAME,EAAEF,EAAE,IAAI4C,EAAEb,EAAE,IAAI/B,EAAEa,EAAE,GAAG+B,EAAE,EAAEA,EAAE/B,EAAEO,OAAO,EAAEwB,IAAIb,EAAE4K,EAAE5L,KAAKb,EAAEO,EAAEmC,GAAGnB,EAAEmB,GAAGb,IAAIsI,IAAItI,EAAEhB,KAAK+M,KAAKlL,IAAIjC,IAAIA,GAAGgD,EAAE5B,IAAIA,IAAIhB,KAAK+M,KAAKlL,IAAIb,IAAIwI,EAAEvK,EAAEuK,EAAEvK,IAAIuK,IAAIvK,IAAI,MAAM+B,EAAEA,EAAE,IAAIlB,EAAE+B,EAAE,IAAI7B,KAAK+M,KAAKlL,GAAGb,CAAC,CAACpB,IAAIT,GAAGa,KAAK+N,EAAE9O,EAAE,CAAC8O,EAAE9O,GAAGA,IAAIuK,EAAExJ,KAAK6N,QAAQjH,gBAAgB5G,KAAKmL,MAAMnL,KAAK6N,QAAQ1H,aAAanG,KAAKmL,KAAK,MAAMlM,EAAEA,EAAE,GAAG,EAAE,MAAMoM,UAAUG,EAAEzL,cAAcuC,SAAS0L,WAAWhO,KAAK+B,KAAK,CAAC,CAACgM,EAAE9O,GAAGe,KAAK6N,QAAQ7N,KAAKmL,MAAMlM,IAAIuK,OAAE,EAAOvK,CAAC,EAAE,MAAMgP,EAAEvO,EAAEA,EAAEuB,YAAY,GAAG,MAAMqK,UAAUE,EAAEzL,cAAcuC,SAAS0L,WAAWhO,KAAK+B,KAAK,CAAC,CAACgM,EAAE9O,GAAGA,GAAGA,IAAIuK,EAAExJ,KAAK6N,QAAQ1H,aAAanG,KAAKmL,KAAK8C,GAAGjO,KAAK6N,QAAQjH,gBAAgB5G,KAAKmL,KAAK,EAAE,MAAMI,UAAUC,EAAEzL,YAAYd,EAAEyB,EAAEhB,EAAEP,EAAEW,GAAGwC,MAAMrD,EAAEyB,EAAEhB,EAAEP,EAAEW,GAAGE,KAAK+B,KAAK,CAAC,CAAC+K,KAAK7N,EAAEyB,EAAEV,MAAM,IAAIN,EAAE,IAAIT,EAAE,QAAQS,EAAEkM,EAAE5L,KAAKf,EAAEyB,EAAE,UAAK,IAAShB,EAAEA,EAAE8J,KAAKF,EAAE,OAAO,MAAMnK,EAAEa,KAAK+M,KAAKjN,EAAEb,IAAIuK,GAAGrK,IAAIqK,GAAGvK,EAAEiP,UAAU/O,EAAE+O,SAASjP,EAAEkP,OAAOhP,EAAEgP,MAAMlP,EAAEmP,UAAUjP,EAAEiP,QAAQxO,EAAEX,IAAIuK,IAAIrK,IAAIqK,GAAG1J,GAAGA,GAAGE,KAAK6N,QAAQQ,oBAAoBrO,KAAKmL,KAAKnL,KAAKb,GAAGS,GAAGI,KAAK6N,QAAQS,iBAAiBtO,KAAKmL,KAAKnL,KAAKf,GAAGe,KAAK+M,KAAK9N,CAAC,CAACsP,YAAYtP,GAAG,IAAIyB,EAAEhB,EAAE,mBAAmBM,KAAK+M,KAAK/M,KAAK+M,KAAKzH,KAAK,QAAQ5F,EAAE,QAAQgB,EAAEV,KAAKkN,eAAU,IAASxM,OAAE,EAAOA,EAAE8N,YAAO,IAAS9O,EAAEA,EAAEM,KAAK6N,QAAQ5O,GAAGe,KAAK+M,KAAKwB,YAAYtP,EAAE,EAAE,MAAM4N,EAAE9M,YAAYd,EAAEyB,EAAEhB,GAAGM,KAAK6N,QAAQ5O,EAAEe,KAAK+B,KAAK,EAAE/B,KAAKoM,UAAK,EAAOpM,KAAKsM,KAAK5L,EAAEV,KAAKkN,QAAQxN,CAAC,CAAK8M,WAAO,OAAOxM,KAAKsM,KAAKE,IAAI,CAACM,KAAK7N,GAAG2M,EAAE5L,KAAKf,EAAE,EAAO,MAA6D8O,EAAErN,EAAE+N,uBAAuB,MAAMV,GAAGA,EAAE7D,EAAEyC,IAAI,QAAQ1N,EAAEyB,EAAEgO,uBAAkB,IAASzP,EAAEA,EAAEyB,EAAEgO,gBAAgB,IAAI3L,KAAK;;;;;;ACAp4O,IAAIlB,GAAE/B,GAAY,MAAMJ,WAAUT,EAAEc,cAAcuC,SAAS0L,WAAWhO,KAAK2O,cAAc,CAACH,KAAKxO,MAAMA,KAAK4O,UAAK,CAAM,CAAClJ,mBAAmB,IAAIzG,EAAEE,EAAE,MAAMuB,EAAE4B,MAAMoD,mBAAmB,OAAO,QAAQzG,GAAGE,EAAEa,KAAK2O,eAAeE,oBAAe,IAAS5P,IAAIE,EAAE0P,aAAanO,EAAE6J,YAAY7J,CAAC,CAAC8G,OAAOvI,GAAG,MAAMyB,EAAEV,KAAK8O,SAAS9O,KAAK0C,aAAa1C,KAAK2O,cAAcvJ,YAAYpF,KAAKoF,aAAa9C,MAAMkF,OAAOvI,GAAGe,KAAK4O,KDAwgO,EAAC3P,EAAEyB,EAAEhB,KAAK,IAAIP,EAAEW,EAAE,MAAMF,EAAE,QAAQT,EAAE,MAAMO,OAAE,EAAOA,EAAEmP,oBAAe,IAAS1P,EAAEA,EAAEuB,EAAE,IAAImB,EAAEjC,EAAEmP,WAAW,QAAG,IAASlN,EAAE,CAAC,MAAM5C,EAAE,QAAQa,EAAE,MAAMJ,OAAE,EAAOA,EAAEmP,oBAAe,IAAS/O,EAAEA,EAAE,KAAKF,EAAEmP,WAAWlN,EAAE,IAAI8K,EAAEjM,EAAE8M,aAAapL,IAAInD,GAAGA,OAAE,EAAO,MAAMS,EAAEA,EAAE,CAAE,EAAC,CAAC,OAAOmC,EAAEiL,KAAK7N,GAAG4C,GCA/wO1C,CAAEuB,EAAEV,KAAKmF,WAAWnF,KAAK2O,cAAc,CAACrI,oBAAoB,IAAIrH,EAAEqD,MAAMgE,oBAAoB,QAAQrH,EAAEe,KAAK4O,YAAO,IAAS3P,GAAGA,EAAE2O,cAAa,EAAG,CAACrH,uBAAuB,IAAItH,EAAEqD,MAAMiE,uBAAuB,QAAQtH,EAAEe,KAAK4O,YAAO,IAAS3P,GAAGA,EAAE2O,cAAa,EAAG,CAACkB,SAAS,OAAOpO,CAAC,EAAEhB,GAAEmE,WAAU,EAAGnE,GAAEsP,eAAc,EAAG,QAAQnN,GAAEoN,WAAWC,gCAA2B,IAASrN,IAAGA,GAAEyD,KAAK2J,WAAW,CAACE,WAAWzP,KAAI,MAAME,GAAEqP,WAAWG,0BAA0B,MAAMxP,IAAGA,GAAE,CAACuP,WAAWzP,MAA0D,QAAQI,GAAEmP,WAAWI,0BAAqB,IAASvP,GAAEA,GAAEmP,WAAWI,mBAAmB,IAAItM,KAAK;;;;;;ACApgC,MAAM5D,GAAEA,GAAGS,GAAG,mBAAmBA,EAAE,EAAET,EAAES,KAAK0P,eAAeC,OAAOpQ,EAAES,GAAGA,GAApC,CAAwCT,EAAES,GAAG,EAAET,EAAES,KAAK,MAAM4P,KAAKvQ,EAAEwQ,SAAS/P,GAAGE,EAAE,MAAM,CAAC4P,KAAKvQ,EAAEwQ,SAAS/P,EAAEgQ,SAAS9P,GAAG0P,eAAeC,OAAOpQ,EAAES,EAAE,EAAG,EAAtG,CAAwGT,EAAES;;;;;ICApLc,GAAE,CAACA,EAAEvB,IAAI,WAAWA,EAAEqQ,MAAMrQ,EAAEwQ,cAAc,UAAUxQ,EAAEwQ,YAAY,IAAIxQ,EAAEuQ,SAAS9P,GAAGA,EAAEsE,eAAe/E,EAAEyQ,IAAIlP,EAAE,GAAG,CAAC8O,KAAK,QAAQI,IAAIjQ,SAASkQ,UAAU,MAAMF,WAAW,GAAGG,YAAY3Q,EAAEyQ,IAAIG,cAAc,mBAAmB5Q,EAAE4Q,cAAc/P,KAAKb,EAAEyQ,KAAKzQ,EAAE4Q,YAAYzK,KAAKtF,MAAM,EAAE0P,SAAS9P,GAAGA,EAAEsE,eAAe/E,EAAEyQ,IAAIlP,EAAE,GAAG,SAASvB,GAAEA,GAAG,MAAM,CAACS,EAAEX,SAAI,IAASA,EAAE,EAAEyB,EAAEvB,EAAES,KAAKT,EAAEY,YAAYmE,eAAetE,EAAEc,EAAG,EAA7C,CAA+CvB,EAAES,EAAEX,GAAGyB,GAAEvB,EAAES;;;;;GAAE,CCAla,SAASX,GAAEA,GAAG,OAAO6B,GAAE,IAAI7B,EAAEoE,OAAM,GAAI;;;;;GCArC,MAAmHvD,GAAE,EAAE4P,SAASvQ,EAAEwQ,WAAW1Q,KAAK,CAACa,EAAEF,KAAK,IAAIkB,EAAE,QAAG,IAASlB,EAAE,CAAC,MAAMA,EAAE,QAAQkB,EAAEhB,EAAEgQ,mBAAc,IAAShP,EAAEA,EAAEhB,EAAE8P,IAAIlP,EAAE,MAAMzB,EAAE,CAACuQ,KAAK,SAASK,UAAU,YAAYD,IAAIhQ,EAAE+P,WAAW1Q,EAAEa,EAAE8P,MAAM,IAAI9P,EAAE8P,IAAIhQ,GAAG,OAAO,MAAMT,IAAIuB,EAAEgP,SAAS,SAASzQ,GAAGE,EAAEF,EAAEW,EAAE,GAAGc,CAAC,CAAC,CAAC,MAAMI,EAAEhB,EAAEC,iBAAY,IAASd,GAAGoC,OAAOoC,eAAe3D,EAAEF,EAAEX,EAAEW,IAAI,MAAMT,GAAGA,EAAE2B,EAAElB,EAAE;;;;;;;;;;;ACAlc,IAAIA,GAAiB,QAAQA,GAAEV,OAAO8Q,uBAAkB,IAASpQ,IAASA,GAAEJ,UAAUyQ,iBCClF,IAAMC,GAAN,cAA6Bf,KAAvBe,GAAcC,EAAA,CAD1BC,GAAc,oBACFF,ICJb,ICEKG,GDFUC,GAAAA,CAAG;;;;;;;;;;;;;;;;;;;;o+BCElB,SAAKD,GACHA,EAAAA,EAAA,aAAA,GAAA,YACAA,EAAAA,EAAA,gBAAA,GAAA,eACAA,EAAAA,EAAA,eAAA,GAAA,cACAA,EAAAA,EAAA,YAAA,GAAA,UACD,CALD,CAAKA,KAAAA,GAKJ,CAAA,IAUM,IAAME,GAAN,cAAyBL,GAAzBnQ,kCA0BLC,KAAOwQ,QAAG,QAOVxQ,KAAiByQ,mBAAG,CA2DrB,CAzDC3B,SACE,OAAO4B,CAAI;QACP1Q,KAAKwQ,QACHE,CAAI;;4BAEc1Q,KAAKwQ;;oBAGvB;QACFxQ,KAAK2Q;KAEV,CAODA,WACE,OAAOD,CAAI;;uBAEQ1Q,KAAK4Q,eAAe5Q,KAAKyQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmC7C,GA1FMF,GAAAlM,OAAyB,CAACwM,IAejCV,EAAA,CAXCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,cACXG,UAAW2O,IACLA,KAAiBA,KAAeP,MAClCO,EAAc,aAETA,MAGmBL,GAAA/Q,UAAA,mBAAA,GAU9B2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,cAEKyO,GAAA/Q,UAAA,eAAA,GAOlB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,yBAEayO,GAAA/Q,UAAA,yBAAA,GAjCf+Q,GAAUJ,EAAA,CADtBC,GAAc,gBACFG;;;;;;ACdV,MAAM1O,GAAEA,GAAG,MAAMA,EAAEA,EAAE5C,ECHxB,IAAeqR,GAAAA,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;ICGlB,MAAMrR,GAAa,EAAbA,GAAqB,EAAoDE,GAAEF,GAAG,IAAIE,KAAC,CAAK4M,gBAAgB9M,EAAEmK,OAAOjK,IAAI,MAAMuB,GAAEX,YAAYd,GAAI,CAAIuN,WAAO,OAAOxM,KAAKsM,KAAKE,IAAI,CAACP,KAAKhN,EAAEE,EAAEuB,GAAGV,KAAK+Q,KAAK9R,EAAEe,KAAKsM,KAAKnN,EAAEa,KAAKgR,KAAKtQ,CAAC,CAACwL,KAAKjN,EAAEE,GAAG,OAAOa,KAAKwH,OAAOvI,EAAEE,EAAE,CAACqI,OAAOvI,EAAEE,GAAG,OAAOa,KAAK8O,UAAU3P,EAAE;;;;;GCAvS,MAAMW,GAAEY,GAAE,cAAchB,GAAEK,YAAYd,GAAG,IAAIyB,EAAE,GAAG4B,MAAMrD,GAAGA,EAAE8C,OAAOjB,IAAa,UAAU7B,EAAEkM,OAAO,QAAQzK,EAAEzB,EAAEkK,eAAU,IAASzI,OAAE,EAAOA,EAAEL,QAAQ,EAAE,MAAMH,MAAM,qGAAqG,CAAC4O,OAAO7P,GAAG,MAAM,IAAIoC,OAAO4P,KAAKhS,GAAGiS,QAAQxQ,GAAGzB,EAAEyB,KAAKyQ,KAAK,KAAK,GAAG,CAAC3J,OAAO9G,GAAGhB,IAAI,IAAIoB,EAAEhB,EAAE,QAAG,IAASE,KAAKoR,GAAG,CAACpR,KAAKoR,GAAG,IAAI7M,SAAI,IAAS7D,EAAEyI,UAAUnJ,KAAKqR,GAAG,IAAI9M,IAAI7D,EAAEyI,QAAQgI,KAAK,KAAKlG,MAAM,MAAMiG,QAAQjS,GAAG,KAAKA,MAAM,IAAI,MAAMA,KAAKS,EAAEA,EAAET,MAAM,QAAQ6B,EAAEd,KAAKqR,UAAK,IAASvQ,OAAE,EAAOA,EAAEgG,IAAI7H,KAAKe,KAAKoR,GAAGE,IAAIrS,GAAG,OAAOe,KAAK8O,OAAOpP,EAAE,CAAC,MAAMP,EAAEuB,EAAEmN,QAAQ0D,UAAUvR,KAAKoR,GAAGlO,SAASjE,IAAIA,KAAKS,IAAIP,EAAEqL,OAAOvL,GAAGe,KAAKoR,GAAGI,OAAOvS,GAAI,IAAG,IAAI,MAAMA,KAAKS,EAAE,CAAC,MAAMgB,IAAIhB,EAAET,GAAGyB,IAAIV,KAAKoR,GAAGtK,IAAI7H,KAAK,QAAQa,EAAEE,KAAKqR,UAAK,IAASvR,OAAE,EAAOA,EAAEgH,IAAI7H,MAAMyB,GAAGvB,EAAEmS,IAAIrS,GAAGe,KAAKoR,GAAGE,IAAIrS,KAAKE,EAAEqL,OAAOvL,GAAGe,KAAKoR,GAAGI,OAAOvS,IAAI,CAAC,OAAOA,CAAC,ICH91B,IAAeqR,GAAAA,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;ICGf,MAAMnR,WAAU2B,GAAEf,YAAYW,GAAG,GAAG4B,MAAM5B,GAAGV,KAAKyR,GAAGxS,EAAEyB,EAAEqB,OAAOrC,GAAQ,MAAMQ,MAAMF,KAAKD,YAAY2R,cAAc,wCAAwC,CAAC5C,OAAOhO,GAAG,GAAGA,IAAI7B,GAAG,MAAM6B,EAAE,OAAOd,KAAK2R,QAAG,EAAO3R,KAAKyR,GAAG3Q,EAAE,GAAGA,IAAIJ,EAAE,OAAOI,EAAE,GAAG,iBAAiBA,EAAE,MAAMZ,MAAMF,KAAKD,YAAY2R,cAAc,qCAAqC,GAAG5Q,IAAId,KAAKyR,GAAG,OAAOzR,KAAK2R,GAAG3R,KAAKyR,GAAG3Q,EAAE,MAAMpB,EAAE,CAACoB,GAAG,OAAOpB,EAAEkS,IAAIlS,EAAEM,KAAK2R,GAAG,CAACzI,WAAWlJ,KAAKD,YAAY8R,WAAW1I,QAAQzJ,EAAE0J,OAAO,GAAG,EAAEjK,GAAEuS,cAAc,aAAavS,GAAE0S,WAAW,EAAE,MAAM/R,GAAEF,GAAET;;;;;GCA/gB,MAAMF,WAAUE,IAAGF,GAAEyS,cAAc,YAAYzS,GAAE4S,WAAW,EAAE,MAAM/R,GAAEJ,GAAET,aCF3D6S,GAAK1H,EAAiBe,EAAc+B,GAClD,MAAM6E,EAAQ,IAAIC,YAAY7G,EAC5B9J,OAAA4Q,OAAA,CAAAC,SAAS,EACTC,YAAY,EACZC,UAAU,EACVC,OAAQ,IACLnF,IAGL,OADA9C,EAAGkI,cAAcP,GACVA,CACT,CCkBgB,SAAAQ,GAAMC,EAAkBtF,GACtC,MAAMuF,iBACJC,sBAAsB,GACnBxF,GAEL,MAAO,CACLyF,EACAC,KAGA,MAAMpL,OAAEA,GAAWmL,EACnB,GAAIH,KAAYG,EAAO,CACrB,MAAME,EAAcL,EAEpBG,EAAMnL,OAAS,SAEbsL,GAEA,GAAIA,EAAahM,IAAI+L,GAAc,CACjC,MAAME,EAAWD,EAAaxS,IAAIuS,GAC5BG,EAAWhT,KAAK6S,GAElBE,IAAaC,IACVP,EAAgBC,uBAAwB1S,KAAK0C,YAC/C1C,KAAK4S,GACJG,EACAC,GAIP,CAEDxL,EAAOlC,KAAKtF,KAAM8S,EACpB,CACD,EAEL,CC1DA,MAAMG,GAAQ,CACZ,WAAY,sXAKZ,eAAgB,2SAKhB,eAAgB,wTAKhB,gBAAiB,0TAKjB,aAAc,gSAKdhK,EAAK,mWAKL,gBAAiB,yYAKjB,cAAe,uSAKf,oBAAqB,oRAKrB,mBAAoB,qRAKpB,qBAAsB,sZAMtB,oBAAqB,4ZAMrBiK,OAAU,iMAKV,iBAAkB,sSAKlBC,OAAU,wuBAKV,iBAAkB,4LAKlBC,MAAS,sRAKT,mBAAoB,wPAKpB,aAAc,ujBAKd,eAAgB,ukBAMhB,cAAe,0hCAMf,eAAgB,87BAMhB,cAAe,0vCAMfC,MAAS,o+BAMT,WAAY,sOAMZC,UAAa,2lCAMbC,QAAW,2+BAOX,aAAc,8bAMd,eAAgB,uQAMhB,oBAAqB,0lBAKrBC,QAAW,8mBAKXC,OAAU,8mBAMVC,YAAe,o1BAKfC,MAAS,kpBAKTC,SAAY,+4GAEZC,cAAiB,ymCAEjBC,SAAY,skBAKZC,SAAY,2eAMZC,QAAW,y0DAMXC,UAAa,8oEAKbC,aAAgB,0sCAOhBC,SAAY,0qBAMZ,qBAAsB,q8ICjNxB,IAAIC,GAA0B,CDsOK,CACjCjJ,KAAM,SAENkJ,SAAWlJ,GACLA,KAAQ8H,GACH,sBAAsBqB,mBAAmBrB,GAAM9H,MAEjD,IEnQkB,CAC3BA,KAAM,YACNkJ,SAAUlJ,GACR,4DAA4DA,SCHnC,CAC3BA,KAAM,WACNkJ,SAAUlJ,IACR,IAAIoJ,EAAS,UAGb,MAF6B,SAAzBpJ,EAAKqJ,UAAU,EAAG,KAAeD,EAAS,SACjB,SAAzBpJ,EAAKqJ,UAAU,EAAG,KAAeD,EAAS,SACvC,mDAAmDA,KAAUpJ,OAAU,EAEhFsJ,QAASC,GAAOA,EAAIvO,aAAa,OAAQ,iBCRd,CAC3BgF,KAAM,SACNkJ,SAAUlJ,GACR,4DAA4DA,SCHnC,CAC3BA,KAAM,YACNkJ,SAAUlJ,GACR,wDAAwDA,QAC1DsJ,QAASC,IACPA,EAAIvO,aAAa,QAAS,QAC1BuO,EAAIvO,aAAa,SAAU,OAAO,GCNT,CAC3BgF,KAAM,UACNkJ,SAAUlJ,GACR,+DAA+DA,SCHtC,CAC3BA,KAAM,WACNkJ,SAAUlJ,GACR,iEAAiEA,QACnEsJ,QAASC,IACPA,EAAIvO,aAAa,OAAQ,gBACzBuO,EAAIvO,aAAa,SAAU,gBAC3B,IAAIuO,EAAIC,iBAAiB,uBAAuB5O,KAAIqE,GAClDA,EAAGjE,aAAa,OAAQ,UAE1B,IAAIuO,EAAIC,iBAAiB,0BAA0B5O,KAAIqE,GACrDA,EAAGjE,aAAa,eAAgB,SACjC,GCZwB,CAC3BgF,KAAM,MACNkJ,SAAUlJ,GACR,oDAAoDA,QACtDsJ,QAASC,GAAOA,EAAIvO,aAAa,OAAQ,iBCJd,CAC3BgF,KAAM,KACNkJ,SAAUlJ,IACR,MAAMyJ,EAAWzJ,EAAK0J,QAAQ,YAAa,IAC3C,IAAIN,EAAS,UAGb,MAF6B,SAAzBpJ,EAAKqJ,UAAU,EAAG,KAAeD,EAAS,SACjB,SAAzBpJ,EAAKqJ,UAAU,EAAG,KAAeD,EAAS,UACvC,0EAA0EA,KAAUK,OAAc,EAE3GH,QAASC,GAAOA,EAAIvO,aAAa,OAAQ,iBCTd,CAC3BgF,KAAM,WACNkJ,SAAUlJ,IACR,MAAM2J,EAAQ3J,EAAK2J,MAAM,4BAGzB,MAAO,8DAA8DA,EAAM,MAAMA,EAAM,IAAM,eAAe,EAE9GL,QAASC,GAAOA,EAAIvO,aAAa,OAAQ,iBCNd,CAC3BgF,KAAM,QACNkJ,SAAUlJ,IACR,MAAM2J,EAAQ3J,EAAK2J,MAAM,mBAMzB,OAHAA,EAAM,GAAKA,EAAM,GAAGC,OAAO,GAAGC,cAAgBF,EAAM,GAAGvM,MAAM,GAGtD,sDAAsDuM,EAAM,MAAMA,EAAM,QAAQ,EAEzFL,QAASC,GAAOA,EAAIvO,aAAa,OAAQ,iBCbd,CAC3BgF,KAAM,UACNkJ,SAAUlJ,IACR,MAAM2J,EAAQ3J,EAAK2J,MAAM,gBAGzB,MAAO,6DAA0E,OAAbA,EAAM,GAAc,QAAU,UAAUA,EAAM,QAAQ,EAE5HL,QAASC,GAAOA,EAAIvO,aAAa,OAAQ,iBCRd,CAC3BgF,KAAM,SACNkJ,SAAUlJ,GAAQ,4BAA4BA,UZmC5C8J,GAA8B,GAU5B,SAAUC,GAAe/J,GAC7B,OAAOiJ,GAASe,MAAKC,GAAOA,EAAIjK,OAASA,GAC3C,Ca7CA,MAAMkK,GAAe,IAAI7S,ICczB,MAAM8S,GAAY,IAAI9S,IAEfyE,eAAesO,GAAYC,GAChC,GAAIF,GAAUxO,IAAI0O,GAChB,OAAOF,GAAUhV,IAAIkV,GAEvB,MAAMC,iBDjBNC,EACA1N,EAA2C,QAE3C,GAAIqN,GAAavO,IAAI4O,GACnB,OAAOL,GAAa/U,IAAIoV,GAE1B,MAAMC,EAAkBC,MAAMF,EAAK,CAAE1N,KAAMA,IAAQ6N,MAAK5O,MAAM6O,IACrD,CACLC,GAAID,EAASC,GACbC,OAAQF,EAASE,OACjBtF,WAAYoF,EAASG,WAIzB,OADAZ,GAAa7U,IAAIkV,EAAKC,GACfA,CACT,CCEyBO,CAAeV,GAChCW,EAAgC,CACpCJ,GAAIN,EAASM,GACbC,OAAQP,EAASO,OACjBtB,IAAK,MAEP,GAAIe,EAASM,GAAI,CACf,MAAMK,EAAMpQ,SAASC,cAAc,OACnCmQ,EAAIzK,UAAY8J,EAAS/E,KACzB,MAAMgE,EAAM0B,EAAIC,kBAChBF,EAAazB,IACoB,SAA/BA,aAAG,EAAHA,EAAKjJ,QAAQ9G,eAA0B+P,EAAI4B,UAAY,EAC1D,CAGD,OADAhB,GAAU9U,IAAIgV,EAAKW,GACZA,CACT,CCvCA,IAAeI,GA2BN,CACLC,UAAW,CACTC,WAAW,EACXC,UAAU,EACVC,aAAa,EACbC,WAAW,EACXC,SAAS,EACTC,UAAU,EACVC,KAAK,EACLC,QAAQ,EACRC,UAAU,EACVC,OAAO,EACPC,SAAS,GAEXC,SAAU,CAAEC,QAAS,YAAaC,KAAM,OAAQC,KAAM,kBC/B1D,MAAMC,GAAS,IAAIC,UAkBJ,IAAMC,GAAN,cAA0BxH,GAA1BnQ,kCAGIC,KAAG0U,IAAG,GAiBvB1U,KAAK2X,OAAqB,EAI1B3X,KAAOqX,QAAGd,GAAca,SAASC,QAQjCrX,KAAIsX,KAAqBf,GAAca,SAASE,IAsGjD,CApGChR,oBhBxBI,IAAoBiR,EgByBtBjV,MAAMgE,oBhBzBgBiR,EgB0BZvX,KhBzBZiV,GAAalS,KAAKwU,EgB0BjB,CAED3P,eACE5H,KAAK4X,UACL5X,KAAK6X,UACN,CAEDhQ,UACE7H,KAAK4X,SACN,CAEDrR,uBhBlCI,IAAsBgR,EgBmCxBjV,MAAMiE,uBhBnCkBgR,EgBoCZvX,KhBnCdiV,GAAeA,GAAa/D,QAAO9G,GAAMA,IAAOmN,GgBoC/C,CAEOM,iBACN,GACE7X,KAAKsX,MACgB,iBAAdtX,KAAKsX,MACZtX,KAAKsX,OAASf,GAAca,SAASE,KACrC,CACA,MAAMC,EACW,QAAfO,EAAA9X,KAAK2F,kBAAU,IAAAmS,OAAA,EAAAA,EAAEC,cAAc,SACjCR,SAAAA,EAAMS,MAAMC,YAAY,QAASjY,KAAKsX,MACtCC,SAAAA,EAAMS,MAAMC,YAAY,SAAUjY,KAAKsX,KACxC,CACF,CAEOY,SACN,MAAMb,EAAUnC,GAAelV,KAAKqX,SACpC,OAAIrX,KAAKmL,MAAQkM,EACRA,EAAQhD,SAASrU,KAAKmL,MAExBnL,KAAK0V,GACb,CAGDyC,SACEnY,KAAK4X,SACN,CAKK3Q,sBACJ,MAAMoQ,EAAUnC,GAAelV,KAAKqX,SAC9B7B,EAAMxV,KAAKkY,SACjB,GAAI1C,EACF,IACE,MAAM4C,QAAa7C,GAAYC,GAC/B,GAAIA,IAAQxV,KAAKkY,SAEf,OACK,GAAIE,EAAKrC,GAAI,CAClB,MACMsC,EADMb,GAAOc,gBAAgBF,EAAK1D,IAAK,aAC3B6D,KAAKR,cAAc,OAEvB,OAAVM,GACc,QAAhBP,EAAAT,aAAA,EAAAA,EAAS5C,eAAO,IAAAqD,GAAAA,EAAAxS,KAAA+R,EAAGgB,GAEnBrY,KAAK0U,IAAM2D,EAAM/B,UACjBxE,GAAK9R,KAAM,kBAEXA,KAAK0U,IAAM,GACX5C,GAAK9R,KAAM,gBAAiB,CAAEqS,OAAQ,CAAE2D,OAAQoC,EAAKpC,UAExD,MACChW,KAAK0U,IAAM,GACX5C,GAAK9R,KAAM,gBAAiB,CAAEqS,OAAQ,CAAE2D,OAAQoC,EAAKpC,SAExD,CAAC,MAAMwC,GACN1G,GAAK9R,KAAM,gBAAiB,CAAEqS,OAAQ,CAAE2D,QAAS,IAClD,MACQhW,KAAK0U,IAAIrU,OAAS,IAE3BL,KAAK0U,IAAM,GAEd,CAED5F,SACE,MAAM2J,EAAiC,iBAAfzY,KAAK2X,OAAsB3X,KAAK2X,MAAMtX,OAAS,EAEjEqY,EAAiB,CACrBnB,MAAM,EACN,CAAC,iBAAiBvX,KAAKqX,WAAYrX,KAAKqX,SAG1C,OAAO3G,CAAI;;eAEAiI,GAASD;aACXE,GAAUH,EAAW,WAAQI;mBACvBD,GAAUH,EAAWzY,KAAK2X,WAAQkB;;QAE7CC,GAAU9Y,KAAK0U;WAEpB,GApIMgD,GAAArT,OAAyB,CAACwM,IAExBV,EAAA,CAAR9M,MAAyBqU,GAAAlY,UAAA,WAAA,GAI1B2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQE,SAAS,EAAMJ,UAAW,UACtC4V,GAAAlY,UAAA,YAAA,GAQd2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,SACxB4V,GAAAlY,UAAA,WAAA,GAKb2Q,EAAA,CADCW,GAAS,CAAEhP,UAAW,WACS4V,GAAAlY,UAAA,aAAA,GAIhC2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,aACI4V,GAAAlY,UAAA,eAAA,GAQzC2Q,EAAA,CADCW,GAAS,CAAEhP,UAAW,UAC8B4V,GAAAlY,UAAA,YAAA,GAkD/C2Q,EAAA,CAHLoC,GAAM,QACNA,GAAM,OACNA,GAAM,YAkCNmF,GAAAlY,UAAA,UAAA,MAnHkBkY,GAAWvH,EAAA,CAD/BC,GAAc,iBACMsH,WAAAA,GCzBd,IAAMqB,GAAN,cAAwBrB,KACtBqB,GAAA1U,OAAyB,CAAC2U,IADtBD,GAAS5I,EAAA,CADrBC,GAAc,eACF2I,ICJb,IAAezI,GAAAA,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;ICGV,MAACnR,GAAEQ,OAAO4J,IAAI,IAAI1H,GAAE5C,IAAI,IAAI,MAAMA,OAAE,EAAOA,EAAE6B,KAAK3B,GAAE,OAAO,MAAMF,OAAE,EAAOA,EAAEga,cAAgWvZ,GAAE,IAAI8C,IAAkS5C,GAA5RX,IAAG,CAAC6B,KAAK3B,KAAK,MAAMW,EAAEX,EAAEkB,OAAO,IAAIK,EAAEkB,EAAE,MAAMhC,EAAE,GAAGgD,EAAE,GAAG,IAAIhC,EAAEmI,EAAE,EAAEN,GAAE,EAAG,KAAKM,EAAEjJ,GAAG,CAAC,IAAIc,EAAEE,EAAEiI,GAAGA,EAAEjJ,QAAG,KAAU8B,EAAEzC,EAAE4J,GAAGrI,EAAEmB,GAAED,KAAKhB,GAAGF,EAAEI,IAAIiI,GAAGN,GAAE,EAAG7F,EAAEG,KAAKnB,GAAGhC,EAAEmD,KAAKnC,GAAGmI,GAAG,CAAC,GAAGA,IAAIjJ,GAAGF,EAAEmD,KAAKjC,EAAEhB,IAAI2I,EAAE,CAAC,MAAMxJ,EAAEW,EAAEuR,KAAK,gBAAW,KAAUrQ,EAAEpB,GAAEY,IAAIrB,MAAMW,EAAEgS,IAAIhS,EAAEF,GAAEc,IAAIvB,EAAE6B,EAAElB,IAAIT,EAAEyD,CAAC,CAAC,OAAO3D,EAAE6B,KAAK3B,EAAC,EAAKyC,CAAE3C,SCantBia,GAOXnZ,YAAYyO,GAFZxO,KAAAmZ,kBAAoB,IAAIC,iBAAiBpZ,KAAKqZ,gBAAgBC,KAAKtZ,OAIjEA,KAAKwO,KAAOA,EAEZA,EAAKvJ,cAAcjF,KACpB,CAEDqF,gBAAwB,CAKxBgU,kBAEErZ,KAAKmZ,kBAAkBI,aACvBvZ,KAAKwO,KAAK9K,eACX,CAOD8V,gBAAgBC,EAA0B,MAExC,IAAIC,EAAe,GAYnB,OATEA,EAJ+B,KAAbD,GAAgC,OAAbA,EAItBnY,MAAMqY,KAAK3Z,KAAKwO,KAAK9D,YAAYwG,QAC9C0I,GAAQ5Z,KAAK6Z,kBAAkBD,IAAS5Z,KAAK8Z,qBAAqBF,KAGrDtY,MAAMqY,KACnB3Z,KAAKwO,KAAKmG,iBAAiB,SAAS8E,OAIjCC,CACR,CASDK,MAAMN,EAA0B,MAC9B,OAAOzZ,KAAKwZ,gBAAgBC,GAAUpZ,MACvC,CAOD2Z,MAAMP,EAA0B,MAC9B,OAAOrY,QAAQpB,KAAKwZ,gBAAgBC,GAAUpZ,OAC/C,CAODwZ,kBAAkBD,GAChB,OAAOA,EAAKhP,WAAagP,EAAKK,WAA0C,KAA7BL,EAAKxT,YAAa8T,MAC9D,CAODJ,qBAAqBF,GACnB,OACEA,EAAKhP,WAAagP,EAAKO,cACwB,OAA9CP,EAAqB5O,aAAa,OAEtC,CAQDoP,eAAeX,EAAkBY,SAE/B,MAAMC,EAAaD,EAAaE,WAAU,GAGpCC,EACJ,gCACc,KAAbf,EAAkB,eAAiB,eAAeA,MACnD,uBAWF,GAPqBnY,MAAMqY,KAAK3Z,KAAKwO,KAAK9D,YAAY+P,MACpDb,GAAQA,EAAKc,YAAcF,KAG3BH,EAAaM,OAAO3U,SAASwC,cAAcgS,IAG5B,KAAbf,EAIF,OAHAa,EAAWnU,aAAa,mBAAoB,cAC5CmU,EAAWnU,aAAa,mBAAoBsT,GAC5Ca,EAAW1T,gBAAgB,QACpB0T,EAGT,GAAIta,KAAK8Z,qBAAqBO,GAI5B,OAHAC,EAAWnU,aAAa,mBAAoB,yBAC5CmU,EAAWnU,aAAa,mBAAoB,WAC5CmU,EAAW1T,gBAAgB,QACpB0T,EACF,CAEL,MAAMM,EAAc5U,SAASC,cAAc,eAK3C,OAJuB,QAAvB6R,EAAAwC,EAAW/N,kBAAY,IAAAuL,GAAAA,EAAAtK,aAAaoN,EAAaN,GACjDM,EAAYvU,YAAYiU,GACxBM,EAAYzU,aAAa,mBAAoB,sBAC7CyU,EAAYzU,aAAa,mBAAoB,WACtCyU,CACR,CACF,CA4BDC,yBACEC,EACAR,GAGAQ,EAAiB5X,SAAQ6X,IACvBT,EAAWhM,iBAAiByM,GAAWhJ,IACrC,GAAIA,EAAM0B,OAAQ,CAChB,MAAMuH,EAAyBhb,KAAKib,0BAA0BlJ,GACxDmJ,EAAwBlb,KAAKmb,yBACjCH,GAIEE,GACFA,EAAsB5I,cAAc,IAAI8I,MAAML,IAMhDM,YAAW,KACT,MAAMC,EAAqBtb,KAAKmb,yBAC9BH,GACA,GAEEM,GACFA,EAAmBC,OACpB,GACA,EACJ,IACD,GAEL,CAUDC,eACE/B,EAAW,GACXgC,EAAgC,KAChCX,EAAmB,GACnBV,GAAiB,GAGjB,MAAMsB,EAAQ1b,KAAKwZ,gBAAgBC,GAEnC,GAAIiC,EAAO,CACT,MAAMC,EAAiBD,EAAM3V,KAAI6V,IAC/B,MAAMvB,EAAeuB,EACrB,IAAItB,EAYJ,GAREA,EAFEF,EAEWpa,KAAKoa,eAAeX,EAAUY,GAG9BA,EAAaE,WAAU,GAGtCva,KAAK6a,yBAAyBC,EAAkBR,GAE5CmB,EAAgB,CAClB,MAAMI,EAAoB7V,SAASC,cAAcwV,GAEjD,OADAI,EAAkBxV,YAAYiU,GACvBuB,CACR,CAED,OAAOvB,CAAU,IAcnB,OATAe,YAAW,KACTrb,KAAKmZ,kBAAkB2C,QAAQ9b,KAAKwO,KAAM,CACxCuN,SAAS,EACTC,WAAW,EACXC,YAAY,EACZC,eAAe,GACf,GACD,GAEIP,CACR,CACD,OAAO,IACR,CAODV,0BAA0BlJ,GAExB,MAAMoK,EAAOpK,EAAMqK,eAGbC,EAAY,GAGlB,IAAIC,GAAc,EAElB,IAAK,IAAI5b,EAAI,GAAI4b,GAAe5b,EAAIyb,EAAK9b,OAAQK,IAAK,CACpD,MAAM0J,EAAK+R,EAAKzb,GAEhB,GAAoB,uBAAhB0J,EAAGmS,SACLD,GAAc,MACT,CAEL,MAAME,EAAWxc,KAAKyc,4BAA4BrS,GAE9CoS,GACFH,EAAUtZ,KAAKyZ,EAElB,CACF,CAID,OADyBH,EAAU5X,SAEpC,CAODgY,4BAA4BC,GAE1B,IAAKA,EAAeC,cAClB,OAAO,KAIT,MAAMC,EAA2Btb,MAAMqY,KAAK+C,EAAenL,WAAWJ,KACpE,KAEI0L,EAAkB,GAAGH,EAAeI,YACX,KAA7BF,EAAkC,IAAMA,EAA2B,KAgBrE,MAJiB,CACfzR,KAAM0R,EACN3R,MAVe5J,MAAMqY,KACrB+C,EAAeC,cAAchI,iBAAiBkI,IAIlBpX,QAAQiX,GAQvC,CAQDvB,yBACEH,EAIA+B,GAAW,GAGX,IAAIC,EAAKD,EACJ/c,KAAKwO,KAAK7I,WACV3F,KAAKwO,KAEV,IAAKwO,EACH,OAAO,KAIT,IAAK,IAAItc,EAAI,EAAGA,EAAIsa,EAAuB3a,OAAQK,IAEjDsc,EAAKA,EAAGrI,iBAAiBqG,EAAuBta,GAAGyK,MACjD6P,EAAuBta,GAAGwK,OAI9B,OAAO8R,CACR,CAEDC,qBAAqBC,GACnB,MDnXgGje,KAAI,CAACga,aAAaha,EAAE6B,EAAE3B,KCmX/Gge,CACLD,EACGnX,KAAIjE,GAAa,GAAGA,EAAUqJ,QAAQrJ,EAAUsb,UAChDjM,KAAK,KAEX,CAUDkM,kBACE5D,EACA+B,GAAiB,EACjB8B,EAA8B,KAC9BJ,EAAqD,IAErD,MAAMK,EAA2B,KAAb9D,GAAgC,OAAbA,EACjCf,EAAiB,CACrB,eAAgB6E,EAChB,CAAC,GAAG9D,MAAc8D,EAClB,CAAC,GAAGD,KAAiBA,SAAAA,GAGvB,OAAItd,KAAKga,MAAMP,GACN/I,EAAI;iBACAkI,GAAUD,GAASD;UAC1B1Y,KAAKid,qBAAqBC;;UAE1B1B,EACE9K,EAAI,GAAG1Q,KAAKwb,eAAe/B,KAC3B/I,EAAI,cAAc+I;cAGjB,IAEV,ECvYI,IAAM+D,GAAN,cAA2BtN,GAA3BnQ,kCAELC,KAAAyd,OAAS,IAAIvE,GAAiBlZ,MAS9BA,KAAY0d,cAAG,EAGf1d,KAAa2d,eAAG,CAcjB,CAZC7O,SACE,MAAM8O,EAAU,CACd,CAAC,GAAG5d,KAAK6d,eAAgB7d,KAAK6d,UAC9B,CAAC,GAAG7d,KAAK8d,eAAgB9d,KAAK8d,UAC9B,kBAAmB9d,KAAK0d,aACxB,mBAAoB1d,KAAK2d,eAG3B,OAAOjN,EAAI;oBACKiI,GAASiF,OAAa5d,KAAKyd,OAAOjC;KAEnD,GA1BMgC,GAAAnZ,OAAyB,CAACwM,IAIjCV,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQE,SAAS,EAAMJ,UAAW,gBACrB0b,GAAAhe,UAAA,iBAAA,GAG/B2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQE,SAAS,EAAMJ,UAAW,gBAClC0b,GAAAhe,UAAA,iBAAA,GAGlB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMX,QAASc,SAAS,EAAMJ,UAAW,mBAChC0b,GAAAhe,UAAA,oBAAA,GAGrB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMX,QAASc,SAAS,EAAMJ,UAAW,oBAC/B0b,GAAAhe,UAAA,qBAAA,GAdXge,GAAYrN,EAAA,CADxBC,GAAc,kBACFoN,kLCxBTO,GAAU/d,IAAQA,GAAK+d,GAAW,SAAUre,EAAGP,GAC/C,IAAIF,EAAI,CAAA,EACR,IAAK,IAAI2J,KAAKlJ,EAAO2B,OAAO7B,UAAU+D,eAAe+B,KAAK5F,EAAGkJ,IAAMzJ,EAAEsG,QAAQmD,GAAK,IAC9E3J,EAAE2J,GAAKlJ,EAAEkJ,IACb,GAAS,MAALlJ,GAAqD,mBAAjC2B,OAAO4C,sBACtB,KAAIvD,EAAI,EAAb,IAAgBkI,EAAIvH,OAAO4C,sBAAsBvE,GAAIgB,EAAIkI,EAAEvI,OAAQK,IAC3DvB,EAAEsG,QAAQmD,EAAElI,IAAM,GAAKW,OAAO7B,UAAUwe,qBAAqB1Y,KAAK5F,EAAGkJ,EAAElI,MACvEzB,EAAE2J,EAAElI,IAAMhB,EAAEkJ,EAAElI,IAF4B,CAItD,OAAOzB,CACX,EACAoC,OAAOoC,eAAewa,GAAS,IAAc,CAAEb,OAAO,IACvCa,GAAAC,aAAG,EAMlB,MAAMA,GACFne,YAAYoe,GACRne,KAAKyP,SAAW0O,EAChBne,KAAKsX,KAAO6G,EAAM9d,MACrB,CAID+d,UAAUC,GACN,OAAOre,KAAKyP,SAASgL,MAAM6D,GAASA,EAAKC,MAAQF,GACpD,CAIDG,OAAOH,GACH,OAAOre,KAAKyP,SAAS0F,MAAMmJ,GAASA,EAAKC,MAAQF,GACpD,CAIDI,QAAQJ,GACJ,OAAO,IAAIH,GAAQle,KAAKyP,SAASyB,QAAQoN,GAASA,EAAKC,MAAQF,IAClE,CAIDK,UAAUC,GACN,OAAO,IAAIT,GAAQle,KAAKyP,SAASyB,QAAQoN,GAASA,EAAKK,SAAWA,IACrE,CAIDC,mBAAmBzT,GACf,OAAO,IAAI+S,GAAQle,KAAKyP,SAASyB,QAAQoN,GAASjd,OAAO7B,UAAU+D,eAAe+B,KAAKgZ,EAAKrC,WAAY9Q,KAC3G,CAID0T,wBAAwB1T,EAAMiS,GAC1B,OAAO,IAAIc,GAAQle,KAAK4e,mBAAmBzT,GAAMsE,SAASyB,QAAQoN,IAC9Chd,MAAMgD,QAAQga,EAAKrC,WAAW9Q,IAASmT,EAAKrC,WAAW9Q,GAAQ,CAACmT,EAAKrC,WAAW9Q,KAClFsP,MAAM5Q,GAoDhC,SAA0BjI,EAAGkd,GACzB,UAAWld,UAAakd,EACpB,OAAO,EAEX,GAAiB,iBAANld,GAA+B,iBAANkd,EAChC,OAAOld,IAAMkd,EAEjB,OAAOld,EAAEwb,OAAUxb,EAAEwb,OACdxb,EAAEmd,UAAand,EAAEmd,QAC5B,CA7DsCC,CAAiBnV,EAAGuT,OAErD,CAID,CAACzd,OAAO4N,YACJ,MAAM0R,EAAQjf,KAAKyP,SACnB,IAAIyP,EAAU,EACd,MAAO,CACHC,KAAI,IACID,EAAUD,EAAM5e,OACT,CAAE+c,MAAO6B,EAAMC,KAAYE,MAAM,GAGjC,CAAEhC,WAAOvE,EAAWuG,MAAM,GAIhD,CAIDC,YACI,MAAMC,EAAW,CAAA,EAWjB,OAVAtf,KAAKyP,SAASvM,SAAS4U,IACnB,IAAI6G,OAAEA,EAAMJ,IAAEA,GAAQzG,EAAIrE,EAASsK,GAAOjG,EAAI,CAAC,SAAU,QACpDzW,OAAOkC,eAAe+B,KAAKga,EAAUX,KACtCW,EAASX,GAAU,IAClBtd,OAAOkC,eAAe+B,KAAKga,EAASX,GAASJ,KAC9Ce,EAASX,GAAQJ,GAAO,IAC5B,MAAMgB,KAAEA,EAAItD,WAAEA,GAAexI,EACvB+L,EAAene,OAAO4Q,OAAO,CAAEsN,QAAQtD,GAC7CqD,EAASX,GAAQJ,GAAKxb,KAAKyc,EAAa,IAErC,CACHvB,QAAS5c,OAAOoe,QAAQH,GAAU3e,QAAO,CAAC+e,GAAQf,EAAQgB,KAC/C,IAAID,EAAOre,OAAO4Q,OAAO,CAAE0M,UAAUgB,KAC7C,IAEV,EAEU1B,GAAAC,QAAGA,aCrGdH,GAAU/d,IAAQA,GAAK+d,GAAW,SAAUre,EAAGP,GAC/C,IAAIF,EAAI,CAAA,EACR,IAAK,IAAI2J,KAAKlJ,EAAO2B,OAAO7B,UAAU+D,eAAe+B,KAAK5F,EAAGkJ,IAAMzJ,EAAEsG,QAAQmD,GAAK,IAC9E3J,EAAE2J,GAAKlJ,EAAEkJ,IACb,GAAS,MAALlJ,GAAqD,mBAAjC2B,OAAO4C,sBACtB,KAAIvD,EAAI,EAAb,IAAgBkI,EAAIvH,OAAO4C,sBAAsBvE,GAAIgB,EAAIkI,EAAEvI,OAAQK,IAC3DvB,EAAEsG,QAAQmD,EAAElI,IAAM,GAAKW,OAAO7B,UAAUwe,qBAAqB1Y,KAAK5F,EAAGkJ,EAAElI,MACvEzB,EAAE2J,EAAElI,IAAMhB,EAAEkJ,EAAElI,IAF4B,CAItD,OAAOzB,CACX,EACAoC,OAAOoC,eAAe6a,GAAS,IAAc,CAAElB,OAAO,IAC1CkB,GAAAsB,UAAG,EAoBftB,GAAAsB,KAdA,MAMI7f,YAAY8f,GACR,MAAMlB,OAAEA,EAAMJ,IAAEA,EAAGgB,KAAEA,GAASM,EAAY5D,EAAa8B,GAAO8B,EAAY,CAAC,SAAU,MAAO,SAC5F7f,KAAK2e,OAASA,EACd3e,KAAKue,IAAMA,EACXve,KAAKuf,KAAOA,EACZvf,KAAKic,WAAaA,CACrB,GC9BL,IAAI8B,GAAU/d,IAAQA,GAAK+d,GAAW,SAAUre,EAAGP,GAC/C,IAAIF,EAAI,CAAA,EACR,IAAK,IAAI2J,KAAKlJ,EAAO2B,OAAO7B,UAAU+D,eAAe+B,KAAK5F,EAAGkJ,IAAMzJ,EAAEsG,QAAQmD,GAAK,IAC9E3J,EAAE2J,GAAKlJ,EAAEkJ,IACb,GAAS,MAALlJ,GAAqD,mBAAjC2B,OAAO4C,sBACtB,KAAIvD,EAAI,EAAb,IAAgBkI,EAAIvH,OAAO4C,sBAAsBvE,GAAIgB,EAAIkI,EAAEvI,OAAQK,IAC3DvB,EAAEsG,QAAQmD,EAAElI,IAAM,GAAKW,OAAO7B,UAAUwe,qBAAqB1Y,KAAK5F,EAAGkJ,EAAElI,MACvEzB,EAAE2J,EAAElI,IAAMhB,EAAEkJ,EAAElI,IAF4B,CAItD,OAAOzB,CACX,EACAoC,OAAOoC,eAAeqc,GAAS,IAAc,CAAE1C,OAAO,IACtD0C,GAAAC,YAAsBD,GAAAne,WAAgB,EACtC,MAAMqe,GAAYC,GACZC,GAASC,GAMf,SAASJ,GAAYK,GACjB,MAAMjC,EAAQ,GASd,OARAiC,EAAWnC,QAAQ/a,SAASmd,IACxB,MAAM1B,OAAEA,GAAW0B,EAAeV,EAAO5B,GAAOsC,EAAe,CAAC,WAChEhf,OAAO4P,KAAK0O,GAAMzc,SAASqb,IACvB8B,EAAc9B,GAAKrb,SAASsc,IACxBrB,EAAMpb,KAAK,IAAImd,GAAON,KAAKve,OAAO4Q,OAAO,CAAE0M,SAAQJ,OAAOiB,IAAe,GAC3E,GACJ,IAEC,IAAIQ,GAAU9B,QAAQC,EACjC,CACmB2B,GAAAC,YAAGA,GAQtBD,GAAAne,MAHA,SAAe2e,GACX,OAAOP,GAAYxe,KAAKI,MAAM2e,GAClC,YCvCAjf,OAAOoC,eAAe8c,GAAS,IAAc,CAAEnD,OAAO,IACtDmD,GAAAC,UAA4CD,GAAAE,qCAAyB,EACrE,MAAMC,GACF3gB,YAAYue,EAAMqC,EAAW,IACzB3gB,KAAKse,KAAOA,EACZte,KAAK2gB,SAAWH,GAAU,IAAIG,GACjC,CACGC,YACA,OAAO5gB,KAAKse,KAAKrC,WAAW2E,KAC/B,EAGL,SAASH,GAAiB7e,EAAGkd,GACzB,OAAiB,IAAbld,EAAEvB,QAA6B,IAAbye,EAAEze,OACb,EACM,IAAbuB,EAAEvB,QAAgBye,EAAEze,OAAS,GACrB,EACRuB,EAAEvB,OAAS,GAAkB,IAAbye,EAAEze,OACX,EAEM,IAAbuB,EAAEvB,QAA6B,IAAbye,EAAEze,OACbwgB,SAASjf,EAAE,IAAMif,SAAS/B,EAAE,IAEnCld,EAAE,KAAOkd,EAAE,GACJ2B,GAAiB7e,EAAE2G,MAAM,GAAIuW,EAAEvW,MAAM,IAEzCsY,SAASjf,EAAE,IAAMif,SAAS/B,EAAE,GACvC,CAEA,SAAS0B,GAAUrC,GAEf,GAAIA,EAAM9d,OAAS,EACf,OAAO8d,EAAM9d,OAAS,CAAC,IAAIqgB,GAAYvC,EAAM2C,UAAY,GAI7D3C,EAAM4C,MAAK,CAACnf,EAAGkd,IAAM2B,GAAiB7e,EAAEqa,WAAsB,UAAG6C,EAAE7C,WAAsB,aACzF,MAAMxM,EAAW,GACjB,IAAIuR,EACAL,EAAW,GACf,EAAG,CACC,MAAMM,EAAO9C,EAAM2C,QACfE,EACIC,EAAKhF,WAAsB,UAAE5b,OAAS2gB,EAAK/E,WAAsB,UAAE5b,OACnEsgB,EAAS5d,KAAKke,IAGdxR,EAAS1M,KAAK,IAAI2d,GAAYM,EAAML,IACpCK,EAAOC,EACPN,EAAW,IAIfK,EAAOC,CAEnB,OAAa9C,EAAM9d,QAEf,OADAoP,EAAS1M,KAAK,IAAI2d,GAAYM,EAAML,IAC7BlR,CACX,CA/CmB8Q,GAAAG,YAAGA,GAiBEH,GAAAE,iBAAGA,GA+B3BF,GAAAC,UAAoBA,GC3DpBnf,OAAOoC,eAAeyd,GAAS,IAAc,CAAE9D,OAAO,IAC1C8D,GAAAC,UAAG,EACf,MAAMC,GAAgBnB,GAChBoB,GAAiBlB,GACvB,MAAMgB,GACFphB,YAAYuhB,EAAarD,GACrBje,KAAKuhB,GAAKD,EACVthB,KAAKie,QAAUA,EACfje,KAAKyP,SAAWzP,KAAKie,QAAQxO,SAC7BzP,KAAKsX,KAAOtX,KAAKie,QAAQ3G,KACzBtX,KAAKwhB,MAAO,EAAIH,GAAeb,WAAW,IAAIxgB,KAAKyP,UACtD,CACD,CAAC9P,OAAO4N,YACJ,MAAM0R,EAAQjf,KAAKyP,SACnB,IAAIyP,EAAU,EACd,MAAO,CACHC,KAAI,IACID,EAAUD,EAAM5e,OACT,CAAE+c,MAAO6B,EAAMC,KAAYE,MAAM,GAGjC,CAAEhC,WAAOvE,EAAWuG,MAAM,GAIhD,CAIDhB,UAAUC,GACN,OAAOre,KAAKie,QAAQG,UAAUC,EACjC,CAIDG,OAAOH,GACH,OAAOre,KAAKie,QAAQO,OAAOH,EAC9B,CAIDI,QAAQJ,GACJ,OAAO,IAAI8C,GAAKnhB,KAAKuhB,GAAIvhB,KAAKie,QAAQQ,QAAQJ,GACjD,CAIDK,UAAUC,GACN,OAAO,IAAIwC,GAAKnhB,KAAKuhB,GAAIvhB,KAAKie,QAAQQ,QAAQE,GACjD,CAIDC,mBAAmBzT,GACf,OAAO,IAAIgW,GAAKnhB,KAAKuhB,GAAIvhB,KAAKie,QAAQW,mBAAmBzT,GAC5D,CAID0T,wBAAwB1T,EAAMiS,GAC1B,OAAO,IAAI+D,GAAKnhB,KAAKuhB,GAAIvhB,KAAKie,QAAQY,wBAAwB1T,EAAMiS,GACvE,CASDva,YAAYud,EAAYqB,GACpB,MAAMxD,GAAU,EAAImD,GAAcrB,aAAaK,GACzCsB,EAAe,GAChBD,EAQDC,EAAa3e,KAAK0e,GAPlBxD,EAAQW,mBAAmB,gBAAgBnP,SAASvM,SAASob,IACpDoD,EAAaC,SAASrD,EAAKrC,WAAW,gBAAgB,KACvDyF,EAAa3e,KAAKub,EAAKrC,WAAW,gBAAgB,GACrD,IAMT,MAAM2F,EAAQF,EAAa3b,KAAKub,GACrB,IAAIH,GAAKG,EAAarD,EAAQY,wBAAwB,eAAgByC,MAEjF,OAAOG,EAASG,EAAMd,QAAUc,CACnC,EAELV,GAAAC,KAAeA,GCzFf9f,OAAOoC,eAAeqc,GAAS,IAAc,CAAE1C,OAAO,IACtD,IAAAyE,GAAA/B,GAAAC,YAAsBD,GAAAne,WAAgB,EACtC,MAAMmgB,GAAS7B,GAMf,SAASF,GAAYK,EAAYqB,GAC7B,OAAOK,GAAOX,KAAKxH,KAAKyG,EAAYqB,EACxC,QACAI,GAAmB/B,GAAAC,YAAGA,GAQtBD,GAAAne,MAHA,SAAe2e,EAAMmB,GACjB,OAAO1B,GAAYxe,KAAKI,MAAM2e,GAAOmB,EACzC,ECYO,IAAMM,GAASC,GAAf,cAAwB9R,GAAxBnQ,kCAILC,KAAWiiB,YAAG,OACdjiB,KAASkiB,WAAG,EACZliB,KAAcmiB,eAAG,aAoBjBniB,KAAaoiB,eAAG,EAUhBpiB,KAAgBqiB,kBAAG,EAUnBriB,KAAMsiB,OAAG,OAoBTtiB,KAAQuiB,SAAG,GAUXviB,KAAQwiB,SAAG,OAUXxiB,KAAeyiB,gBAAG,KAUlBziB,KAAQ0iB,UAAG,EAUX1iB,KAAS2iB,UAAG,QAoBZ3iB,KAAa4iB,eAAG,EAUhB5iB,KAAgB6iB,sBAAGhK,EAUnB7Y,KAAY8iB,aAAG,KAUf9iB,KAAY+iB,aAAG,KAUf/iB,KAAUgjB,gBAAGnK,CAsgBd,CAvfCvS,oBACEhE,MAAMgE,oBAENtG,KAAKijB,8BACHjjB,KAAKijB,8BAA8B3J,KAAKtZ,MAEtCA,KAAKsiB,QACPtiB,KAAKkjB,WAER,CAEDC,wBACE,MAAMC,EAA+B,QAAftL,EAAA9X,KAAK2F,kBAAU,IAAAmS,OAAA,EAAAA,EAAEnD,iBAAiB,eACxDyO,SAAAA,EAAelgB,SAAQge,IACrB,MAAMmC,EAAWnC,EAAKvM,iBAAiB,KACtB0O,EAASA,EAAShjB,OAAS,GACnCiO,iBAAiB,OAAQtO,KAAKsjB,cAAc,GAExD,CAEDA,cAAcvR,SACZ,IAAIwR,GAAc,EACd7G,EAAiB3K,EAAM0B,OAE3B,MACG8P,IACA7G,EAAenL,UAAUiS,SAAS,kBACnC,CACA,MAAMC,EAAwC,QAA5B3L,EAAA4E,EAAeC,qBAAa,IAAA7E,OAAA,EAAAA,EAAE4L,QAAQ,MAClDC,EAAeF,aAAA,EAAAA,EAAWG,uBAI5BD,aAAwBE,mBAC1BF,EAAaxd,aAAa,gBAAiB,SAC3Cod,GAAc,GACLE,IACT/G,EAAiB+G,EAEpB,CACF,CAEDK,UAAU/R,GACR,MACMgS,EADiBhS,EAAM0B,OACCsE,cAAc,UAC5CgM,SAAAA,EAAQ5d,aAAa,gBAAiB,QACvC,CAEDtD,gBAAgB1D,GACd,MAAMsU,EAAStU,EAAEsU,OAEjB,GAAIA,EAAOlC,UAAUiS,SAAS,kBAE5B,YADA/P,EAAOlC,UAAU/G,OAAO,kBAKtBiJ,EAAOlC,UAAUiS,SAAS,kBAC5BxB,GAAUgC,mBAAmB7kB,GAG/B,MAAM8kB,EAAexQ,EAAOsE,cAAc,UAC1CkM,SAAAA,EAAc9d,aAAa,gBAAiB,OAC7C,CAEO+d,kBAAkB/kB,SAGF,QAAtB2Y,EAFe3Y,EAAEsU,OAEViQ,QAAQ,aAAO,IAAA5L,GAAAA,EAAAvG,UAAUD,IAAI,iBACrC,CAWD6S,YACEnkB,KAAK0D,gBAGD1D,KAAK4iB,eAEPvH,YAAW,WACTrb,KAAKokB,kBAAmC,QAAftM,EAAA9X,KAAK2F,kBAAU,IAAAmS,OAAA,EAAAA,EAAEC,cACxC,IAAI/X,KAAKsiB,eAEPtiB,KAAKokB,oBACPpkB,KAAKqkB,eAAiB,IAAIC,eACxBtkB,KAAKijB,+BAEPjjB,KAAKqkB,eAAevI,QAAQ9b,KAAKokB,oBAEnCpkB,KAAKmjB,iBAAiB,GACrB,EAEN,CAED5c,uBACMvG,KAAKokB,mBACPpkB,KAAKqkB,eAAeE,UAAUvkB,KAAKokB,kBAEtC,CAmBDI,YACE,IACGxkB,KAAK6iB,mBACL7iB,KAAKykB,aACLzkB,KAAK0kB,YAAYzG,QAAQ,GAE1B,OAEF,MAAM0G,EAAgB3kB,KAAK0kB,YAAYzG,QAAQ,GAAG2G,KAQ5CC,EAAkBF,EAAcG,WAAUF,GACvCrjB,KAAKC,UAAUojB,EAAKrF,QAAUhe,KAAKC,UAAUxB,KAAKykB,cAI3D,IAAyB,IAArBI,EAEF,YADA7kB,KAAK0kB,YAAYzG,QAAQ,GAAG2G,KAAO,IAKrC,MAAMG,EAAgBJ,EAAcG,WAAUF,GAE1CrjB,KAAKC,UAAUojB,EAAKI,aACpBzjB,KAAKC,UACHmjB,EAAcE,GAAiBG,UAAUzc,MACvC,EACAvI,KAAK6iB,qBAMPoC,EAAWN,EAAcI,GAEzBG,EAAgBP,EAAcI,GAAeC,UAAU3kB,OAgBvD8kB,EAdwBR,EAAczT,QAAO,CAAC0T,EAAM1Z,MAEpDA,IAAU6Z,IACP/kB,KAAK8iB,eAMLmC,EAASD,UAAUI,OACxB,CAACC,EAAKna,IAAUma,IAAQT,EAAKI,UAAU9Z,OAIOnF,KAAI6e,IACpDA,EAAKI,UAAYJ,EAAKI,UAAUzc,MAAM2c,GAC/BN,KAGT5kB,KAAK0kB,YAAYzG,QAAQ,GAAG2G,KAAOO,CACpC,CAEDG,iBACE,IAAKtlB,KAAK+iB,eAAiB/iB,KAAK0kB,YAAYzG,QAAQ,GAClD,OAGF,MAAM0G,EAAgB3kB,KAAK0kB,YAAYzG,QAAQ,GAAG2G,KAG5CW,EACJvlB,KAAK+iB,cAAgB/iB,KAAK6iB,kBAAoB7iB,KAAK8iB,aAAe,EAAI,GAGxE9iB,KAAK0kB,YAAYzG,QAAQ,GAAG2G,KAAOD,EAAczT,QAAQ0T,GAChDA,EAAKI,UAAU3kB,QAAUklB,GAEnC,CAED1iB,yBAAyB2iB,EAA0BC,GACjD,OAAO/U,CAAI,0BAA0B+U;QACjCD;UAEL,CAEDE,eACE9H,EACA+H,EACA/E,GAEA,OAAOlQ,CAAI;cACDkN;;gBAEEoE,GAAU4D;;;;QAIlBD,EACEjV,CAAI,SAASkQ,WACblQ,CAAI,iCAAiCkQ;;;;;;;;cAS5C,CAEDiF,0BACEjF,EACArB,EACAoB,EACA8E,GAEA,MAAMzC,EAAahjB,KAAKgjB,YAAchjB,KAAK0iB,SACrCoD,EAAiB,wCAAwCL,sBAA8BA,IAC7F,OAAO/U,CAAI;2BACY+U,sBAA8BA;qBACpC7M,GAAUoK,OAAanK,EAAYmJ,GAAU+D;qBAC7CnN,GAAUoK,OAAanK,EAAY7Y,KAAK8jB;qBACxC9jB,KAAKkkB;;;eAGX3E;6BACckG,sBAA8BA;WAChD7E;;QAEH5gB,KAAK0lB,eAAeI,GAAgB,EAAOlF;QAC3C5gB,KAAKgmB,gBAAgBrF;UAE1B,CAEDsF,mBACErF,EACAD,EACA8E,GAEA,MAAMzC,EAAahjB,KAAKgjB,YAAchjB,KAAK0iB,SAC3C,OAAOhS,CAAI;2BACY+U,sBAA8BA;qBACpC7M,GAAUoK,OAAanK,EAAYmJ,GAAU+D;qBAC7CnN,GAAUoK,OAAanK,EAAY7Y,KAAK8jB;qBACxC9jB,KAAKkkB;;QAElBlkB,KAAKqiB,iBACH3R,CAAI;yCAC2B1Q,KAAKyiB;qBACzB7B;;YAGX5gB,KAAK0lB,eAAe,8BAA8B,EAAM9E;QAC1D5gB,KAAKgmB,gBAAgBrF;UAE1B,CAED9d,wBACE+d,EACArB,EACAkG,GAEA,OAAO/U,CAAI;2BACY+U,sBAA8BA;;iBAExClG,MAASqB;UAEvB,CAED/d,wBAAwB+d,EAA2B6E,GACjD,OAAO/U,CAAI;2BACY+U,sBAA8BA;;QAEjD7E;UAEL,CAEDoF,gBAAgBE,GACd,MAAMV,EAASU,EAAMngB,KAAK6e,IACxB,IAAIa,EAAY,EAIhB,OAHInkB,MAAMgD,QAAQsgB,EAAKtG,KAAKrC,WAAW+I,aACrCS,EAAYb,EAAKtG,KAAKrC,WAAW+I,UAAU3kB,QAEtCL,KAAKmmB,eAAevB,EAAMa,EAAU,IAG7C,OAAOzD,GAAUoE,kBAAkBZ,EAAQA,EAAO,GAAGpc,OAAO,GAC7D,CAED+c,eAAevB,EAA4Ba,GACzC,MAAM7E,EAAQgE,EAAKtG,KAAKrC,WAAW2E,MAC7BrB,EAAOqF,EAAKtG,KAAKiB,KACjBoB,EAAWiE,EAAKjE,SACtB,OAAK3gB,KAAKoiB,eACJ7C,GAAQoB,GAAYA,EAAStgB,OACxBL,KAAK6lB,0BAA0BjF,EAAOrB,EAAMoB,EAAU8E,GAG7D9E,GAAYA,EAAStgB,OAChBL,KAAKimB,mBAAmBrF,EAAOD,EAAU8E,GAE9ClG,EACKyC,GAAUqE,iBAAiBzF,EAAOrB,EAAMkG,GAE1CzD,GAAUsE,iBAAiB1F,EAAO6E,EAC1C,CAEDc,eACE,MAAO,4BAA8BvmB,KAAKsiB,OAAS,YACpD,CAEDkE,gBAUE,OAJgBC,SAASC,SAAW,KAAOD,SAASjY,MACpCxO,KAAKuiB,SAAW,IAAMviB,KAAKuiB,SAAW,IAEhC,WAAWviB,KAAKwiB,YAAYxiB,KAAKsiB,gBAExD,CAEDrb,kBACEjH,KAAKkiB,WAAY,EAEjBliB,KAAK2mB,YAAc3mB,KAAK4mB,UACpB5mB,KAAKumB,eACLvmB,KAAKwmB,gBAET,MAAM1Q,QAAiBF,MAAM5V,KAAK2mB,aAClC,IAAK7Q,EAASC,GAAI,CAChB,MAAM8Q,EAAU,mBAAmB7mB,KAAK2mB,gBAAgB7Q,EAASE,UAAUF,EAASgR,aACpF,MAAM,IAAI5mB,MAAM2mB,EACjB,CAED7mB,KAAK0kB,kBAAoB5O,EAASwK,OAElCtgB,KAAKwkB,YACLxkB,KAAKslB,iBAEL,MAAMyB,EAAehH,GAAY/f,KAAK0kB,YAAa1kB,KAAKsiB,QACnDhhB,MAAMgD,QAAQyiB,KACjB/mB,KAAKwhB,KAAOuF,EAAavF,KACzBxhB,KAAKkiB,WAAY,EACjBliB,KAAKmkB,YAER,CAEDthB,0BAA0B1D,GACxB6iB,GAAUgF,cAAc7nB,EAAEsU,OAC3B,CAED5Q,qBAAqBohB,SACnB,MAAMgD,EAASjhB,SAAS+R,cAAc,gBAEhC6J,EAA4B,QAApB9J,EAAAmP,aAAM,EAANA,EAAQthB,kBAAY,IAAAmS,OAAA,EAAAA,EAAAnD,iBAAiB,cAE/CiN,GACF,IAAIA,GAAO1e,SAAQge,UACjB,MAAMgG,EAAyB,QAAfpP,EAAAoJ,EAAKvb,kBAAU,IAAAmS,OAAA,EAAAA,EAAEnD,iBAAiB,UAC9CuS,GACF,IAAIA,GAAShkB,SAAQ6gB,IACfA,IAAWE,GACbF,EAAO5d,aAAa,gBAAiB,QACtC,GAEJ,GAGN,CAEDtD,kBAAkB1D,GAChB,MACM8kB,EADS9kB,EAAEsU,OACWiQ,QAAQ,UACpC,GAAIO,EAAc,CACkD,SAA/CA,EAAajZ,aAAa,iBAG3CiZ,EAAa9d,aAAa,gBAAiB,UAE3C8d,EAAa9d,aAAa,gBAAiB,QAC3C6b,GAAUgF,cAAc/C,GAE3B,CACF,CAEOkD,kBAAkBnf,GACxB,MAAMkF,EAAU,CACdmF,OAAQ,CAAEiQ,OAAQtiB,KAAKsiB,OAAQta,KAAMA,GACrCkK,SAAS,EACTE,UAAU,GAEZpS,KAAKsS,cAAc,IAAIN,YAAY,WAAY9E,GAChD,CAED4B,SACE,OAAI9O,KAAKkiB,WAEgB,IAArBliB,KAAKwhB,KAAKnhB,OAFa,KAIpBqQ,CAAI;;iBAEE1Q,KAAK0iB,SAAW,SAAW,MAAM1iB,KAAK2iB,aAAa3iB,KACzDonB,WAAWpnB,KAAKsiB;cACbtiB,KAAKsiB;2BACQtiB,KAAKsiB;;0CAEUtiB,KAAKsiB;YACnCtiB,KAAKqnB;;UAEPrnB,KAAKgmB,gBAAgBhmB,KAAKwhB;;KAGjC,CAID8F,gCACEtnB,KAAKmnB,kBAAkB,UAexB,CAQDlE,8BAA8BxD,GAC5B,MAAM8H,EAAU9H,EAAQ,GAAGhM,OAAOsE,cAAc,MAEhD,GAMEwP,GACA9H,EAAQ,GAAG+H,YAAYC,OAASF,EAAQG,aACxC,CACA,MAAMC,EAAgBzoB,OAAO0oB,WAC3B,eAAe1oB,OAAO2oB,WAAa,SAErC7nB,KAAKmnB,kBAAkB,UAKvBQ,EAAcrZ,iBACZ,UACA,KACEtO,KACGsnB,+BAGC,GAEN,CAAEnZ,MAAM,GAEX,CACF,GA1qBM4T,GAAA1d,OAAyB,CAACwM,IAejCV,EAAA,CALCW,GAAS,CACR/O,KAAMX,QACNc,SAAS,EACTJ,UAAW,gBAEMigB,GAAAviB,UAAA,iBAAA,GAUnB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMX,QACNc,SAAS,EACTJ,UAAW,sBAESigB,GAAAviB,UAAA,qBAAA,GAUtB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMX,QACNc,SAAS,EACTJ,UAAW,yBAEYigB,GAAAviB,UAAA,wBAAA,GAUzB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,aAEGigB,GAAAviB,UAAA,cAAA,GAUhB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,eAEIigB,GAAAviB,UAAA,gBAAA,GAUjB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,eAECigB,GAAAviB,UAAA,gBAAA,GAUd2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,eAEKigB,GAAAviB,UAAA,gBAAA,GAUlB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,uBAEUigB,GAAAviB,UAAA,uBAAA,GAUvB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMX,QACNc,SAAS,EACTJ,UAAW,YAEIigB,GAAAviB,UAAA,gBAAA,GAUjB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,gBAEOigB,GAAAviB,UAAA,iBAAA,GAUpB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,aAEGigB,GAAAviB,UAAA,eAAA,GAUhB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMX,QACNc,SAAS,EACTJ,UAAW,oBAESigB,GAAAviB,UAAA,qBAAA,GAUtB2Q,EAAA,CALCW,GAAS,CACR/O,KAAML,OACNQ,SAAS,EACTJ,UAAW,wBAEgBigB,GAAAviB,UAAA,wBAAA,GAU7B2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,oBAEOigB,GAAAviB,UAAA,oBAAA,GAUpB2Q,EAAA,CALCW,GAAS,CACR/O,KAAML,OACNQ,SAAS,EACTJ,UAAW,WAEOigB,GAAAviB,UAAA,oBAAA,GAUpB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMX,QACNc,SAAS,EACTJ,UAAW,iBAEUigB,GAAAviB,UAAA,kBAAA,GAUvB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,iBAEMigB,GAAAviB,UAAA,kBAAA,GAhLRuiB,GAASC,GAAA7R,EAAA,CADrBC,GAAc,eACF2R,IC7Bb,IAAezR,GAAAA,CAAG;;;;;;;;;;;;;;;;;;;;qvCCULwX,GAkBX/nB,YACEyO,EACAtB,EAII,IAbNlN,KAAqB+nB,sBAA2B,GAe9C,MAAMC,EAAiB,CACrBC,SAAU,EACVC,YAAa,CAAC,KACdC,kBAAmB3Z,GAMf4Z,EAAwB/mB,OAAOgnB,YACnChnB,OAAOoe,QAAQvS,GAASgE,QAAO,EAAExI,EAAG0U,UAAqBvE,IAAVuE,KAEjDpd,KAAKkN,QAAO7L,OAAA4Q,OAAA5Q,OAAA4Q,OAAA,GAAQ+V,GAAmBI,GAEvCpoB,KAAKwO,KAAOA,EACZxO,KAAKwO,KAAKvJ,cAAcjF,MAExBA,KAAKsoB,gCACN,CAYDA,iDAEExQ,EAAA9X,KAAKkN,QAAQgb,4BAAanlB,KAAK,KAE/B,IAAIwlB,EAAgB,UACpB/P,EAAAxY,KAAKkN,QAAQgb,4BAAahlB,SAAQslB,IAChC,MAAMC,EAAqB,CACzBC,IAAKH,EACLI,IAAKH,EAAa,GAEpBD,EAAgBC,EAChBxoB,KAAK+nB,sBAAsBhlB,KAAK0lB,EAAmB,GAEtD,CAKDpjB,gBACOrF,KAAKwO,KAAKwJ,MAAM4Q,SAEnB5oB,KAAKwO,KAAKwJ,MAAMC,YACd,UACA,kDAKJjY,KAAKqkB,eAAiB,IAAIC,gBACvB7E,ICxFiB,EACtBoJ,EACAC,EACAC,GAAY,KAEZ,IAAIC,EAEJ,OAAO,YAAsBC,GAC3B,MAAMC,EAAc,IAAML,KAAQI,GAElCE,aAAaH,GAETD,QAA2BlQ,IAAdmQ,GACfE,IAGFF,EAAY3N,WAAW6N,EAAaJ,EACtC,CAAC,EDyEKb,CACEjoB,KAAKopB,gBAAgB9P,KAAKtZ,MAC1BA,KAAKkN,QAAQ+a,SAFfA,CAGExI,EAAQ,IAKdzf,KAAKqpB,iBAAmBrpB,KAAKwO,KAG7BxO,KAAKqkB,eAAevI,QAAQ9b,KAAKqpB,iBAClC,CAKD7iB,mBACExG,KAAKqkB,eAAe9K,YACrB,CAMD6P,gBAAgBE,GACdtpB,KAAKupB,sBAAwBD,EAAS,GAAG9B,YAAYgC,MAGjDxpB,KAAKupB,uBACPvpB,KAAKypB,6BAER,CAKDA,8BACE,IAAIhB,EAAqBzoB,KAAK0pB,uBAE9B1pB,KAAK+nB,sBAAsB7kB,SAAQ,CAACslB,EAAYtd,KAE5ClL,KAAKupB,uBAAyBf,EAAWE,KACzC1oB,KAAKupB,uBAAyBf,EAAWG,MAEzCF,EAAqBvd,EACtB,IAGCud,IAAuBzoB,KAAK0pB,yBAC9B1pB,KAAK0pB,uBAAyBjB,EAC9BzoB,KAAKkN,QAAQib,kBAAkBzkB,gBAElC,QE5HUimB,GAIX5pB,YAAYyO,EAA4CtB,GACtDlN,KAAKkN,QAAUA,EACflN,KAAKkN,QAAU,CACb0c,gBAAiB1c,EAAQ0c,gBACzBC,YAAa3c,EAAQ2c,YACrBC,UAAW5c,EAAQ4c,YAAa,GAIlC9pB,KAAKwO,KAAOA,EACZxO,KAAKwO,KAAKvJ,cAAcjF,KACzB,CAKDqF,gBACErF,KAAK+pB,iBAAiB/pB,KAAKwO,KAAMxO,KAAKkN,QACvC,CAQD6c,iBAAiBvb,EAAmBtB,GAClCmO,YAAW,WACT,MAAM2O,EAAoC,QAAjBlS,EAAAtJ,EAAK7I,kBAAY,IAAAmS,OAAA,EAAAA,EAAAnD,iBACxCzH,EAAQ0c,iBAGJK,EAAiB,IAAIC,sBAAqBzK,IAC9CA,EAAQvc,SAAQinB,IACVA,EAAMC,kBAAoB,EAC5BD,EAAM1W,OAAOlC,UAAUD,IAAIpE,EAAQ2c,aAC1B3c,EAAQ4c,WACjBK,EAAM1W,OAAOlC,UAAU/G,OAAO0C,EAAQ2c,YACvC,GACD,IAGJG,SAAAA,EAAkB9mB,SAAQ2K,IACxBoc,EAAenO,QAAQjO,EAAQ,GAC/B,GACD,EACJ,ECvCI,IAAMwc,GAAN,cAA6Bna,GAA7BnQ,kCAqCLC,KAAOsqB,QAAG,UAqBVtqB,KAAUuqB,YAAG,EAObvqB,KAAcwqB,eAAoB,OAOlCxqB,KAAeyqB,gBAAoB,QAOnCzqB,KAAY0qB,aAAG,QAOf1qB,KAAG2qB,IAAG,MAWN3qB,KAAiB4qB,kBAAG,KAGpB5qB,KAAW6qB,YAAG,IAyFf,CAvLCvkB,oBACEhE,MAAMgE,oBACFtG,KAAKqQ,mBACPrQ,KAAK8qB,iBAAmB,IAAIhD,GAAiB9nB,KAAM,CACjDkoB,YAAa,CAACloB,KAAK4qB,qBAGxB,CA4FDhjB,eACM5H,KAAK+qB,gBACP/qB,KAAKgrB,cAAgB,IAAIrB,GAAc3pB,KAAM,CAC3C4pB,gBAAiB,aACjBC,YAAa7pB,KAAK+qB,gBAGvB,CAMDE,eACE,QAAKjrB,KAAKqQ,wBAI2CwI,IAAjD7Y,KAAK8qB,iBAAiBpB,yBAIH,SAArB1pB,KAAK6qB,aAC4C,IAAjD7qB,KAAK8qB,iBAAiBpB,wBAKzB,CAEDwB,gBACE,OAAOxa,CAAI;QACP1Q,KAAKirB,eACHva,CAAI;2BACakI,GAAU5Y,KAAKqQ;wBAClBuI,GAAU5Y,KAAK0qB;mCACJ9R,GAAU5Y,KAAKyQ;2BAExC;KAEP,CACD3B,SACE,MAAM0b,EAAiBxqB,KAAKwqB,eAC5B,IAAIW,EAAiB,IAGnBnrB,KAAKqQ,kBAC4C,IAAjDrQ,KAAK8qB,iBAAiBpB,yBAEtByB,EAAiB,cAAcnrB,KAAK0qB,iBAEtC,MAAM9M,EAAU,CACdwN,WAAW,EACXZ,CAACA,IAAiB,EAClBD,WAAYvqB,KAAKuqB,WACjB,CAACvqB,KAAKyqB,iBAAkBzqB,KAAKyqB,iBAEzBY,EAAiB,CACrB,qBAAqB,EACrBC,YAAetrB,KAAK+qB,eAEtB,OAAOra,CAAI;QACP1Q,KAAKurB,WAAavrB,KAAKwrB,cAAgBxrB,KAAKyqB,gBAC1C/Z,CAAI;;kDAEoC1Q,KAAKyqB;qCAClBzqB,KAAKsqB;4BACda;;;kCAGMnrB,KAAKurB;qCACFvrB,KAAKwrB;0DACgBxrB,KAAK2qB;;oBAGrD;oBACUhS,GAAS0S;UACnBrrB,KAAKkrB;sBACOvS,GAASiF;;;;KAK5B,GA3LMyM,GAAAhmB,OAAyB,CAACwM,IAsBjCV,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,gBAEKuoB,GAAA7qB,UAAA,iBAAA,GAOlB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,mBAEQuoB,GAAA7qB,UAAA,oBAAA,GAOrB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,aAEOuoB,GAAA7qB,UAAA,eAAA,GAOpB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,uBAEUuoB,GAAA7qB,UAAA,wBAAA,GAOvB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,yBAEWuoB,GAAA7qB,UAAA,yBAAA,GAOxB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMX,QACNc,SAAS,EACTJ,UAAW,iBAEMuoB,GAAA7qB,UAAA,kBAAA,GAOnB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,qBAE4BuoB,GAAA7qB,UAAA,sBAAA,GAOzC2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,sBAE8BuoB,GAAA7qB,UAAA,uBAAA,GAO3C2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,oBAEUuoB,GAAA7qB,UAAA,oBAAA,GAOvB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,SAEDuoB,GAAA7qB,UAAA,WAAA,GAWZ2Q,EAAA,CANCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTD,UAAWP,OACXI,UAAW,yBAEYuoB,GAAA7qB,UAAA,yBAAA,GAGzB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQE,SAAS,EAAMJ,UAAW,kBACjCuoB,GAAA7qB,UAAA,mBAAA,GAGnB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQE,SAAS,EAAMJ,UAAW,oBAC9BuoB,GAAA7qB,UAAA,qBAAA,GAvGX6qB,GAAcla,EAAA,CAD1BC,GAAc,oBACFia,ICrCb,IAAe/Z,GAAAA,CAAG;;;;;;;;;;;;;;;;;;;;4qKCClB,MAAMmb,GAAqB,IAAIrQ,MAAM,WAC/BsQ,GAAoB,IAAItQ,MAAM,UAC9BuQ,GAAqB,IAAIvQ,MAAM,WAC/BwQ,GAAoB,IAAIxQ,MAAM,UAC9ByQ,GAAqB,IAAIzQ,MAAM,WAG/B0Q,GAAqB,IAAI1S,kBAAiB2S,IAC9CA,EAAU7oB,SAAQ+D,MAAM+kB,UACtB,GAA+B,SAA3BA,EAASC,cAA0B,CACrC,MAAMC,EAASF,EAASvY,OAGxB,IADeyY,EAAOC,aAAa,QACtB,OAGbnmB,SAAS+R,cAAc,QAASC,MAAMoU,SAAW,SAGjD,MAAMC,EAAcH,EAAOnU,cACzB,eAEFsU,EACIA,EAAY9Q,QACkB,QAA9BzD,EAAAoU,EAAOnU,cAAc,iBAAS,IAAAD,GAAAA,EAAEyD,QAEpC2Q,EAAO5Z,cAAcqZ,UACfW,GAAmBJ,GACzBA,EAAO5Z,cAAcsZ,GACtB,IACD,IAIEW,GAAuB,IAAInT,kBAAiB2S,IAChDA,EAAU7oB,SAAQ8oB,IAChBA,EAASQ,aAAatpB,SAAQupB,IACC,WAAzBA,EAAYlQ,WACdkQ,EAAYpe,oBAAoB,QAASqe,IACzCD,EAAYpe,oBAAoB,QAASse,IACzCF,EAAYna,cAAcuZ,IAC3B,GACD,GACF,IAIES,GAAsBze,GAC1BhJ,QAAQ+nB,WACN/e,EAAQgf,gBAAgB9mB,KAAIulB,GAAaA,EAAUwB,YAKjDJ,GAAe,EAAGjZ,OAAQyY,MAC9B,MAAMre,EAAUqe,EACS,WAArBre,EAAQ0O,UACV1O,EAAQuF,MAAM,UACf,EAGGuZ,GAAc1lB,OAASwM,OAAQyY,MACnClmB,SAAS+R,cAAc,QAASC,MAAMoU,SAAW,SACjD,MAAMve,EAAUqe,EAEhBre,EAAQyE,cAAcmZ,UAEhBa,GAAmBze,GAEzBA,EAAQyE,cAAcoZ,GAAkB,ECxE1C,ICEepb,GAAAA,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+4NCmCX,IAAMyc,GAAN,cAA0B7c,GAA1BnQ,kCAELC,KAAAyd,OAAS,IAAIvE,GAAiBlZ,MAQ9BA,KAAQgtB,SAAG,cAuBXhtB,KAAaitB,cAAkB,UAM/BjtB,KAAUktB,WAAe,SAOzBltB,KAAUmtB,YAAG,CA+Hd,CA9GCC,cAAc5X,GACZ,OACE,IAAI6X,IAAI7X,EAAKtW,OAAOunB,SAASlH,MAAM+N,WAAapuB,OAAOunB,SAAS6G,QAEnE,CAMDC,kBACE,OAAOvtB,KAAKotB,cAAcptB,KAAKwtB,WAC3B,2BACA3U,CACL,CAKD4U,qBACE,OAAIztB,KAAK0tB,aACA1tB,KAAK0tB,aAEP1tB,KAAKotB,cAAcptB,KAAKwtB,WAAa,cAAW3U,CACxD,CAEDjR,eACE5H,KAAK2tB,YAAc3tB,KAAKyd,OAAOzD,MAAM,QACrCha,KAAK4tB,aAAe5tB,KAAKyd,OAAOzD,MAAM,QACvC,CAED0L,iBACE,OAAO1lB,KAAKwtB,UACR9c,CAAI;uBACW1Q,KAAKitB,iBAAiBjtB,KAAKktB,cAAcltB,KAAKgtB;iBACpDhtB,KAAKwtB;oBACF5U,GAAU5Y,KAAKytB;iBAClB7U,GAAU5Y,KAAKutB;wBACR3U,GAAU5Y,KAAK6tB;2BACZjV,GAAU5Y,KAAKmtB;;YAE9BntB,KAAK8tB,aAAa9tB,KAAK2tB,YAAa;YACpC3tB,KAAKyd,OAAOjC;YACZxb,KAAK8tB,aAAa9tB,KAAK4tB,aAAc;cAEzCld,CAAI;uBACW1Q,KAAKitB,iBAAiBjtB,KAAKktB,cAAcltB,KAAKgtB;wBAC7CpU,GAAU5Y,KAAK6tB;2BACZjV,GAAU5Y,KAAKmtB;sBACpBntB,KAAK+tB;sBACL/tB,KAAKguB;;YAEfhuB,KAAK8tB,aAAa9tB,KAAK2tB,YAAa;YACpC3tB,KAAKyd,OAAOjC;YACZxb,KAAK8tB,aAAa9tB,KAAK4tB,aAAc;mBAE9C,CAEDK,qBACE,MAAM3P,EAAOte,KAAK+X,cAAc,KAChC,GAAKuG,EAOE,CACL,MAQM4P,EAPe,IADQluB,KAAKitB,cAERhiB,MAAM,KAC9B,MACAjL,KAAKktB,WACLltB,KAAKgtB,UAGmC9b,QAAO0T,GAAiB,KAATA,IAEzD,OADAtG,EAAK/M,UAAUD,OAAO4c,GACfxd,CAAI;UACP1Q,KAAK8tB,aAAa9tB,KAAK2tB,YAAa;UACpC3tB,KAAKyd,OAAOjC;UACZxb,KAAK8tB,aAAa9tB,KAAK4tB,aAAc;OAE1C,CAtBC,OAAOld,CAAI;qBACI1Q,KAAKitB,iBAAiBjtB,KAAKktB,cAAcltB,KAAKgtB;;;UAGzDhtB,KAAKyd,OAAOjC;aAmBnB,CAOD1M,SACE,OAAO9O,KAAK6tB,YAER7tB,KAAK0lB,iBAEL1lB,KAAKiuB,oBACV,CASDH,aAAaK,EAAiB1U,GAC5B,OAAK0U,EACEzd,CAAI,GAAG1Q,KAAKyd,OAAOjC,eAAe/B,KADrB,IAErB,GA3KMsT,GAAA1oB,OAAyB,CAACwM,IASjCV,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,eACZirB,GAAAvtB,UAAA,gBAAA,GAGzB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,gBACnBirB,GAAAvtB,UAAA,iBAAA,GAQlB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,kBACjBirB,GAAAvtB,UAAA,mBAAA,GAMpB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,mBACRirB,GAAAvtB,UAAA,oBAAA,GAM7B2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,iBAAkBI,SAAS,KACvB6qB,GAAAvtB,UAAA,qBAAA,GAMzC2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,iBACHirB,GAAAvtB,UAAA,kBAAA,GAOlC2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMX,QAASU,UAAW,iBACnBirB,GAAAvtB,UAAA,kBAAA,GAKP2Q,EAAA,CAAXW,MAA+Bic,GAAAvtB,UAAA,eAAA,GAKpB2Q,EAAA,CAAXW,MAA+Bic,GAAAvtB,UAAA,eAAA,GAxDrButB,GAAW5c,EAAA,CADvBC,GAAc,iBACF2c,ICuBN,IAAMqB,GAAN,cAA0Ble,GAA1BnQ,kCAELC,KAAAyd,OAAS,IAAIvE,GAAiBlZ,MAuB9BA,KAAMsiB,OAAG,OAUTtiB,KAAQqnB,SAAG,kBAUXrnB,KAAQuiB,SAAG,GAUXviB,KAAQwiB,SAAG,OAcXxiB,KAAiBquB,kBAAG,YAUpBruB,KAAQ0iB,UAAG,EAqJX1iB,KAAWsuB,YAAG,SAOdtuB,KAASuuB,UAAG,SAiDHvuB,KAAoBwuB,sBAAG,EAkBhCxuB,KAAAyuB,kBAAoB,IAAIjsB,IAwYfxC,KAAa0uB,eAAG,EAsDhB1uB,KAAiB2uB,mBAAG,CAuR9B,CAruBCroB,oBACEhE,MAAMgE,oBACNtG,KAAK4uB,YAAc5uB,KAAK6uB,cACzB,CAEDjnB,eAEC,CAWDinB,eACE,MAAMC,EAAKC,UAAUC,UACrB,IAAIC,EACFtiB,EACEmiB,EAAGha,MACD,iEACG,GACT,MAAI,WAAW9K,KAAK2C,EAAE,KACpBsiB,EAAM,kBAAkBllB,KAAK+kB,IAAO,GAC7B,CAAE3jB,KAAM,KAAM+jB,QAASD,EAAI,IAAM,KAE7B,WAATtiB,EAAE,KACJsiB,EAAMH,EAAGha,MAAM,qBACJ,MAAPma,GACK,CAAE9jB,KAAM,QAAS+jB,QAASD,EAAI,KAGzCtiB,EAAIA,EAAE,GAAK,CAACA,EAAE,GAAIA,EAAE,IAAM,CAACoiB,UAAUI,QAASJ,UAAUK,WAAY,MACpB,OAA3CH,EAAMH,EAAGha,MAAM,0BAClBnI,EAAEnH,OAAO,EAAG,EAAGypB,EAAI,IAEd,CACL9jB,KAAMwB,EAAE,GACRuiB,QAASG,WAAW1iB,EAAE,KAEzB,CAKD2iB,yBACE,MAAMC,EAC4C,QAAhD/W,EAAiB,QAAjBV,EAAA9X,KAAK2F,kBAAY,IAAAmS,OAAA,EAAAA,EAAAC,cAAc,yBAAiB,IAAAS,OAAA,EAAAA,EAAEkP,aAEhD6H,GACFvpB,SACG+R,cAAc,QACdC,MAAMC,YAAY,yBAA0BsX,EAAqB,KAEvE,CAKOC,gBAAgBlN,EAAgBta,GACzB,WAATA,EACFhI,KAAKyuB,kBAAkBjuB,IAAI8hB,GAAQ,GAC1BtiB,KAAKyuB,kBAAkB3nB,IAAIwb,IACpCtiB,KAAKyuB,kBAAkBjd,OAAO8Q,GAIhCtiB,KAAK0iB,SAAW1iB,KAAKyuB,kBAAkBnX,KAAO,EAC9CtX,KAAKsvB,gBACN,CAEOG,kBAAkBtwB,GACxBa,KAAKwvB,gBAAgBrwB,EAAEkT,OAAOiQ,OAAQnjB,EAAEkT,OAAOrK,KAChD,CAED0nB,wBAAwB3d,aACtB,GAAkB,QAAdA,EAAMnC,MAAkBmC,EAAM4d,SAAU,CAI1C,KACsD,QAAnDC,EAAkC,UAAZ,QAAtB9X,EAAA9R,SAAS6pB,qBAAa,IAAA/X,OAAA,EAAAA,EAAEnS,kBAAU,IAAA6S,OAAA,EAAAA,EAAEqX,qBAAe,IAAAD,OAAA,EAAAA,EAAAE,QAClD,yBAGF,OAIF,MAAMC,EACJ/vB,KAAK2F,WAAYoS,cACf,cACCpS,WAAYgP,iBAAiB,mBAElC,IAAKob,EACH,OAEFhe,EAAMie,iBAEwBD,EAAkB,GAC1BxU,OACvB,CACF,CAED0U,0BAA0Ble,mBACxB,GAAkB,QAAdA,EAAMnC,IACR,OAIF,MAAMsgB,EAAelwB,KAAK2F,WAAYoS,cACpC,uBAIIgY,EAC8B,QADVvX,EAAe,QAAfV,EAAA9X,KAAK2F,kBAAU,IAAAmS,OAAA,EAAAA,EACrCC,cAAc,0BAAkB,IAAAS,OAAA,EAAAA,EAChC7D,iBAAiB,0BAGrB,GAAIob,EAAmB,CACrB,MAAMI,EAA0BJ,EAAkB,GAC5CK,EAAyBL,EAC7BA,EAAkB1vB,OAAS,IAIW,QAApCgwB,EAAwB,QAAxBT,EAAA5pB,SAAS6pB,qBAAe,IAAAD,OAAA,EAAAA,EAAAjqB,kBAAY,IAAA0qB,OAAA,EAAAA,EAAAR,iBAAkBK,GACxDne,EAAMie,iBACNG,EAAwB5U,UAEU,UAAZ,QAAtB+U,EAAAtqB,SAAS6pB,qBAAa,IAAAS,OAAA,EAAAA,EAAE3qB,kBAAU,IAAA4qB,OAAA,EAAAA,EAAEV,iBACpCO,IAEAre,EAAMie,iBACNE,EAAc3U,QAEjB,CACF,CAEDzM,iBACE,OAAO4B,CAAI;QACoB,YAAX,UAAhB1Q,KAAK4uB,mBAAW,IAAA9W,OAAA,EAAAA,EAAE3M,QAAuC,UAAlBnL,KAAK4uB,mBAAa,IAAApW,OAAA,EAAAA,EAAA0W,SAAU,KACjExe,CAAI;;;;;;cAMA1Q,KAAKwwB;kBAET;;;oBAGUxwB,KAAKyvB;gBACT9W,GAAS,CACf8X,OAAQzwB,KAAK0iB;;;YAKX1iB,KAAK0iB,SAAW1iB,KAAK0wB,iBAAmB1wB,KAAK2wB;;UAE/C3wB,KAAK0iB,SAAW1iB,KAAK4wB,uBAAyB;;KAGrD,CAEDC,sBAKE7wB,KAAK8wB,mBAAqB9wB,KAAK8wB,kBAE3B9wB,KAAK8wB,mBACP9wB,KAAKwuB,sBAAuB,EAC5BxoB,SAAS+R,cAAc,QAASC,MAAMoU,SAAW,SACjDpsB,KAAK0vB,wBAA0B1vB,KAAK0vB,wBAAwBpW,KAAKtZ,MACjEgG,SAASsI,iBAAiB,UAAWtO,KAAK0vB,2BAE1C1pB,SAAS+R,cAAc,QAASC,MAAMoU,SAAW,SACjDpmB,SAASqI,oBAAoB,UAAWrO,KAAK0vB,yBAEhD,CAEDqB,oBACE,OAAOrgB,CAAI,IAAI1Q,KAAKgxB,kBAAkBhxB,KAAKixB,iBAC5C,CAEDA,gBACE,OAAOvgB,CAAI;;;;;KAMZ,CAEDwgB,4BACE,OAAOxgB,CAAI;;gBAEC1Q,KAAK6wB;;uBAEE7wB,KAAK8wB;;;;gBAIZ9wB,KAAK8wB,kBAAoB,eAAiB;;;;;WAK/C9wB,KAAK8wB,kBAAoB,QAAU;;cAG3C,CAEDK,8BACE,OAAOzgB,CAAI;;;uBAGQ1Q,KAAKwuB;;gBAEZxuB,KAAKoxB;;;gBAGLpxB,KAAKwuB,qBAAuB,eAAiB;;;;;WAKlDxuB,KAAKwuB,qBAAuB,QAAUxuB,KAAKsuB;;cAGnD,CAEDsC,uBACE,OAAOlgB,CAAI;QACP1Q,KAAKkxB;;;;;;;;;;;;;QAaLlxB,KAAKmxB;WAEV,CAEDT,iBACE,OAAOhgB,CAAI;;kCAEmB1Q,KAAK+wB;;;;gCAIP/wB,KAAK8wB,kBAAoB,YAAc;;;oCAGnC9wB,KAAK+wB;;;;cAI3B/wB,KAAKqxB;;cAELrxB,KAAKsxB;;;;;;gCAMatxB,KAAKwuB,qBAAuB,YAAc;;;oCAGtCxuB,KAAK+wB;;;;;gBAKzB/wB,KAAKuxB,wBAAwBvxB,KAAKwxB;;;;;KAM/C,CAsCDb,kBACE,OAAOjgB,CAAI;;;;;;UAML1Q,KAAKsxB;;;;4BAIatxB,KAAK0uB,cAAgB,YAAc;;;YAGnD1uB,KAAKgxB;;cAEHhxB,KAAKqxB,sBAAsBrxB,KAAKyxB;cAChCzxB,KAAK0xB;;;;;0CAKuB1xB,KAAK0uB,cACjC,OACA;;;cAGA1uB,KAAK2xB;;6CAE0B3xB,KAAK4xB;;;KAI/C,CAEDZ,eACE,OAAOtgB,CAAI;QACPmhB,GH5sBO;SG8sBZ,CAEDR,mBACE,OAAO3gB,CAAI;;iBAEEkI,GAAU5Y,KAAK0iB,SAAW,YAAS7J;sBAC9BD,GAAU5Y,KAAK4mB;;;qBAGhB5mB,KAAKqnB;sBACJrnB,KAAK8xB;qBACN9xB,KAAK+xB;;;;;;;KAQvB,CAEDT,sBACE,OAAO5gB,CAAI;;iBAEEkI,GAAU5Y,KAAK0iB,SAAW,YAAS7J;sBAC9BD,GAAU5Y,KAAK4mB;;;;;;;;KASlC,CAGDoL,kBACEhyB,KAAK0uB,eAAiB1uB,KAAK0uB,aAC5B,CAEDgD,qBACE,OAAOhhB,CAAI;;;kBAGG1Q,KAAKgyB;yBACEhyB,KAAK0uB;;;UAGpB1uB,KAAK0uB,cAAgB,SAAW;;;oBAGtB1uB,KAAK0uB,cAAgB,QAAU;;;;;;;KAQhD,CAEDiD,2BACE,OAAOjhB,CAAI;;iBAEEkI,GAAU5Y,KAAK0iB,SAAW,YAAS7J;sBAC9BD,GAAU5Y,KAAK4mB;;;;;;;KAQlC,CAEDgL,qBACE,OAAOlhB,CAAI;;iBAEEkI,GAAU5Y,KAAK0iB,SAAW,YAAS7J;sBAC9BD,GAAU5Y,KAAK4mB;;;;;;;KAQlC,CAGDqL,oBACEjyB,KAAK2uB,mBAAoB,CAC1B,CACDuD,qBACElyB,KAAK2uB,mBAAoB,CAC1B,CACDwD,oBAAoBhzB,GACR,UAAVA,EAAEyQ,MAAoB5P,KAAK2uB,mBAAqB3uB,KAAK2uB,mBAC3C,WAAVxvB,EAAEyQ,MAAqB5P,KAAK2uB,mBAAoB,EACjD,CACDyD,wBACE,OAAO1hB,CAAI;;;uBAGQ1Q,KAAKiyB;uBACLjyB,KAAKkyB;oBACRlyB,KAAKmyB;;;;;2BAKEnyB,KAAK2uB;;;;YAIpB3uB,KAAKqyB;;;;;;;;;;;2BAWUryB,KAAKsyB,UAAUtyB,KAAKuyB;2BACpBvyB,KAAKwyB,UAAUxyB,KAAKyyB;;;cAGjCzyB,KAAKyd,OAAOjC,eAAe;;;;;;;;;;;;KAatC,CAED+V,qBACE,OAAO7gB,CAAI;;;aAGF1Q,KAAK0yB;;;;;2BAKS1yB,KAAK0iB,SAAW,GAAK;;;;;;;;;;;;;;4CAcJ1iB,KAAKsuB;;;;KAK9C,CAEDqE,uBACE,OAAOjiB,CAAI;;kCAEmB1Q,KAAK+wB;;;;gCAIP/wB,KAAK8wB,kBAAoB,YAAc;;;oCAGnC9wB,KAAK+wB;;;;cAI3B/wB,KAAKqxB;;cAELrxB,KAAKsxB;;;;KAKhB,CAEDsB,wBAAwBC,GACtB,OAAOniB,CAAI;;;;+BAIgB4D,mBAAmBue;;;;;;;YAOtCA;;;KAIT,CAEDrB,4BACE,OAAO9gB,CAAI;;;;;;YAMH1Q,KAAK4yB,wBAAwB;YAC7B5yB,KAAK4yB,wBAAwB;YAC7B5yB,KAAK4yB,wBAAwB;YAC7B5yB,KAAK4yB,wBAAwB;;;;;;YAM7B5yB,KAAK4yB,wBAAwB;YAC7B5yB,KAAK4yB,wBAAwB;YAC7B5yB,KAAK4yB,wBAAwB;YAC7B5yB,KAAK4yB,wBAAwB;;;KAItC,CAEDnB,gCACE,OAAO/gB,CAAI;QACP1Q,KAAK8yB;;UAEH9yB,KAAKuxB,wBAAwBvxB,KAAKwxB;;KAGzC,CAEDuB,+BACE,OAAOriB,CAAI,IAAI1Q,KAAK8yB,kCACrB,CAED1B,6BACEpxB,KAAKwuB,sBAAwBxuB,KAAKwuB,qBAE9BxuB,KAAKwuB,sBACPxuB,KAAK8wB,mBAAoB,EACzB9qB,SAAS+R,cAAc,QAASC,MAAMoU,SAAW,SACjDpsB,KAAKiwB,0BACHjwB,KAAKiwB,0BAA0B3W,KAAKtZ,MACtCgG,SAASsI,iBAAiB,UAAWtO,KAAKiwB,6BAE1CjqB,SAAS+R,cAAc,QAASC,MAAMoU,SAAW,SACjDpmB,SAASqI,oBAAoB,UAAWrO,KAAKiwB,2BAEhD,CAED+C,wCACEhzB,KAAKwuB,sBAAwBxuB,KAAKwuB,qBAClC,MAAMyE,EAC6C,QAAjDrD,EAAkC,QAAlCpX,EAAsB,UAAtBxS,SAAS6pB,qBAAa,IAAA/X,OAAA,EAAAA,EAAEnS,kBAAU,IAAA6S,OAAA,EAAAA,EAAEqX,qBAAa,IAAAD,OAAA,EAAAA,EAAEsD,mBAC/CnD,EAAoBkD,aAAW,EAAXA,EAAate,iBACrC,0BAEF,GAAIob,EAAmB,CACrB,MAAMoD,EAAuBpD,EAC3BA,EAAkB1vB,OAAS,GAEzBL,KAAKwuB,sBACPxuB,KAAKozB,gBAAkBpzB,KAAKozB,gBAAgB9Z,KAAKtZ,MACjDmzB,EAAqB7kB,iBAAiB,OAAQtO,KAAKozB,kBAEnDD,EAAqB9kB,oBAAoB,OAAQrO,KAAKozB,gBAEzD,CACF,CAEDA,gBAAgBrhB,SACd,MAAM2K,EAAiB3K,EAAM0B,OAC7BiJ,EAAerO,oBAAoB,OAAQrO,KAAKozB,iBAChD,MAAMC,EACuC,QAA3Cvb,EAAA4E,EAAegH,QAAQ,0BAAoB,IAAA5L,OAAA,EAAAA,EAAA8L,uBAC7CyP,SAAAA,EAAoBltB,aAAa,gBAAiB,SAClDnG,KAAKwuB,sBAAuB,CAC7B,CAEDsE,gCACE,MAAMQ,EAAmBtzB,KAAKwuB,qBAC1B,QACA,mBACJ,OAAO9d,CAAI;;;;yBAIU1Q,KAAKwuB;;kBAEZxuB,KAAKgzB;;;kBAGLhzB,KAAK0iB,SAAW,aAAe4Q;kBAC/BtzB,KAAK0iB,SAAW,UAAY;;;oCAGT1iB,KAAK0iB,SAA+B,KAApB;aACxC1iB,KAAKsuB;;;KAIf,CAEDiF,uBACE,OAAO7iB,CAAI;;;;kBAIG1Q,KAAKwzB;;;kBAGLxzB,KAAK0iB,SAAW,aAAe;kBAC/B1iB,KAAK0iB,SAAW,UAAY;;;oCAGT1iB,KAAK0iB,SAA+B,KAApB;aACxC1iB,KAAKsuB;;;;;;;oBAOEtuB,KAAKyzB;;;;;gCAKOzzB,KAAKuxB;;KAGlC,CAEDiC,WAAWr0B,SACT,MAAMu0B,EAAUv0B,EAAEw0B,cACZC,EAAgBF,EAAQR,oBACK,QAArBpb,EAAA4b,EAAQ/W,qBAAa,IAAA7E,OAAA,EAAAA,EAAEC,cACnC,kBAEIqF,MAAQ,GJz+BHnW,eAAgBilB,GAC7BA,EAAO5d,iBAAiB,QAASoe,IACjCR,EAAO5d,iBAAiB,QAASqe,IAGjCT,EAAO5d,iBAAiB,WAAW,SAAUyD,GACzB,WAAdA,EAAMnC,KACRsc,EAAO9Y,MAAM,SAEjB,IAEA0Y,GAAmBhQ,QAAQoQ,EAAQ,CACjCjQ,YAAY,IAGdsQ,GAAqBzQ,QAAQ9V,SAASuS,KAAM,CAC1C0D,YAAY,EACZF,SAAS,EACTC,WAAW,UAKPsQ,GAAmBJ,GACzBA,EAAOtlB,gBAAgB,UACzB,CIi9BIitB,CAAUD,GACVA,EAAcE,WACf,CAEDL,YAAYt0B,GACMA,EAAEw0B,cACYjQ,QAAQ,UACxBtQ,MAAM,SACrB,GAjgCMgb,GAAA/pB,OAAyB,CAACwM,IAIjCV,EAAA,CC5DC,SAAWzP,EAAEd,GAAG,OAAOE,GAAE,CAAC6P,WAAW7P,IAAI,MAAMb,EAAE,CAACqB,MAAM,IAAIR,EAAEF,EAAE,OAAO,QAAQA,EAAE,QAAQE,EAAEE,KAAKmF,kBAAa,IAASrF,OAAE,EAAOA,EAAEiY,cAAcrX,UAAK,IAASd,EAAEA,EAAE,IAAI,EAAEgE,YAAW,EAAGD,cAAa,GAAI,GAAG/D,EAAE,CAAC,MAAMA,EAAE,iBAAiBE,EAAEH,SAAS,KAAKG,EAAEb,EAAEqB,IAAI,WAAW,IAAIR,EAAEb,EAAE,YAAO,IAASe,KAAKJ,KAAKI,KAAKJ,GAAG,QAAQX,EAAE,QAAQa,EAAEE,KAAKmF,kBAAa,IAASrF,OAAE,EAAOA,EAAEiY,cAAcrX,UAAK,IAASzB,EAAEA,EAAE,MAAMe,KAAKJ,EAAE,CAAC,CAAC,OAAOX,IAAI,CD2Dta80B,CAAM,2BACiB3F,GAAA5uB,UAAA,kBAAA,GAUxB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMX,QACNc,SAAS,EACTJ,UAAW,gBAEMssB,GAAA5uB,UAAA,iBAAA,GAUnB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,aAEGssB,GAAA5uB,UAAA,cAAA,GAUhB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,eAEgBssB,GAAA5uB,UAAA,gBAAA,GAU7B2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,eAECssB,GAAA5uB,UAAA,gBAAA,GAUd2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,eAEKssB,GAAA5uB,UAAA,gBAAA,GAOlB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMX,QACNc,SAAS,EACTJ,UAAW,yBAEcssB,GAAA5uB,UAAA,yBAAA,GAO3B2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,yBAEmBssB,GAAA5uB,UAAA,yBAAA,GAUhC2Q,EAAA,CALCW,GAAS,CACR/O,KAAMX,QACNc,SAAS,EACTJ,UAAW,iBAEIssB,GAAA5uB,UAAA,gBAAA,GASjB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,sBAEUssB,GAAA5uB,UAAA,sBAAA,GAOvB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,mBAEOssB,GAAA5uB,UAAA,mBAAA,GAOpB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,oBAEQssB,GAAA5uB,UAAA,oBAAA,GAOrB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,mBAEQssB,GAAA5uB,UAAA,oBAAA,GAOrB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,uBAEWssB,GAAA5uB,UAAA,uBAAA,GAOxB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,sBAEWssB,GAAA5uB,UAAA,uBAAA,GAOxB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,qBAEUssB,GAAA5uB,UAAA,sBAAA,GAOvB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,YAECssB,GAAA5uB,UAAA,aAAA,GAOd2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,YAECssB,GAAA5uB,UAAA,aAAA,GAOd2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,qBAESssB,GAAA5uB,UAAA,qBAAA,GAOtB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,wBAEYssB,GAAA5uB,UAAA,wBAAA,GAczB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,0BAEassB,GAAA5uB,UAAA,yBAAA,GAO1B2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,wBAEWssB,GAAA5uB,UAAA,uBAAA,GAOxB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,0BAEassB,GAAA5uB,UAAA,yBAAA,GAO1B2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,wBAEWssB,GAAA5uB,UAAA,uBAAA,GAOxB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,gBAEKssB,GAAA5uB,UAAA,iBAAA,GAOlB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,kBAEOssB,GAAA5uB,UAAA,mBAAA,GAOpB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,cAEGssB,GAAA5uB,UAAA,eAAA,GAOhB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,cAEGssB,GAAA5uB,UAAA,eAAA,GAOhB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,kBAEUssB,GAAA5uB,UAAA,mBAAA,GAOvB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,gBAEQssB,GAAA5uB,UAAA,iBAAA,GAOrB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,wBAEassB,GAAA5uB,UAAA,yBAAA,GAO1B2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,gBAEKssB,GAAA5uB,UAAA,iBAAA,GAOlB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,sBAEUssB,GAAA5uB,UAAA,sBAAA,GAcvB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,iBAEMssB,GAAA5uB,UAAA,kBAAA,GAOnB2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,kBAEOssB,GAAA5uB,UAAA,mBAAA,GAKpB2Q,EAAA,CAHCW,GAAS,CACR/O,KAAMV,UAEgD+sB,GAAA5uB,UAAA,mBAAA,GAE/C2Q,EAAA,CAAR9M,MAAqC+qB,GAAA5uB,UAAA,4BAAA,GA0Z7B2Q,EAAA,CAAR9M,MAA8B+qB,GAAA5uB,UAAA,qBAAA,GAsDtB2Q,EAAA,CAAR9M,MAAkC+qB,GAAA5uB,UAAA,yBAAA,GA5uBxB4uB,GAAWje,EAAA,CADvBC,GAAc,iBACFge,IE1Db,IAAe9d,GAAAA,CAAG;;;;;;;;;;;;;;;;;;;;wgCC4CX,IAAM0jB,GAAN,cAA+B9jB,GAA/BnQ,kCAELC,KAAAyd,OAAS,IAAIvE,GAAiBlZ,MA+D9BA,KAAQi0B,SAAG,MA+MZ,CAjLC3tB,oBACEhE,MAAMgE,oBACNtG,KAAKk0B,QAAUl0B,KAAKyd,OAAOzD,MAAM,OAClC,CAEDma,WACE3e,EACArK,EACAipB,EACA/c,EAAU,UAGV,GADA+c,EAAUA,GAAW,KACjB5e,EAAK,CACP,GAAa,UAATrK,EACF,OAAOuF,CAAI;;oBAEC8E;;0BAEMxV,KAAKq0B,iBAAiBD,KAAWp0B,KAC5Cs0B;oCACqBt0B,KAAKu0B,gBACzB,GACA;;;wBAGQld;qBACHlM;qBACAnL,KAAKi0B;;cAEZG,EAAU1jB,CAAI,2BAA2B0jB,WAAmB;cAC5DA,EAAUp0B,KAAKw0B,wBAA0B;;eAIjD,MAAMC,EAAStpB,EAAK0J,QAAQ,YAAa,IACzC,OAAOnE,CAAI;;kBAEC8E;;wBAEMxV,KAAKq0B,iBAA4B,aAAXI,EAChC,QACAA,KAAUz0B,KAAKs0B;kCACKt0B,KAAKu0B,gBACzB,GACA;;;sBAGQld;mBACHlM;mBACAnL,KAAKi0B;;YAEZG,EAAU1jB,CAAI,2BAA2B0jB,WAAmB;YAC5DA,EAAUp0B,KAAKw0B,wBAA0B;;YAGhD,CAGF,CAED1lB,SACE,MAAM4lB,EAAmB,CACvB,0BAA0B,EAC1B,gBAAiB10B,KAAK20B,aACtBC,MAAS50B,KAAK60B,YAGVC,EAAc,CAClB,mBAAmB,EACnBF,MAAS50B,KAAK60B,YAGhB,OAAOnkB,CAAI;QACP1Q,KAAK+0B;oBACOpc,GAAS+b;UACnB10B,KAAKg1B;sBACOrc,GAASmc;uBACR90B,KAAKi1B;cACdj1B,KAAKk1B,SACHxkB,CAAI,GAAG1Q,KAAKm0B,WACV,gDACEn0B,KAAKk1B,SACP;kBAEAl1B,KAAKm0B,WACL,wCAA0Cn0B,KAAKk1B,SAC/C;kBAEAl1B,KAAKm0B,WACL,uDACEn0B,KAAKk1B,SACP;kBAEAl1B,KAAKm1B,OACHn1B,KAAKm0B,WAAW,UAAYn0B,KAAKm1B,OAAQ,gBACzC,OACJzkB,CAAI;oBACA1Q,KAAKm0B,WACLn0B,KAAKo1B,OACL,eACAp1B,KAAKq1B;oBAELr1B,KAAKm0B,WACLn0B,KAAKs1B,OACL,cACAt1B,KAAKu1B;oBAELv1B,KAAKm0B,WACLn0B,KAAKw1B,OACL,eACAx1B,KAAKy1B;oBAELz1B,KAAKm0B,WACLn0B,KAAK01B,OACL,gBACA11B,KAAK21B;oBAEL31B,KAAKm0B,WACLn0B,KAAK41B,OACL,cACA51B,KAAK61B;oBAEL71B,KAAKm0B,WACLn0B,KAAK81B,QACL,gBACA91B,KAAK+1B;oBAEL/1B,KAAKm0B,WACLn0B,KAAKg2B,YACL,cACAh2B,KAAKi2B;oBAELj2B,KAAKm0B,WAAWn0B,KAAKk2B,QAAS,QAASl2B,KAAKm2B;;;;;KAM7D,CAMD3B,wBACE,OAAO9jB,CAAI;;YAGZ,CAMDskB,eACE,IAAKh1B,KAAKk0B,QAAS,OAAO,KAE1B,MAAMkC,EAAmB,CACvBC,WAAW,EACXzB,MAAO50B,KAAK60B,YAGd,OAAOnkB,CAAI;;;UAGL1Q,KAAK20B,aACHjkB,CAAI,cAAciI,GAASyd,SAC3B;;KAGT,CAEDrB,iBACE,OAAK/0B,KAAKs2B,WAEH5lB,CAAI,kCAAkC1Q,KAAKs2B,oBAFrB,IAG9B,GA9QMtC,GAAA3vB,OAAyB,CAACwM,IAIjCV,EAAA,CADCW,GAAS,CAAE/O,KAAMX,QAASU,UAAW,2BACfkyB,GAAAx0B,UAAA,uBAAA,GAGvB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,aACtBkyB,GAAAx0B,UAAA,cAAA,GAGf2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,aACtBkyB,GAAAx0B,UAAA,cAAA,GAGf2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,aACtBkyB,GAAAx0B,UAAA,cAAA,GAGf2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,aACtBkyB,GAAAx0B,UAAA,cAAA,GAGf2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,aACtBkyB,GAAAx0B,UAAA,cAAA,GAGf2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,cACrBkyB,GAAAx0B,UAAA,eAAA,GAGhB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,cACjBkyB,GAAAx0B,UAAA,mBAAA,GAGpB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,cACrBkyB,GAAAx0B,UAAA,eAAA,GAGhB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,sBACbkyB,GAAAx0B,UAAA,uBAAA,GAGxB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,qBACdkyB,GAAAx0B,UAAA,sBAAA,GAGvB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,sBACbkyB,GAAAx0B,UAAA,uBAAA,GAGxB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,qBACdkyB,GAAAx0B,UAAA,sBAAA,GAGvB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,uBACZkyB,GAAAx0B,UAAA,wBAAA,GAGzB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,sBACbkyB,GAAAx0B,UAAA,uBAAA,GAGxB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,uBACZkyB,GAAAx0B,UAAA,wBAAA,GAGzB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,cACrBkyB,GAAAx0B,UAAA,eAAA,GAGhB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,oBACpBkyB,GAAAx0B,UAAA,gBAAA,GAGjB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,wBACfkyB,GAAAx0B,UAAA,qBAAA,GAGtB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,iBAClBkyB,GAAAx0B,UAAA,kBAAA,GAGnB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,eACnBkyB,GAAAx0B,UAAA,gBAAA,GAGlB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMX,QAASU,UAAW,mBAChBkyB,GAAAx0B,UAAA,oBAAA,GAGtB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMX,QAASU,UAAW,iBAClBkyB,GAAAx0B,UAAA,kBAAA,GAGpB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,mBAChBkyB,GAAAx0B,UAAA,oBAAA,GAOrB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,uBACbkyB,GAAAx0B,UAAA,uBAAA,GAGxB2Q,EAAA,CADCW,GAAS,CAAE/O,KAAMC,OAAQF,UAAW,aACtBkyB,GAAAx0B,UAAA,cAAA,GAOf2Q,EAAA,CALCW,GAAS,CACR/O,KAAMC,OACNE,SAAS,EACTJ,UAAW,mBAEqBkyB,GAAAx0B,UAAA,oBAAA,GAEzB2Q,EAAA,CAAR9M,MAAyB2wB,GAAAx0B,UAAA,eAAA,GA7Ffw0B,GAAgB7jB,EAAA,CAD5BC,GAAc,uBACF4jB,IC5Cb,IAAe1jB,GAAAA,CAAG;;;;;;;;;;;;;;;;;;;;+8CCqBX,IAAMimB,GAAN,cAA0BrmB,GAA1BnQ,kCACLC,KAAAyd,OAAS,IAAIvE,GAAiBlZ,MAC9BA,KAAA8qB,iBAAmB,IAAIhD,GAAiB9nB,KAAM,CAC5CkoB,YAAa,CAAC,IAAK,OA8CtB,CA1CCpZ,SACE,MAAM4lB,EAAmB,CACvB,oBAAoB,EACpBjE,OAA2D,IAAjDzwB,KAAK8qB,iBAAiBpB,uBAChC8M,OAA2D,IAAjDx2B,KAAK8qB,iBAAiBpB,uBAChC+M,MAA0D,IAAjDz2B,KAAK8qB,iBAAiBpB,wBAEjC,OAAOhZ,CAAI;;;;+BAKL,IADqB1Q,KAAK8qB,iBAAiBpB,uBAEvC,cACA;;;;wBAIU/Q,GAAS+b;cACnB10B,KAAKyd,OAAOJ,kBAAkB;;;;;oBAKxBrd,KAAKyd,OAAOJ,kBAAkB;oBAC9Brd,KAAKyd,OAAOJ,kBAAkB;;;oBAG9Brd,KAAKyd,OAAOJ,kBAAkB;;sBAE5Brd,KAAKyd,OAAOJ,kBAAkB;sBAC9Brd,KAAKyd,OAAOJ,kBAAkB;;;;gBAIpCrd,KAAKyd,OAAOJ,kBAAkB;;;;;KAM3C,GA3CMkZ,GAAAlyB,OAAS,CAACwM,IALN0lB,GAAWpmB,EAAA,CADvBC,GAAc,iBACFmmB"}