lighthouse 13.5.0-dev.20261021 → 13.5.0-dev.20261023

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2800,7 +2800,7 @@ details[open] .lh-clump-toggletext--hide { display: block;}
2800
2800
  }
2801
2801
  }
2802
2802
  `),e.append(t);let n=r.createElement("div","lh-topbar"),o=r.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");o.setAttribute("role","img"),o.setAttribute("title","Lighthouse logo"),o.setAttribute("fill","none"),o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.setAttribute("viewBox","0 0 48 48");let i=r.createElementNS("http://www.w3.org/2000/svg","path");i.setAttribute("d","m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z"),i.setAttribute("fill","#F63");let a=r.createElementNS("http://www.w3.org/2000/svg","path");a.setAttribute("d","M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z"),a.setAttribute("fill","#FFA385");let l=r.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("fill","#FF3"),l.setAttribute("d","M20.5 10h7v7h-7z"),o.append(" ",i," ",a," ",l," ");let s=r.createElement("a","lh-topbar__url");s.setAttribute("href",""),s.setAttribute("target","_blank"),s.setAttribute("rel","noopener");let c=r.createElement("div","lh-tools"),d=r.createElement("div","lh-tools-locale lh-hidden"),h=r.createElement("button","lh-button lh-tool-locale__button");h.setAttribute("id","lh-button__swap-locales"),h.setAttribute("title","Show Language Picker"),h.setAttribute("aria-label","Toggle language picker"),h.setAttribute("aria-haspopup","menu"),h.setAttribute("aria-expanded","false"),h.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");let p=r.createElementNS("http://www.w3.org/2000/svg","svg");p.setAttribute("width","20px"),p.setAttribute("height","20px"),p.setAttribute("viewBox","0 0 24 24"),p.setAttribute("fill","currentColor");let g=r.createElementNS("http://www.w3.org/2000/svg","path");g.setAttribute("d","M0 0h24v24H0V0z"),g.setAttribute("fill","none");let b=r.createElementNS("http://www.w3.org/2000/svg","path");b.setAttribute("d","M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"),p.append(g,b),h.append(" ",p," ");let w=r.createElement("div","lh-tools-locale__selector-wrapper");w.setAttribute("id","lh-tools-locale__selector-wrapper"),w.setAttribute("role","menu"),w.setAttribute("aria-labelledby","lh-button__swap-locales"),w.setAttribute("aria-hidden","true"),w.append(" "," "),d.append(" ",h," ",w," ");let f=r.createElement("button","lh-tools__button");f.setAttribute("id","lh-tools-button"),f.setAttribute("title","Tools menu"),f.setAttribute("aria-label","Toggle report tools menu"),f.setAttribute("aria-haspopup","menu"),f.setAttribute("aria-expanded","false"),f.setAttribute("aria-controls","lh-tools-dropdown");let u=r.createElementNS("http://www.w3.org/2000/svg","svg");u.setAttribute("width","100%"),u.setAttribute("height","100%"),u.setAttribute("viewBox","0 0 24 24");let v=r.createElementNS("http://www.w3.org/2000/svg","path");v.setAttribute("d","M0 0h24v24H0z"),v.setAttribute("fill","none");let _=r.createElementNS("http://www.w3.org/2000/svg","path");_.setAttribute("d","M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"),u.append(" ",v," ",_," "),f.append(" ",u," ");let x=r.createElement("div","lh-tools__dropdown");x.setAttribute("id","lh-tools-dropdown"),x.setAttribute("role","menu"),x.setAttribute("aria-labelledby","lh-tools-button");let L=r.createElement("a","lh-report-icon lh-report-icon--print");L.setAttribute("role","menuitem"),L.setAttribute("tabindex","-1"),L.setAttribute("href","#"),L.setAttribute("data-i18n","dropdownPrintSummary"),L.setAttribute("data-action","print-summary");let S=r.createElement("a","lh-report-icon lh-report-icon--print");S.setAttribute("role","menuitem"),S.setAttribute("tabindex","-1"),S.setAttribute("href","#"),S.setAttribute("data-i18n","dropdownPrintExpanded"),S.setAttribute("data-action","print-expanded");let A=r.createElement("a","lh-report-icon lh-report-icon--copy");A.setAttribute("role","menuitem"),A.setAttribute("tabindex","-1"),A.setAttribute("href","#"),A.setAttribute("data-i18n","dropdownCopyJSON"),A.setAttribute("data-action","copy");let z=r.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");z.setAttribute("role","menuitem"),z.setAttribute("tabindex","-1"),z.setAttribute("href","#"),z.setAttribute("data-i18n","dropdownSaveHTML"),z.setAttribute("data-action","save-html");let V=r.createElement("a","lh-report-icon lh-report-icon--download");V.setAttribute("role","menuitem"),V.setAttribute("tabindex","-1"),V.setAttribute("href","#"),V.setAttribute("data-i18n","dropdownSaveJSON"),V.setAttribute("data-action","save-json");let N=r.createElement("a","lh-report-icon lh-report-icon--open");N.setAttribute("role","menuitem"),N.setAttribute("tabindex","-1"),N.setAttribute("href","#"),N.setAttribute("data-i18n","dropdownViewer"),N.setAttribute("data-action","open-viewer");let I=r.createElement("a","lh-report-icon lh-report-icon--open");I.setAttribute("role","menuitem"),I.setAttribute("tabindex","-1"),I.setAttribute("href","#"),I.setAttribute("data-i18n","dropdownSaveGist"),I.setAttribute("data-action","save-gist");let P=r.createElement("a","lh-report-icon lh-report-icon--open lh-hidden");P.setAttribute("role","menuitem"),P.setAttribute("tabindex","-1"),P.setAttribute("href","#"),P.setAttribute("data-i18n","dropdownViewUnthrottledTrace"),P.setAttribute("data-action","view-unthrottled-trace");let H=r.createElement("a","lh-report-icon lh-report-icon--dark");return H.setAttribute("role","menuitem"),H.setAttribute("tabindex","-1"),H.setAttribute("href","#"),H.setAttribute("data-i18n","dropdownDarkTheme"),H.setAttribute("data-action","toggle-dark"),x.append(" ",L," ",S," ",A," "," ",z," ",V," ",N," ",I," "," ",P," ",H," "),c.append(" ",d," ",f," ",x," "),n.append(" "," ",o," ",s," ",c," "),e.append(n),e}function ct(r){let e=r.createFragment(),t=r.createElement("div","lh-warnings lh-warnings--toplevel"),n=r.createElement("p","lh-warnings__msg"),o=r.createElement("ul");return t.append(" ",n," ",o," "),e.append(t),e}function ve(r,e){switch(e){case"3pFilter":return $e(r);case"audit":return Ve(r);case"categoryHeader":return Ge(r);case"chevron":return Be(r);case"clump":return qe(r);case"crc":return je(r);case"crcChain":return We(r);case"elementScreenshot":return Ke(r);case"explodeyGauge":return Ze(r);case"footer":return Je(r);case"fraction":return Qe(r);case"gauge":return Xe(r);case"heading":return Ye(r);case"metric":return et(r);case"scorescale":return tt(r);case"scoresWrapper":return nt(r);case"snippet":return rt(r);case"snippetContent":return ot(r);case"snippetHeader":return it(r);case"snippetLine":return at(r);case"styles":return lt(r);case"topbar":return st(r);case"warningsToplevel":return ct(r)}throw new Error("unexpected component: "+e)}var Q=class{constructor(e,t){this._document=e,this._lighthouseChannel="unknown",this._componentCache=new Map,this.rootEl=t}createElement(e,t){let n=this._document.createElement(e);if(t)for(let o of t.split(/\s+/))o&&n.classList.add(o);return n}createElementNS(e,t,n){let o=this._document.createElementNS(e,t);if(n)for(let i of n.split(/\s+/))i&&o.classList.add(i);return o}createSVGElement(e,t){return this._document.createElementNS("http://www.w3.org/2000/svg",e,t)}createFragment(){return this._document.createDocumentFragment()}createTextNode(e){return this._document.createTextNode(e)}createChildOf(e,t,n){let o=this.createElement(t,n);return e.append(o),o}createComponent(e){let t=this._componentCache.get(e);if(t){let o=t.cloneNode(!0);return this.findAll("style",o).forEach(i=>i.remove()),o}return t=ve(this,e),this._componentCache.set(e,t),t.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(e,t={}){let n=this.createElement("span");for(let o of E.splitMarkdownLink(e)){let i=o.text.includes("`")?this.convertMarkdownCodeSnippets(o.text):o.text;if(!o.isLink){n.append(i);continue}let a=new URL(o.linkHref);(["https://developers.google.com","https://web.dev","https://developer.chrome.com"].includes(a.origin)||t.alwaysAppendUtmSource)&&(a.searchParams.set("utm_source","lighthouse"),a.searchParams.set("utm_medium",this._lighthouseChannel));let s=this.createElement("a");s.rel="noopener",s.target="_blank",s.append(i),this.safelySetHref(s,a.href),n.append(s)}return n}safelySetHref(e,t){if(t=t||"",t.startsWith("#")){e.href=t;return}let n=["https:","http:"],o;try{o=new URL(t)}catch{}o&&n.includes(o.protocol)&&(e.href=o.href)}safelySetBlobHref(e,t){if(t.type!=="text/html"&&t.type!=="application/json")throw new Error("Unsupported blob type");let n=URL.createObjectURL(t);e.href=n}convertMarkdownCodeSnippets(e){let t=this.createElement("span");for(let n of E.splitMarkdownCodeSpans(e))if(n.isCode){let o=this.createElement("code");o.textContent=n.text,t.append(o)}else t.append(this._document.createTextNode(n.text));return t}setLighthouseChannel(e){this._lighthouseChannel=e}document(){return this._document}isDevTools(){return!!this._document.querySelector(".lh-devtools")}find(e,t=this.rootEl??this._document){let n=this.maybeFind(e,t);if(n===null)throw new Error(`query ${e} not found`);return n}maybeFind(e,t=this.rootEl??this._document){return t.querySelector(e)}findAll(e,t){return Array.from(t.querySelectorAll(e))}fireEventOn(e,t=this._document,n){let o=new CustomEvent(e,n?{detail:n}:void 0);t.dispatchEvent(o)}saveFile(e,t){let n=this.createElement("a");n.download=t,this.safelySetBlobHref(n,e),this._document.body.append(n),n.click(),this._document.body.removeChild(n),setTimeout(()=>URL.revokeObjectURL(n.href),500)}};var be=0,m=class r{static i18n=null;static strings={};static reportJson=null;static apply(e){r.strings={..._e,...e.providedStrings},r.i18n=e.i18n,r.reportJson=e.reportJson}static getUniqueSuffix(){return be++}static resetUniqueSuffix(){be=0}};var we="data:image/jpeg;base64,";function ye(r){r.configSettings.locale||(r.configSettings.locale="en"),r.configSettings.formFactor||(r.configSettings.formFactor=r.configSettings.emulatedFormFactor),r.finalDisplayedUrl=E.getFinalDisplayedUrl(r),r.mainDocumentUrl=E.getMainDocumentUrl(r);for(let n of Object.values(r.audits))if((n.scoreDisplayMode==="not_applicable"||n.scoreDisplayMode==="not-applicable")&&(n.scoreDisplayMode="notApplicable"),n.scoreDisplayMode==="informative"&&(n.score=1),n.details){if((n.details.type===void 0||n.details.type==="diagnostic")&&(n.details.type="debugdata"),n.details.type==="filmstrip")for(let o of n.details.items)o.data.startsWith(we)||(o.data=we+o.data);if(n.details.type==="table")for(let o of n.details.headings){let{itemType:i,text:a}=o;i!==void 0&&(o.valueType=i,delete o.itemType),a!==void 0&&(o.label=a,delete o.text);let l=o.subItemsHeading?.itemType;o.subItemsHeading&&l!==void 0&&(o.subItemsHeading.valueType=l,delete o.subItemsHeading.itemType)}if(n.id==="third-party-summary"&&(n.details.type==="opportunity"||n.details.type==="table")){let{headings:o,items:i}=n.details;if(o[0].valueType==="link"){o[0].valueType="text";for(let a of i)typeof a.entity=="object"&&a.entity.type==="link"&&(a.entity=a.entity.text);n.details.isEntityGrouped=!0}}}let[e]=r.lighthouseVersion.split(".").map(Number),t=r.categories.performance;if(t){if(e<9){r.categoryGroups||(r.categoryGroups={}),r.categoryGroups.hidden={title:""};for(let n of t.auditRefs)n.group?n.group==="load-opportunities"&&(n.group="diagnostics"):n.group="hidden"}else if(e<12)for(let n of t.auditRefs)n.group||(n.group="diagnostics")}if(e<12&&t){let n=new Map;for(let o of t.auditRefs){let i=o.relevantAudits;if(!(!i||!o.acronym))for(let a of i){let l=n.get(a)||[];l.push(o.acronym),n.set(a,l)}}for(let[o,i]of n){if(!i.length)continue;let a=r.audits[o];if(a&&!a.metricSavings){a.metricSavings={};for(let l of i)a.metricSavings[l]=0}}}if(r.environment||(r.environment={benchmarkIndex:0,networkUserAgent:r.userAgent,hostUserAgent:r.userAgent}),r.configSettings.screenEmulation||(r.configSettings.screenEmulation={width:-1,height:-1,deviceScaleFactor:-1,mobile:/mobile/i.test(r.environment.hostUserAgent),disabled:!1}),r.i18n||(r.i18n={}),r.audits["full-page-screenshot"]){let n=r.audits["full-page-screenshot"].details;n?r.fullPageScreenshot={screenshot:n.screenshot,nodes:n.nodes}:r.fullPageScreenshot=null,delete r.audits["full-page-screenshot"]}}var $=E.RATINGS,k=class r{static prepareReportResult(e){let t=JSON.parse(JSON.stringify(e));ye(t);for(let o of Object.values(t.audits))o.details&&(o.details.type==="opportunity"||o.details.type==="table")&&!o.details.isEntityGrouped&&t.entities&&r.classifyEntities(t.entities,o.details);if(typeof t.categories!="object")throw new Error("No categories provided.");let n=new Map;for(let o of Object.values(t.categories))o.auditRefs.forEach(i=>{i.acronym&&n.set(i.acronym,i)}),o.auditRefs.forEach(i=>{let a=t.audits[i.id];i.result=a;let l=Object.keys(i.result.metricSavings||{});if(l.length){i.relevantMetrics=[];for(let s of l){let c=n.get(s);c&&i.relevantMetrics.push(c)}}if(t.stackPacks){let s=[i.id,...i.result.replacesAudits??[]];t.stackPacks.forEach(c=>{let d=s.find(h=>c.descriptions[h]);d&&c.descriptions[d]&&(i.stackPacks=i.stackPacks||[],i.stackPacks.push({title:c.title,iconDataURL:c.iconDataURL,description:c.descriptions[d]}))})}});return t}static getUrlLocatorFn(e){let t=e.find(o=>o.valueType==="url")?.key;if(t&&typeof t=="string")return o=>{let i=o[t];if(typeof i=="string")return i};let n=e.find(o=>o.valueType==="source-location")?.key;if(n)return o=>{let i=o[n];if(typeof i=="object"&&i.type==="source-location")return i.url}}static classifyEntities(e,t){let{items:n,headings:o}=t;if(!n.length||n.some(a=>a.entity))return;let i=r.getUrlLocatorFn(o);if(i)for(let a of n){let l=i(a);if(!l)continue;let s="";try{s=E.parseURL(l).origin}catch{}if(!s)continue;let c=e.find(d=>d.origins.includes(s));c&&(a.entity=c.name)}}static getTableItemSortComparator(e){return(t,n)=>{for(let o of e){let i=t[o],a=n[o];if((typeof i!=typeof a||!["number","string"].includes(typeof i))&&console.warn(`Warning: Attempting to sort unsupported value type: ${o}.`),typeof i=="number"&&typeof a=="number"&&i!==a)return a-i;if(typeof i=="string"&&typeof a=="string"&&i!==a)return i.localeCompare(a)}return 0}}static getEmulationDescriptions(e){let t,n,o,i=e.throttling,a=m.i18n,l=m.strings;switch(e.throttlingMethod){case"provided":o=n=t=l.throttlingProvided;break;case"devtools":{let{cpuSlowdownMultiplier:p,requestLatencyMs:g}=i;t=`${a.formatNumber(p)}x slowdown (DevTools)`,n=`${a.formatMilliseconds(g)} HTTP RTT, ${a.formatKbps(i.downloadThroughputKbps)} down, ${a.formatKbps(i.uploadThroughputKbps)} up (DevTools)`,o=g===150*3.75&&i.downloadThroughputKbps===1.6*1024*.9&&i.uploadThroughputKbps===750*.9?l.runtimeSlow4g:l.runtimeCustom;break}case"simulate":{let{cpuSlowdownMultiplier:p,rttMs:g,throughputKbps:b}=i;t=`${a.formatNumber(p)}x slowdown (Simulated)`,n=`${a.formatMilliseconds(g)} TCP RTT, ${a.formatKbps(b)} throughput (Simulated)`,o=g===150&&b===1.6*1024?l.runtimeSlow4g:l.runtimeCustom;break}default:o=t=n=l.runtimeUnknown}let s=e.channel==="devtools"?!1:e.screenEmulation.disabled,c=e.channel==="devtools"?e.formFactor==="mobile":e.screenEmulation.mobile,d=l.runtimeMobileEmulation;s?d=l.runtimeNoEmulation:c||(d=l.runtimeDesktopEmulation);let h=s?void 0:`${e.screenEmulation.width}x${e.screenEmulation.height}, DPR ${e.screenEmulation.deviceScaleFactor}`;return{deviceEmulation:d,screenEmulation:h,cpuThrottling:t,networkThrottling:n,summary:o}}static showAsPassed(e){switch(e.scoreDisplayMode){case"manual":case"notApplicable":return!0;case"error":case"informative":return!1;default:return Number(e.score)>=$.PASS.minScore}}static calculateRating(e,t){if(t==="manual"||t==="notApplicable")return $.PASS.label;if(t==="error")return $.ERROR.label;if(e===null)return $.FAIL.label;let n=$.FAIL.label;return e>=$.PASS.minScore?n=$.PASS.label:e>=$.AVERAGE.minScore&&(n=$.AVERAGE.label),n}static calculateCategoryFraction(e){let t=0,n=0,o=0,i=0;for(let a of e.auditRefs){let l=r.showAsPassed(a.result);if(!(a.group==="hidden"||a.result.scoreDisplayMode==="manual"||a.result.scoreDisplayMode==="notApplicable")){if(a.result.scoreDisplayMode==="informative"){l||++o;continue}++t,i+=a.weight,l&&n++}}return{numPassed:n,numPassableAudits:t,numInformative:o,totalWeight:i}}static isPluginCategory(e){return E.isPluginCategory(e)}static shouldDisplayAsFraction(e,t){return e==="timespan"||e==="snapshot"||t?.categoryScoreDisplayMode==="fraction"}},_e={varianceDisclaimer:"Values are estimated and may vary. The [performance score is calculated](https://developer.chrome.com/docs/lighthouse/performance/performance-scoring/) directly from these metrics.",calculatorLink:"See calculator.",showRelevantAudits:"Show audits relevant to:",opportunityResourceColumnLabel:"Opportunity",opportunitySavingsColumnLabel:"Estimated Savings",errorMissingAuditInfo:"Report error: no audit information",errorLabel:"Error!",warningHeader:"Warnings: ",warningAuditsGroupTitle:"Passed audits but with warnings",passedAuditsGroupTitle:"Passed audits",notApplicableAuditsGroupTitle:"Not applicable",manualAuditsGroupTitle:"Additional items to manually check",toplevelWarningsMessage:"There were issues affecting this run of Lighthouse:",crcInitialNavigation:"Initial Navigation",crcLongestDurationLabel:"Maximum critical path latency:",snippetExpandButtonLabel:"Expand snippet",snippetCollapseButtonLabel:"Collapse snippet",lsPerformanceCategoryDescription:"[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysis of the current page on an emulated mobile network. Values are estimated and may vary.",labDataTitle:"Lab Data",thirdPartyResourcesLabel:"Show 3rd-party resources",viewTreemapLabel:"View Treemap",viewTraceLabel:"View Trace",dropdownPrintSummary:"Print Summary",dropdownPrintExpanded:"Print Expanded",dropdownCopyJSON:"Copy JSON",dropdownSaveHTML:"Save as HTML",dropdownSaveJSON:"Save as JSON",dropdownViewer:"Open in Viewer",dropdownSaveGist:"Save as Gist",dropdownDarkTheme:"Toggle Dark Theme",dropdownViewUnthrottledTrace:"View Unthrottled Trace",runtimeSettingsDevice:"Device",runtimeSettingsNetworkThrottling:"Network throttling",runtimeSettingsCPUThrottling:"CPU throttling",runtimeSettingsUANetwork:"User agent (network)",runtimeSettingsBenchmark:"Unthrottled CPU/Memory Power",runtimeSettingsAxeVersion:"Axe version",runtimeSettingsScreenEmulation:"Screen emulation",footerIssue:"File an issue",runtimeNoEmulation:"No emulation",runtimeMobileEmulation:"Emulated Moto G Power",runtimeDesktopEmulation:"Emulated Desktop",runtimeUnknown:"Unknown",runtimeSingleLoad:"Single page session",runtimeAnalysisWindow:"Initial page load",runtimeAnalysisWindowTimespan:"User interactions timespan",runtimeAnalysisWindowSnapshot:"Point-in-time snapshot",runtimeSingleLoadTooltip:"This data is taken from a single page session, as opposed to field data summarizing many sessions.",throttlingProvided:"Provided by environment",show:"Show",hide:"Hide",expandView:"Expand view",collapseView:"Collapse view",runtimeSlow4g:"Slow 4G throttling",runtimeCustom:"Custom throttling",firstPartyChipLabel:"1st party",openInANewTabTooltip:"Open in a new tab",unattributable:"Unattributable",unscoredLabel:"Unscored",unscoredTitle:"This audit does not contribute to the overall category score."};var B=class{constructor(e,t){this.dom=e,this.detailsRenderer=t}get _clumpTitles(){return{warning:m.strings.warningAuditsGroupTitle,manual:m.strings.manualAuditsGroupTitle,passed:m.strings.passedAuditsGroupTitle,notApplicable:m.strings.notApplicableAuditsGroupTitle}}renderAudit(e){let t=m.strings,n=this.dom.createComponent("audit"),o=this.dom.find("div.lh-audit",n);o.id=e.result.id;let i=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",o).textContent=e.result.displayValue);let a=this.dom.find(".lh-audit__title",o);a.append(this.dom.convertMarkdownCodeSnippets(e.result.title));let l=this.dom.find(".lh-audit__description",o);l.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(let p of e.relevantMetrics||[]){let g=this.dom.createChildOf(l,"span","lh-audit__adorn");g.title=`Relevant to ${p.result.title}`,g.textContent=p.acronym||p.id}if(e.weight===0){let p=this.dom.createChildOf(l,"span","lh-audit__adorn");p.title=m.strings.unscoredTitle,p.textContent=m.strings.unscoredLabel}e.stackPacks&&e.stackPacks.forEach(p=>{let g=this.dom.createElement("img","lh-audit__stackpack__img");g.src=p.iconDataURL,g.alt=p.title;let b=this.dom.convertMarkdownLinkSnippets(p.description,{alwaysAppendUtmSource:!0}),w=this.dom.createElement("div","lh-audit__stackpack");w.append(g,b),this.dom.find(".lh-audit__stackpacks",o).append(w)});let s=this.dom.find("details",o);if(e.result.details){let p=this.detailsRenderer.render(e.result.details);p&&(p.classList.add("lh-details"),s.append(p))}if(this.dom.find(".lh-chevron-container",o).append(this._createChevron()),this._setRatingClass(o,e.result.score,i),e.result.scoreDisplayMode==="error"){o.classList.add("lh-audit--error");let p=this.dom.find(".lh-audit__display-text",o);p.textContent=t.errorLabel,p.classList.add("lh-tooltip-boundary");let g=this.dom.createChildOf(p,"div","lh-tooltip lh-tooltip--error");g.textContent=e.result.errorMessage||t.errorMissingAuditInfo}else if(e.result.explanation){let p=this.dom.createChildOf(a,"div","lh-audit-explanation");p.textContent=e.result.explanation}let c=e.result.warnings;if(!c||c.length===0)return o;let d=this.dom.find("summary",s),h=this.dom.createChildOf(d,"div","lh-warnings");if(this.dom.createChildOf(h,"span").textContent=t.warningHeader,c.length===1)h.append(this.dom.createTextNode(c.join("")));else{let p=this.dom.createChildOf(h,"ul");for(let g of c){let b=this.dom.createChildOf(p,"li");b.textContent=g}}return o}injectFinalScreenshot(e,t,n){let o=t["final-screenshot"];if(!o||o.scoreDisplayMode==="error"||!o.details||o.details.type!=="screenshot")return null;let i=this.dom.createElement("img","lh-final-ss-image"),a=o.details.data;i.src=a,i.alt=o.title;let l=this.dom.find(".lh-category .lh-category-header",e),s=this.dom.createElement("div","lh-category-headercol"),c=this.dom.createElement("div","lh-category-headercol lh-category-headercol--separator"),d=this.dom.createElement("div","lh-category-headercol");s.append(...l.childNodes),s.append(n),d.append(i),l.append(s,c,d),l.classList.add("lh-category-header__finalscreenshot")}_createChevron(){let e=this.dom.createComponent("chevron");return this.dom.find("svg.lh-chevron",e)}_setRatingClass(e,t,n){let o=k.calculateRating(t,n);return e.classList.add(`lh-audit--${n.toLowerCase()}`),n!=="informative"&&e.classList.add(`lh-audit--${o}`),e}renderCategoryHeader(e,t,n){let o=this.dom.createComponent("categoryHeader"),i=this.dom.find(".lh-score__gauge",o),a=this.renderCategoryScore(e,t,n);if(i.append(a),e.description){let l=this.dom.convertMarkdownLinkSnippets(e.description);this.dom.find(".lh-category-header__description",o).append(l)}return o}renderAuditGroup(e){let t=this.dom.createElement("div","lh-audit-group"),n=this.dom.createElement("div","lh-audit-group__header");this.dom.createChildOf(n,"span","lh-audit-group__title").textContent=e.title,t.append(n);let o=null;return e.description&&(o=this.dom.convertMarkdownLinkSnippets(e.description),o.classList.add("lh-audit-group__description","lh-audit-group__footer"),t.append(o)),[t,o]}_renderGroupedAudits(e,t){let n=new Map,o="NotAGroup";n.set(o,[]);for(let a of e){let l=a.group||o,s=n.get(l)||[];s.push(a),n.set(l,s)}let i=[];for(let[a,l]of n){if(a===o){for(let h of l)i.push(this.renderAudit(h));continue}let s=t[a],[c,d]=this.renderAuditGroup(s);for(let h of l)c.insertBefore(this.renderAudit(h),d);c.classList.add(`lh-audit-group--${a}`),i.push(c)}return i}renderUnexpandableClump(e,t){let n=this.dom.createElement("div");return this._renderGroupedAudits(e,t).forEach(i=>n.append(i)),n}renderClump(e,{auditRefsOrEls:t,description:n,openByDefault:o}){let i=this.dom.createComponent("clump"),a=this.dom.find(".lh-clump",i);o&&a.setAttribute("open","");let l=this.dom.find(".lh-audit-group__header",a),s=this._clumpTitles[e];this.dom.find(".lh-audit-group__title",l).textContent=s;let c=this.dom.find(".lh-audit-group__itemcount",a);c.textContent=`(${t.length})`;let d=t.map(p=>p instanceof HTMLElement?p:this.renderAudit(p));a.append(...d);let h=this.dom.find(".lh-audit-group",i);if(n){let p=this.dom.convertMarkdownLinkSnippets(n);p.classList.add("lh-audit-group__description","lh-audit-group__footer"),h.append(p)}return this.dom.find(".lh-clump-toggletext--show",h).textContent=m.strings.show,this.dom.find(".lh-clump-toggletext--hide",h).textContent=m.strings.hide,a.classList.add(`lh-clump--${e.toLowerCase()}`),h}renderCategoryScore(e,t,n){let o;if(n&&k.shouldDisplayAsFraction(n.gatherMode,e)?o=this.renderCategoryFraction(e):o=this.renderScoreGauge(e,t),n?.omitLabel&&this.dom.find(".lh-gauge__label,.lh-fraction__label",o).remove(),n?.onPageAnchorRendered){let i=this.dom.find("a",o);n.onPageAnchorRendered(i)}return o}renderScoreGauge(e,t){let n=this.dom.createComponent("gauge"),o=this.dom.find("a.lh-gauge__wrapper",n);k.isPluginCategory(e.id)&&o.classList.add("lh-gauge__wrapper--plugin");let i=Number(e.score),a=this.dom.find(".lh-gauge",n),l=this.dom.find("circle.lh-gauge-arc",a);l&&this._setGaugeArc(l,i);let s=Math.round(i*100),c=this.dom.find("div.lh-gauge__percentage",n);return c.textContent=s.toString(),e.score===null&&(c.classList.add("lh-gauge--error"),c.textContent="",c.title=m.strings.errorLabel),e.auditRefs.length===0||this.hasApplicableAudits(e)?o.classList.add(`lh-gauge__wrapper--${k.calculateRating(e.score)}`):(o.classList.add("lh-gauge__wrapper--not-applicable"),c.textContent="-",c.title=m.strings.notApplicableAuditsGroupTitle),this.dom.find(".lh-gauge__label",n).textContent=e.title,n}renderCategoryFraction(e){let t=this.dom.createComponent("fraction"),n=this.dom.find("a.lh-fraction__wrapper",t),{numPassed:o,numPassableAudits:i,totalWeight:a}=k.calculateCategoryFraction(e),l=o/i,s=this.dom.find(".lh-fraction__content",t),c=this.dom.createElement("span");c.textContent=`${o}/${i}`,s.append(c);let d=k.calculateRating(l);return a===0&&(d="null"),n.classList.add(`lh-fraction__wrapper--${d}`),this.dom.find(".lh-fraction__label",t).textContent=e.title,t}hasApplicableAudits(e){return e.auditRefs.some(t=>t.result.scoreDisplayMode!=="notApplicable")}_setGaugeArc(e,t){let n=2*Math.PI*Number(e.getAttribute("r")),o=Number(e.getAttribute("stroke-width")),i=.25*o/n;e.style.transform=`rotate(${-90+i*360}deg)`;let a=t*n-o/2;t===0&&(e.style.opacity="0"),t===1&&(a=n),e.style.strokeDasharray=`${Math.max(a,0)} ${n}`}_auditHasWarning(e){return!!e.result.warnings?.length}_getClumpIdForAuditRef(e){let t=e.result.scoreDisplayMode;return t==="manual"||t==="notApplicable"?t:k.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,t={},n){let o=this.dom.createElement("div","lh-category");o.id=e.id,o.append(this.renderCategoryHeader(e,t,n));let i=new Map;i.set("failed",[]),i.set("warning",[]),i.set("manual",[]),i.set("passed",[]),i.set("notApplicable",[]);for(let l of e.auditRefs){if(l.group==="hidden")continue;let s=this._getClumpIdForAuditRef(l),c=i.get(s);c.push(l),i.set(s,c)}for(let l of i.values())l.sort((s,c)=>c.weight-s.weight);let a=i.get("failed")?.length;for(let[l,s]of i){if(s.length===0)continue;if(l==="failed"){let p=this.renderUnexpandableClump(s,t);p.classList.add("lh-clump--failed"),o.append(p);continue}let c=l==="manual"?e.manualDescription:void 0,d=l==="warning"||l==="manual"&&a===0,h=this.renderClump(l,{auditRefsOrEls:s,description:c,openByDefault:d});o.append(h)}return o}};var Y=class{static createSegment(e,t,n,o){let i=e[t],a=Object.keys(e),l=a.indexOf(t)===a.length-1,s=!!i.children&&Object.keys(i.children).length>0,c=Array.isArray(n)?n.slice(0):[];return typeof o<"u"&&c.push(!o),{node:i,isLastChild:l,hasChildren:s,treeMarkers:c}}static createChainNode(e,t,n){let o=e.createComponent("crcChain"),i,a,l,s,c;"request"in t.node?(a=t.node.request.transferSize,l=t.node.request.url,i=(t.node.request.endTime-t.node.request.startTime)*1e3,s=!1):(a=t.node.transferSize,l=t.node.url,i=t.node.navStartToEndTime,s=!0,c=t.node.isLongest);let d=e.find(".lh-crc-node",o);d.setAttribute("title",l),c&&d.classList.add("lh-crc-node__longest");let h=e.find(".lh-crc-node__tree-marker",o);t.treeMarkers.forEach(f=>{let u=f?"lh-tree-marker lh-vert":"lh-tree-marker";h.append(e.createElement("span",u),e.createElement("span","lh-tree-marker"))});let p=t.isLastChild?"lh-tree-marker lh-up-right":"lh-tree-marker lh-vert-right",g=t.hasChildren?"lh-tree-marker lh-horiz-down":"lh-tree-marker lh-right";h.append(e.createElement("span",p),e.createElement("span","lh-tree-marker lh-right"),e.createElement("span",g));let b=n.renderTextURL(l),w=e.find(".lh-crc-node__tree-value",o);if(w.append(b),!t.hasChildren||s){let f=e.createElement("span","lh-crc-node__chain-duration");f.textContent=" - "+m.i18n.formatMilliseconds(i)+", ";let u=e.createElement("span","lh-crc-node__chain-size");u.textContent=m.i18n.formatBytesToKiB(a,.01),w.append(f,u)}return o}static buildTree(e,t,n,o){if(n.append(X.createChainNode(e,t,o)),t.node.children)for(let i of Object.keys(t.node.children)){let a=X.createSegment(t.node.children,i,t.treeMarkers,t.isLastChild);X.buildTree(e,a,n,o)}}static render(e,t,n){let o=e.createComponent("crc"),i=e.find(".lh-crc",o);e.find(".lh-crc-initial-nav",o).textContent=m.strings.crcInitialNavigation,e.find(".lh-crc__longest_duration_label",o).textContent=m.strings.crcLongestDurationLabel,e.find(".lh-crc__longest_duration",o).textContent=m.i18n.formatMilliseconds(t.longestChain.duration);let a=t.chains;for(let l of Object.keys(a)){let s=X.createSegment(a,l);X.buildTree(e,s,i,n)}return e.find(".lh-crc-container",o)}},X=Y;function dt(r,e){return e.left<=r.width&&0<=e.right&&e.top<=r.height&&0<=e.bottom}function xe(r,e,t){return r<e?e:r>t?t:r}function ht(r){return{x:r.left+r.width/2,y:r.top+r.height/2}}var G=class r{static getScreenshotPositions(e,t,n){let o=ht(e),i=xe(o.x-t.width/2,0,n.width-t.width),a=xe(o.y-t.height/2,0,n.height-t.height);return{screenshot:{left:i,top:a},clip:{left:e.left-i,top:e.top-a}}}static renderClipPathInScreenshot(e,t,n,o,i){let a=e.find("clipPath",t),l=`clip-${m.getUniqueSuffix()}`;a.id=l,t.style.clipPath=`url(#${l})`;let s=n.top/i.height,c=s+o.height/i.height,d=n.left/i.width,h=d+o.width/i.width,p=[`0,0 1,0 1,${s} 0,${s}`,`0,${c} 1,${c} 1,1 0,1`,`0,${s} ${d},${s} ${d},${c} 0,${c}`,`${h},${s} 1,${s} 1,${c} ${h},${c}`];for(let g of p){let b=e.createElementNS("http://www.w3.org/2000/svg","polygon");b.setAttribute("points",g),a.append(b)}}static installFullPageScreenshot(e,t){e.style.setProperty("--element-screenshot-url",`url('${t.data}')`)}static installOverlayFeature(e){let{dom:t,rootEl:n,overlayContainerEl:o,fullPageScreenshot:i}=e,a="lh-screenshot-overlay--enabled";n.classList.contains(a)||(n.classList.add(a),n.addEventListener("click",l=>{let s=l.target;if(!s)return;let c=s.closest(".lh-node > .lh-element-screenshot");if(!c)return;let d=t.createElement("div","lh-element-screenshot__overlay");o.append(d);let h={width:d.clientWidth*.95,height:d.clientHeight*.8},p={width:Number(c.dataset.rectWidth),height:Number(c.dataset.rectHeight),left:Number(c.dataset.rectLeft),right:Number(c.dataset.rectLeft)+Number(c.dataset.rectWidth),top:Number(c.dataset.rectTop),bottom:Number(c.dataset.rectTop)+Number(c.dataset.rectHeight)},g=r.render(t,i.screenshot,p,h);if(!g){d.remove();return}d.append(g),d.addEventListener("click",()=>d.remove())}))}static _computeZoomFactor(e,t){let o={x:t.width/e.width,y:t.height/e.height},i=.75*Math.min(o.x,o.y);return Math.min(1,i)}static render(e,t,n,o){if(!dt(t,n))return null;let i=e.createComponent("elementScreenshot"),a=e.find("div.lh-element-screenshot",i);a.dataset.rectWidth=n.width.toString(),a.dataset.rectHeight=n.height.toString(),a.dataset.rectLeft=n.left.toString(),a.dataset.rectTop=n.top.toString();let l=this._computeZoomFactor(n,o),s={width:o.width/l,height:o.height/l};s.width=Math.min(t.width,s.width),s.height=Math.min(t.height,s.height);let c={width:s.width*l,height:s.height*l},d=r.getScreenshotPositions(n,s,{width:t.width,height:t.height}),h=e.find("div.lh-element-screenshot__image",a);h.style.width=c.width+"px",h.style.height=c.height+"px",h.style.backgroundPositionY=-(d.screenshot.top*l)+"px",h.style.backgroundPositionX=-(d.screenshot.left*l)+"px",h.style.backgroundSize=`${t.width*l}px ${t.height*l}px`;let p=e.find("div.lh-element-screenshot__element-marker",a);p.style.width=n.width*l+"px",p.style.height=n.height*l+"px",p.style.left=d.clip.left*l+"px",p.style.top=d.clip.top*l+"px";let g=e.find("div.lh-element-screenshot__mask",a);return g.style.width=c.width+"px",g.style.height=c.height+"px",r.renderClipPathInScreenshot(e,g,d.clip,n,s),a}};var pt=["http://","https://","data:"],ut=["bytes","numeric","ms","timespanMs"],ee=class{constructor(e,t={}){this._dom=e,this._fullPageScreenshot=t.fullPageScreenshot,this._entities=t.entities}render(e){switch(e.type){case"filmstrip":return this._renderFilmstrip(e);case"list":return this._renderList(e);case"checklist":return this._renderChecklist(e);case"table":case"opportunity":return this._renderTable(e);case"network-tree":case"criticalrequestchain":return Y.render(this._dom,e,this);case"screenshot":case"debugdata":case"treemap-data":return null;default:return this._renderUnknown(e.type,e)}}_renderBytes(e){let t=m.i18n.formatBytesToKiB(e.value,e.granularity||.1),n=this._renderText(t);return n.title=m.i18n.formatBytes(e.value),n}_renderMilliseconds(e){let t;return e.displayUnit==="duration"?t=m.i18n.formatDuration(e.value):t=m.i18n.formatMilliseconds(e.value,e.granularity||10),this._renderText(t)}renderTextURL(e){let t=e,n,o,i;try{let l=E.parseURL(t);n=l.file==="/"?l.origin:l.file,o=l.file==="/"||l.hostname===""?"":`(${l.hostname})`,i=t}catch{n=t}let a=this._dom.createElement("div","lh-text__url");if(a.append(this._createLink({text:n,url:t})),o){let l=this._renderText(o);l.classList.add("lh-text__url-host"),a.append(l)}return i&&(a.title=t,a.dataset.url=t),a}_renderLink(e){return this._createLink(e)}_createLink(e){let t=this._dom.createElement("a");if(this._dom.safelySetHref(t,e.url),!t.href){let n=this._renderText(e.text);return n.classList.add("lh-link"),n}return t.rel="noopener",t.target="_blank",t.textContent=e.text,t.classList.add("lh-link"),t}_renderText(e){let t=this._dom.createElement("div","lh-text");return t.textContent=e,t}_renderBaselineStatus(e){let t=this._dom.createElement("div","lh-baseline-status"),n=e.status;return t.classList.add(`lh-baseline-status--${n}`),t.textContent=String(e.displayString),t}_renderNumeric(e){let t=m.i18n.formatNumber(e.value,e.granularity||.1),n=this._dom.createElement("div","lh-numeric");return n.textContent=t,n}_renderThumbnail(e){let t=this._dom.createElement("img","lh-thumbnail"),n=e;return t.src=n,t.title=n,t.alt="",t}_renderUnknown(e,t){console.error(`Unknown details type: ${e}`,t);let n=this._dom.createElement("details","lh-unknown");return this._dom.createChildOf(n,"summary").textContent=`We don't know how to render audit details of type \`${e}\`. The Lighthouse version that collected this data is likely newer than the Lighthouse version of the report renderer. Expand for the raw JSON.`,this._dom.createChildOf(n,"pre").textContent=JSON.stringify(t,null,2),n}_renderTableValue(e,t){if(e==null)return null;if(typeof e=="object")switch(e.type){case"code":return this._renderCode(e.value);case"link":return this._renderLink(e);case"node":return this.renderNode(e);case"numeric":return this._renderNumeric(e);case"text":return this._renderText(e.value);case"source-location":return this.renderSourceLocation(e);case"url":return this.renderTextURL(e.value);case"baseline-status":return this._renderBaselineStatus(e);default:return this._renderUnknown(e.type,e)}switch(t.valueType){case"bytes":{let n=Number(e);return this._renderBytes({value:n,granularity:t.granularity})}case"code":{let n=String(e);return this._renderCode(n)}case"ms":{let n={value:Number(e),granularity:t.granularity,displayUnit:t.displayUnit};return this._renderMilliseconds(n)}case"numeric":{let n=Number(e);return this._renderNumeric({value:n,granularity:t.granularity})}case"text":{let n=String(e);return this._renderText(n)}case"thumbnail":{let n=String(e);return this._renderThumbnail(n)}case"timespanMs":{let n=Number(e);return this._renderMilliseconds({value:n})}case"url":{let n=String(e);return pt.some(o=>n.startsWith(o))?this.renderTextURL(n):this._renderCode(n)}default:return this._renderUnknown(t.valueType,e)}}_getDerivedSubItemsHeading(e){return e.subItemsHeading?{key:e.subItemsHeading.key||"",valueType:e.subItemsHeading.valueType||e.valueType,granularity:e.subItemsHeading.granularity||e.granularity,displayUnit:e.subItemsHeading.displayUnit||e.displayUnit,label:""}:null}_renderTableRow(e,t){let n=this._dom.createElement("tr");for(let o of t){if(!o||!o.key){this._dom.createChildOf(n,"td","lh-table-column--empty");continue}let i=e[o.key],a;if(i!=null&&(a=this._renderTableValue(i,o)),a){let l=`lh-table-column--${o.valueType}`;this._dom.createChildOf(n,"td",l).append(a)}else this._dom.createChildOf(n,"td","lh-table-column--empty")}return n}_renderTableRowsFromItem(e,t){let n=this._dom.createFragment();if(n.append(this._renderTableRow(e,t)),!e.subItems)return n;let o=t.map(this._getDerivedSubItemsHeading);if(!o.some(Boolean))return n;for(let i of e.subItems.items){let a=this._renderTableRow(i,o);a.classList.add("lh-sub-item-row"),n.append(a)}return n}_adornEntityGroupRow(e){let t=e.dataset.entity;if(!t)return;let n=this._entities?.find(i=>i.name===t);if(!n)return;let o=this._dom.find("td",e);if(n.category){let i=this._dom.createElement("span");i.classList.add("lh-audit__adorn"),i.textContent=n.category,o.append(" ",i)}if(n.isFirstParty){let i=this._dom.createElement("span");i.classList.add("lh-audit__adorn","lh-audit__adorn1p"),i.textContent=m.strings.firstPartyChipLabel,o.append(" ",i)}if(n.homepage){let i=this._dom.createElement("a");this._dom.safelySetHref(i,n.homepage),i.href&&(i.target="_blank",i.title=m.strings.openInANewTabTooltip,i.classList.add("lh-report-icon--external"),o.append(" ",i))}}_renderEntityGroupRow(e,t){let n={...t[0]};n.valueType="text";let o=[n,...t.slice(1)],i=this._dom.createFragment();return i.append(this._renderTableRow(e,o)),this._dom.find("tr",i).classList.add("lh-row--group"),i}_getEntityGroupItems(e){let{items:t,headings:n,sortedBy:o}=e;if(!t.length||e.isEntityGrouped||!t.some(d=>d.entity))return[];let i=new Set(e.skipSumming||[]),a=[];for(let d of n)!d.key||i.has(d.key)||ut.includes(d.valueType)&&a.push(d.key);let l=n[0].key;if(!l)return[];let s=new Map;for(let d of t){let h=typeof d.entity=="string"?d.entity:void 0,p=s.get(h)||{[l]:h||m.strings.unattributable,entity:h};for(let g of a)p[g]=Number(p[g]||0)+Number(d[g]||0);s.set(h,p)}let c=[...s.values()];return o&&c.sort(k.getTableItemSortComparator(o)),c}_renderTable(e){if(!e.items.length)return this._dom.createElement("span");let t=this._dom.createElement("table","lh-table"),n=this._dom.createChildOf(t,"thead"),o=this._dom.createChildOf(n,"tr");for(let l of e.headings){let c=`lh-table-column--${l.valueType||"text"}`,d=this._dom.createElement("div","lh-text");d.textContent=l.label,this._dom.createChildOf(o,"th",c).append(d)}let i=this._getEntityGroupItems(e),a=this._dom.createChildOf(t,"tbody");if(i.length)for(let l of i){let s=typeof l.entity=="string"?l.entity:void 0,c=this._renderEntityGroupRow(l,e.headings);for(let h of e.items.filter(p=>p.entity===s))c.append(this._renderTableRowsFromItem(h,e.headings));let d=this._dom.findAll("tr",c);s&&d.length&&(d.forEach(h=>h.dataset.entity=s),this._adornEntityGroupRow(d[0])),a.append(c)}else{let l=!0;for(let s of e.items){let c=this._renderTableRowsFromItem(s,e.headings),d=this._dom.findAll("tr",c),h=d[0];if(typeof s.entity=="string"&&(h.dataset.entity=s.entity),e.isEntityGrouped&&s.entity)h.classList.add("lh-row--group"),this._adornEntityGroupRow(h);else for(let p of d)p.classList.add(l?"lh-row--even":"lh-row--odd");l=!l,a.append(c)}}return t}_renderListValue(e){return e.type==="node"?this.renderNode(e):e.type==="text"?this._renderText(e.value):this.render(e)}_renderList(e){let t=this._dom.createElement("div","lh-list");return e.items.forEach(n=>{if(n.type==="list-section"){let i=this._dom.createElement("div","lh-list-section");n.title&&this._dom.createChildOf(i,"div","lh-list-section__title").append(this._dom.convertMarkdownLinkSnippets(n.title)),n.description&&this._dom.createChildOf(i,"div","lh-list-section__description").append(this._dom.convertMarkdownLinkSnippets(n.description));let a=this._renderListValue(n.value);a&&i.append(a),t.append(i);return}let o=this._renderListValue(n);o&&t.append(o)}),t}_renderChecklist(e){let t=this._dom.createElement("ul","lh-checklist");return Object.values(e.items).forEach(n=>{let o=this._dom.createChildOf(t,"li","lh-checklist-item"),i=n.value?"lh-report-plain-icon--checklist-pass":"lh-report-plain-icon--checklist-fail";this._dom.createChildOf(o,"span",`lh-report-plain-icon ${i}`).textContent=n.label}),t}renderNode(e){let t=this._dom.createElement("span","lh-node");if(e.nodeLabel){let a=this._dom.createElement("div");a.textContent=e.nodeLabel,t.append(a)}if(e.snippet){let a=this._dom.createElement("div");a.classList.add("lh-node__snippet"),a.textContent=e.snippet,t.append(a)}if(e.selector&&(t.title=e.selector),e.path&&t.setAttribute("data-path",e.path),e.selector&&t.setAttribute("data-selector",e.selector),e.snippet&&t.setAttribute("data-snippet",e.snippet),!this._fullPageScreenshot)return t;let n=e.lhId&&this._fullPageScreenshot.nodes[e.lhId];if(!n||n.width===0||n.height===0)return t;let o={width:147,height:100},i=G.render(this._dom,this._fullPageScreenshot.screenshot,n,o);return i&&t.prepend(i),t}renderSourceLocation(e){if(!e.url)return null;let t=`${e.url}:${e.line+1}:${e.column}`,n;e.original&&(n=`${e.original.file||"<unmapped>"}:${e.original.line+1}:${e.original.column}`);let o;if(e.urlProvider==="network"&&n)o=this._createLink({url:e.url,text:n}),o.title=`maps to generated location ${t}`;else if(e.urlProvider==="network"&&!n)o=this.renderTextURL(e.url),this._dom.find(".lh-link",o).textContent+=`:${e.line+1}:${e.column}`;else if(e.urlProvider==="comment"&&n)o=this._renderText(`${n} (from source map)`),o.title=`${t} (from sourceURL)`;else if(e.urlProvider==="comment"&&!n)o=this._renderText(`${t} (from sourceURL)`);else return null;return o.classList.add("lh-source-location"),o.setAttribute("data-source-url",e.url),o.setAttribute("data-source-line",String(e.line)),o.setAttribute("data-source-column",String(e.column)),o}_renderFilmstrip(e){let t=this._dom.createElement("div","lh-filmstrip");for(let n of e.items){let o=this._dom.createChildOf(t,"div","lh-filmstrip__frame"),i=this._dom.createChildOf(o,"img","lh-filmstrip__thumbnail");i.src=n.data,i.alt="Screenshot"}return t}_renderCode(e){let t=this._dom.createElement("pre","lh-code");return t.textContent=e,t}};var re=class{constructor(e){e==="en-XA"&&(e="de"),this._locale=e,this._cachedNumberFormatters=new Map}_formatNumberWithGranularity(e,t,n={}){if(t!==void 0){let a=-Math.log10(t);Number.isInteger(a)||(console.warn(`granularity of ${t} is invalid. Using 1 instead`),t=1),t<1&&(n={...n},n.minimumFractionDigits=n.maximumFractionDigits=Math.ceil(a)),e=Math.round(e/t)*t,Object.is(e,-0)&&(e=0)}else Math.abs(e)<5e-4&&(e=0);let o,i=[n.minimumFractionDigits,n.maximumFractionDigits,n.style,n.unit,n.unitDisplay,this._locale].join("");return o=this._cachedNumberFormatters.get(i),o||(o=new Intl.NumberFormat(this._locale,n),this._cachedNumberFormatters.set(i,o)),o.format(e).replace(" ","\xA0")}formatNumber(e,t){return this._formatNumberWithGranularity(e,t)}formatInteger(e){return this._formatNumberWithGranularity(e,1)}formatPercent(e){return new Intl.NumberFormat(this._locale,{style:"percent"}).format(e)}formatBytesToKiB(e,t=void 0){return this._formatNumberWithGranularity(e/1024,t)+"\xA0KiB"}formatBytesToMiB(e,t=void 0){return this._formatNumberWithGranularity(e/1048576,t)+"\xA0MiB"}formatBytes(e,t=1){return this._formatNumberWithGranularity(e,t,{style:"unit",unit:"byte",unitDisplay:"long"})}formatBytesWithBestUnit(e,t=.1){return e>=1048576?this.formatBytesToMiB(e,t):e>=1024?this.formatBytesToKiB(e,t):this._formatNumberWithGranularity(e,t,{style:"unit",unit:"byte",unitDisplay:"narrow"})}formatKbps(e,t=void 0){return this._formatNumberWithGranularity(e,t,{style:"unit",unit:"kilobit-per-second",unitDisplay:"short"})}formatMilliseconds(e,t=void 0){return this._formatNumberWithGranularity(e,t,{style:"unit",unit:"millisecond",unitDisplay:"short"})}formatSeconds(e,t=void 0){return this._formatNumberWithGranularity(e/1e3,t,{style:"unit",unit:"second",unitDisplay:"narrow"})}formatDateTime(e){let t={month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",timeZoneName:"short"},n;try{n=new Intl.DateTimeFormat(this._locale,t)}catch{t.timeZone="UTC",n=new Intl.DateTimeFormat(this._locale,t)}return n.format(new Date(e))}formatDuration(e){let t=e/1e3;if(Math.round(t)===0)return"None";let n=[],o={day:3600*24,hour:3600,minute:60,second:1};return Object.keys(o).forEach(i=>{let a=o[i],l=Math.floor(t/a);if(l>0){t-=l*a;let s=this._formatNumberWithGranularity(l,1,{style:"unit",unit:i,unitDisplay:"narrow"});n.push(s)}}),n.join(" ")}};function ke(r){let e=r.createComponent("explodeyGauge");return r.find(".lh-exp-gauge-component",e)}function Ee(r,e,t){let n=r.find("div.lh-exp-gauge__wrapper",e);n.className="",n.classList.add("lh-exp-gauge__wrapper",`lh-exp-gauge__wrapper--${k.calculateRating(t.score)}`),mt(r,n,t)}function gt(r,e,t){t=t||r/32;let n=r/t,o=.5*t,i=n+o+t,a=2*Math.PI*n,l=Math.acos(1-.5*Math.pow(.5*t/n,2))*n,s=2*Math.PI*i,c=Math.acos(1-.5*Math.pow(.5*t/i,2))*i;return{radiusInner:n,radiusOuter:i,circumferenceInner:a,circumferenceOuter:s,getArcLength:()=>Math.max(0,Number(e*a)),getMetricArcLength:(d,h=!1)=>{let p=h?0:2*c;return Math.max(0,Number(d*s-o-p))},endDiffInner:l,endDiffOuter:c,strokeWidth:t,strokeGap:o}}function mt(r,e,t){let i=Number(t.score),{radiusInner:a,radiusOuter:l,circumferenceInner:s,circumferenceOuter:c,getArcLength:d,getMetricArcLength:h,endDiffInner:p,endDiffOuter:g,strokeWidth:b,strokeGap:w}=gt(128,i),f=r.find("svg.lh-exp-gauge",e);r.find(".lh-exp-gauge__label",f).textContent=t.title,f.setAttribute("viewBox",[-64,-64/2,128,128/2].join(" ")),f.style.setProperty("--stroke-width",`${b}px`),f.style.setProperty("--circle-meas",(2*Math.PI).toFixed(4));let u=r.find("g.lh-exp-gauge__outer",e),v=r.find("g.lh-exp-gauge__inner",e),_=r.find("circle.lh-cover",u),x=r.find("circle.lh-exp-gauge__arc",v),L=r.find("text.lh-exp-gauge__percentage",v);u.style.setProperty("--scale-initial",String(a/l)),u.style.setProperty("--radius",`${l}px`),_.style.setProperty("--radius",`${.5*(a+l)}px`),_.setAttribute("stroke-width",String(w)),f.style.setProperty("--radius",`${a}px`),x.setAttribute("stroke-dasharray",`${d()} ${(s-d()).toFixed(4)}`),x.setAttribute("stroke-dashoffset",String(.25*s-p)),L.textContent=Math.round(i*100).toString();let S=l+b,A=l-b,z=t.auditRefs.filter(y=>y.group==="metrics"&&y.weight),V=z.reduce((y,C)=>y+=C.weight,0),N=.25*c-g-.5*w,I=-.5*Math.PI;u.querySelectorAll(".metric").forEach(y=>{z.map(R=>`metric--${R.id}`).find(R=>y.classList.contains(R))||y.remove()}),z.forEach((y,C)=>{let M=y.acronym??y.id,R=!u.querySelector(`.metric--${M}`),T=r.maybeFind(`g.metric--${M}`,u)||r.createSVGElement("g"),K=r.maybeFind(`.metric--${M} circle.lh-exp-gauge--faded`,u)||r.createSVGElement("circle"),q=r.maybeFind(`.metric--${M} circle.lh-exp-gauge--miniarc`,u)||r.createSVGElement("circle"),U=r.maybeFind(`.metric--${M} circle.lh-exp-gauge-hovertarget`,u)||r.createSVGElement("circle"),D=r.maybeFind(`.metric--${M} text.metric__label`,u)||r.createSVGElement("text"),F=r.maybeFind(`.metric--${M} text.metric__value`,u)||r.createSVGElement("text");T.classList.add("metric",`metric--${M}`),K.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--faded"),q.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--miniarc"),U.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget");let j=y.weight/V,ce=h(j),de=y.result.score?y.result.score*j:0,he=h(de),Fe=j*c,pe=h(j,!0),ue=k.calculateRating(y.result.score,y.result.scoreDisplayMode);T.style.setProperty("--metric-rating",ue),T.style.setProperty("--metric-color",`var(--color-${ue})`),T.style.setProperty("--metric-offset",`${N}`),T.style.setProperty("--i",C.toString()),K.setAttribute("stroke-dasharray",`${ce} ${c-ce}`),q.style.setProperty("--metric-array",`${he} ${c-he}`),U.setAttribute("stroke-dasharray",`${pe} ${c-pe-g}`),D.classList.add("metric__label"),F.classList.add("metric__value"),D.textContent=M,F.textContent=`+${Math.round(de*100)}`;let ge=I+j*Math.PI,Z=Math.cos(ge),J=Math.sin(ge);switch(!0){case Z>0:F.setAttribute("text-anchor","end");break;case Z<0:D.setAttribute("text-anchor","end");break;case Z===0:D.setAttribute("text-anchor","middle"),F.setAttribute("text-anchor","middle");break}switch(!0){case J>0:D.setAttribute("dominant-baseline","hanging");break;case J<0:F.setAttribute("dominant-baseline","hanging");break;case J===0:D.setAttribute("dominant-baseline","middle"),F.setAttribute("dominant-baseline","middle");break}D.setAttribute("x",(S*Z).toFixed(2)),D.setAttribute("y",(S*J).toFixed(2)),F.setAttribute("x",(A*Z).toFixed(2)),F.setAttribute("y",(A*J).toFixed(2)),R&&(T.appendChild(K),T.appendChild(q),T.appendChild(U),T.appendChild(D),T.appendChild(F),u.appendChild(T)),N-=Fe,I+=j*2*Math.PI});let P=u.querySelector(".lh-exp-gauge-underhovertarget")||r.createSVGElement("circle");P.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget","lh-exp-gauge-underhovertarget");let H=h(1,!0);if(P.setAttribute("stroke-dasharray",`${H} ${c-H-g}`),P.isConnected||u.prepend(P),f.dataset.listenersSetup)return;f.dataset.listenersSetup=!0,Te(f),f.addEventListener("pointerover",y=>{if(y.target===f&&f.classList.contains("state--expanded")){f.classList.remove("state--expanded"),f.classList.contains("state--highlight")&&(f.classList.remove("state--highlight"),r.find(".metric--highlight",f).classList.remove("metric--highlight"));return}if(!(y.target instanceof Element))return;let C=y.target.parentNode;if(C instanceof SVGElement){if(C&&C===v){f.classList.contains("state--expanded")?f.classList.contains("state--highlight")&&(f.classList.remove("state--highlight"),r.find(".metric--highlight",f).classList.remove("metric--highlight")):f.classList.add("state--expanded");return}if(C&&C.classList&&C.classList.contains("metric")){let M=C.style.getPropertyValue("--metric-rating");if(e.style.setProperty("--color-highlight",`var(--color-${M}-secondary)`),!f.classList.contains("state--highlight"))f.classList.add("state--highlight"),C.classList.add("metric--highlight");else{let R=r.find(".metric--highlight",f);C!==R&&(R.classList.remove("metric--highlight"),C.classList.add("metric--highlight"))}}}}),f.addEventListener("mouseleave",()=>{f.classList.remove("state--highlight"),f.querySelector(".metric--highlight")?.classList.remove("metric--highlight")});async function Te(y){if(await new Promise(U=>setTimeout(U,1e3)),y.classList.contains("state--expanded"))return;let C=r.find(".lh-exp-gauge__inner",y),M=Array.from(C.querySelectorAll("circle")).map(U=>{let D=`uniq-${Math.random()}`;U.setAttribute("id",D);let F=r.createSVGElement("use");return F.setAttribute("href",`#${D}`),y.appendChild(F),F}),R=2.5;y.style.setProperty("--peek-dur",`${R}s`),y.classList.add("state--peek","state--expanded");let T=()=>{y.classList.remove("state--peek","state--expanded"),M.forEach(U=>U.remove())},K=setTimeout(()=>{y.removeEventListener("mouseenter",q),T()},R*1e3*1.5);function q(){clearTimeout(K),T()}y.addEventListener("mouseenter",q,{once:!0})}}var oe=class extends B{_renderMetric(e){let t=this.dom.createComponent("metric"),n=this.dom.find(".lh-metric",t);n.id=e.result.id;let o=k.calculateRating(e.result.score,e.result.scoreDisplayMode);n.classList.add(`lh-metric--${o}`);let i=this.dom.find(".lh-metric__title",t);i.textContent=e.result.title;let a=this.dom.find(".lh-metric__value",t);a.textContent=e.result.displayValue||"";let l=this.dom.find(".lh-metric__description",t);if(l.append(this.dom.convertMarkdownLinkSnippets(e.result.description)),e.result.scoreDisplayMode==="error"){l.textContent="",a.textContent="Error!";let s=this.dom.createChildOf(l,"span");s.textContent=e.result.errorMessage||"Report error: no metric information"}else e.result.scoreDisplayMode==="notApplicable"&&(a.textContent="--");return n}_getScoringCalculatorHref(e){let t=e.filter(h=>h.group==="metrics"),n=e.find(h=>h.id==="interactive"),o=e.find(h=>h.id==="first-cpu-idle"),i=e.find(h=>h.id==="first-meaningful-paint");n&&t.push(n),o&&t.push(o),i&&typeof i.result.score=="number"&&t.push(i);let a=h=>Math.round(h*100)/100,s=[...t.map(h=>{let p;return typeof h.result.numericValue=="number"?(p=h.id==="cumulative-layout-shift"?a(h.result.numericValue):Math.round(h.result.numericValue),p=p.toString()):p="null",[h.acronym||h.id,p]})];m.reportJson&&(s.push(["device",m.reportJson.configSettings.formFactor]),s.push(["version",m.reportJson.lighthouseVersion]));let c=new URLSearchParams(s),d=new URL("https://googlechrome.github.io/lighthouse/scorecalc/");return d.hash=c.toString(),d.href}overallImpact(e,t){if(!e.result.metricSavings)return{overallImpact:0,overallLinearImpact:0};let n=0,o=0;for(let[i,a]of Object.entries(e.result.metricSavings)){if(a===void 0)continue;let l=t.find(g=>g.acronym===i);if(!l||l.result.score===null)continue;let s=l.result.numericValue;if(!s)continue;let c=a/s*l.weight;o+=c;let d=l.result.scoringOptions;if(!d)continue;let p=(E.computeLogNormalScore(d,s-a)-l.result.score)*l.weight;n+=p}return{overallImpact:n,overallLinearImpact:o}}render(e,t,n){let o=m.strings,i=this.dom.createElement("div","lh-category");i.id=e.id,i.append(this.renderCategoryHeader(e,t,n));let a=e.auditRefs.filter(p=>p.group==="metrics");if(a.length){let[p,g]=this.renderAuditGroup(t.metrics),b=this.dom.createElement("input","lh-metrics-toggle__input"),w=`lh-metrics-toggle${m.getUniqueSuffix()}`;b.setAttribute("aria-label","Toggle the display of metric descriptions"),b.type="checkbox",b.id=w,p.prepend(b);let f=this.dom.find(".lh-audit-group__header",p),u=this.dom.createChildOf(f,"label","lh-metrics-toggle__label");u.htmlFor=w;let v=this.dom.createChildOf(u,"span","lh-metrics-toggle__labeltext--show"),_=this.dom.createChildOf(u,"span","lh-metrics-toggle__labeltext--hide");v.textContent=m.strings.expandView,_.textContent=m.strings.collapseView;let x=this.dom.createElement("div","lh-metrics-container");if(p.insertBefore(x,g),a.forEach(L=>{x.append(this._renderMetric(L))}),i.querySelector(".lh-gauge__wrapper")){let L=this.dom.find(".lh-category-header__description",i),S=this.dom.createChildOf(L,"div","lh-metrics__disclaimer"),A=this.dom.convertMarkdownLinkSnippets(o.varianceDisclaimer);S.append(A);let z=this.dom.createChildOf(S,"a","lh-calclink");z.target="_blank",z.textContent=o.calculatorLink,this.dom.safelySetHref(z,this._getScoringCalculatorHref(e.auditRefs))}p.classList.add("lh-audit-group--metrics"),i.append(p)}let l=this.dom.createChildOf(i,"div","lh-filmstrip-container"),c=e.auditRefs.find(p=>p.id==="screenshot-thumbnails")?.result;if(c?.details){l.id=c.id;let p=this.detailsRenderer.render(c.details);p&&l.append(p)}let d=this.renderFilterableSection(e,t,["insights","diagnostics"],a);if(d&&(d.classList.add("lh-perf-audits"),i.append(d)),(!n||n?.gatherMode==="navigation")&&e.score!==null){let p=ke(this.dom);Ee(this.dom,p,e),this.dom.find(".lh-score__gauge",i).replaceWith(p)}return i}renderFilterableSection(e,t,n,o){if(n=n.filter(u=>!!t[u]),!n.length)return null;let i=this.dom.createElement("div"),a=u=>u.group??"",s=e.auditRefs.filter(u=>n.includes(a(u))).map(u=>{let{overallImpact:v,overallLinearImpact:_}=this.overallImpact(u,o),x=u.result.guidanceLevel||1,L=this.renderAudit(u);return{auditRef:u,auditEl:L,overallImpact:v,overallLinearImpact:_,guidanceLevel:x}}),c=s.filter(u=>!k.showAsPassed(u.auditRef.result)),d=s.filter(u=>k.showAsPassed(u.auditRef.result)),h={};for(let u of n){let v=this.renderAuditGroup(t[u]);v[0].classList.add(`lh-audit-group--${u}`),h[u]=v}function p(u){for(let v of s)if(u==="All")v.auditEl.hidden=!1;else{let _=v.auditRef.result.metricSavings?.[u]===void 0;v.auditEl.hidden=_}c.sort((v,_)=>{let x=v.auditRef.result.score||0,L=_.auditRef.result.score||0;if(x!==L)return x-L;if(u!=="All"){let S=v.auditRef.result.metricSavings?.[u]??-1,A=_.auditRef.result.metricSavings?.[u]??-1;if(S!==A)return A-S}return v.overallImpact!==_.overallImpact?_.overallImpact*_.guidanceLevel-v.overallImpact*v.guidanceLevel:v.overallImpact===0&&_.overallImpact===0&&v.overallLinearImpact!==_.overallLinearImpact?_.overallLinearImpact*_.guidanceLevel-v.overallLinearImpact*v.guidanceLevel:_.guidanceLevel-v.guidanceLevel});for(let v of c){if(!v.auditRef.group)continue;let _=h[a(v.auditRef)];if(!_)continue;let[x,L]=_;x.insertBefore(v.auditEl,L)}}let g=new Set;for(let u of c){let v=u.auditRef.result.metricSavings||{};for(let[_,x]of Object.entries(v))typeof x=="number"&&g.add(_)}let b=o.filter(u=>u.acronym&&g.has(u.acronym));b.length&&this.renderMetricAuditFilter(b,i,p),p("All");for(let u of n)if(c.some(v=>a(v.auditRef)===u)){let v=h[u];if(!v)continue;i.append(v[0])}if(!d.length)return i;let w={auditRefsOrEls:d.map(u=>u.auditEl),groupDefinitions:t},f=this.renderClump("passed",w);return i.append(f),i}renderMetricAuditFilter(e,t,n){let o=this.dom.createElement("div","lh-metricfilter"),i=this.dom.createChildOf(o,"span","lh-metricfilter__text");i.textContent=m.strings.showRelevantAudits;let a=[{acronym:"All",id:"All"},...e],l=m.getUniqueSuffix();for(let s of a){let c=`metric-${s.acronym}-${l}`,d=this.dom.createChildOf(o,"input","lh-metricfilter__radio");d.type="radio",d.name=`metricsfilter-${l}`,d.id=c;let h=this.dom.createChildOf(o,"label","lh-metricfilter__label");h.htmlFor=c,h.title="result"in s?s.result.title:"",h.textContent=s.acronym||s.id,s.acronym==="All"&&(d.checked=!0,h.classList.add("lh-metricfilter__label--active")),t.append(o),d.addEventListener("input",p=>{for(let b of t.querySelectorAll("label.lh-metricfilter__label"))b.classList.toggle("lh-metricfilter__label--active",b.htmlFor===c);t.classList.toggle("lh-category--filtered",s.acronym!=="All"),n(s.acronym||"All");let g=t.querySelectorAll("div.lh-audit-group, details.lh-audit-group");for(let b of g){b.hidden=!1;let w=Array.from(b.querySelectorAll("div.lh-audit")),f=!!w.length&&w.every(u=>u.hidden);b.hidden=f}})}}};var te=class{constructor(e){this._dom=e,this._opts={}}renderReport(e,t,n){if(!this._dom.rootEl&&t){console.warn("Please adopt the new report API in renderer/api.js.");let i=t.closest(".lh-root");i?this._dom.rootEl=i:(t.classList.add("lh-root","lh-vars"),this._dom.rootEl=t)}else this._dom.rootEl&&t&&(this._dom.rootEl=t);n&&(this._opts=n),this._dom.setLighthouseChannel(e.configSettings.channel||"unknown");let o=k.prepareReportResult(e);return this._dom.rootEl.textContent="",this._dom.rootEl.append(this._renderReport(o)),this._opts.occupyEntireViewport&&this._dom.rootEl.classList.add("lh-max-viewport"),this._dom.rootEl}_renderReportTopbar(e){let t=this._dom.createComponent("topbar"),n=this._dom.find("a.lh-topbar__url",t);return n.textContent=e.finalDisplayedUrl,n.title=e.finalDisplayedUrl,this._dom.safelySetHref(n,e.finalDisplayedUrl),t}_renderReportHeader(){let e=this._dom.createComponent("heading"),t=this._dom.createComponent("scoresWrapper");return this._dom.find(".lh-scores-wrapper-placeholder",e).replaceWith(t),e}_renderReportFooter(e){let t=this._dom.createComponent("footer");return this._renderMetaBlock(e,t),this._dom.find(".lh-footer__version_issue",t).textContent=m.strings.footerIssue,this._dom.find(".lh-footer__version",t).textContent=e.lighthouseVersion,t}_renderMetaBlock(e,t){let n=k.getEmulationDescriptions(e.configSettings||{}),o=e.userAgent.match(/(\w*Chrome\/[\d.]+)/),i=Array.isArray(o)?o[1].replace("/"," ").replace("Chrome","Chromium"):"Chromium",a=e.configSettings.channel,l=e.environment.benchmarkIndex.toFixed(0),s=e.environment.credits?.["axe-core"],c=[`${m.strings.runtimeSettingsBenchmark}: ${l}`,`${m.strings.runtimeSettingsCPUThrottling}: ${n.cpuThrottling}`];n.screenEmulation&&c.push(`${m.strings.runtimeSettingsScreenEmulation}: ${n.screenEmulation}`),s&&c.push(`${m.strings.runtimeSettingsAxeVersion}: ${s}`);let d=m.strings.runtimeAnalysisWindow;e.gatherMode==="timespan"?d=m.strings.runtimeAnalysisWindowTimespan:e.gatherMode==="snapshot"&&(d=m.strings.runtimeAnalysisWindowSnapshot);let h=[["date",`Captured at ${m.i18n.formatDateTime(e.fetchTime)}`],["devices",`${n.deviceEmulation} with Lighthouse ${e.lighthouseVersion}`,c.join(`
2803
- `)],["samples-one",m.strings.runtimeSingleLoad,m.strings.runtimeSingleLoadTooltip],["stopwatch",d],["networkspeed",`${n.summary}`,`${m.strings.runtimeSettingsNetworkThrottling}: ${n.networkThrottling}`],["chrome",`Using ${i}`+(a?` with ${a}`:""),`${m.strings.runtimeSettingsUANetwork}: "${e.environment.networkUserAgent}"`]],p=Object.keys(e.categories).filter(b=>k.isPluginCategory(b));for(let b of p){let w=e.environment.credits?.[b];h.push(["plugin",w?`${b} ${w}`:b,void 0,`https://www.npmjs.com/package/${b}`])}let g=this._dom.find(".lh-meta__items",t);for(let[b,w,f,u]of h){let v=this._dom.createChildOf(g,"li","lh-meta__item");if(u){let _=this._dom.createChildOf(v,"a");_.rel="noopener",_.target="_blank",_.textContent=w,this._dom.safelySetHref(_,u)}else v.textContent=w;if(f){v.classList.add("lh-tooltip-boundary");let _=this._dom.createChildOf(v,"div","lh-tooltip");_.textContent=f}v.classList.add("lh-report-icon",`lh-report-icon--${b}`)}}_renderReportWarnings(e){if(!e.runWarnings||e.runWarnings.length===0)return this._dom.createElement("div");let t=this._dom.createComponent("warningsToplevel"),n=this._dom.find(".lh-warnings__msg",t);n.textContent=m.strings.toplevelWarningsMessage;let o=[];for(let i of e.runWarnings){let a=this._dom.createElement("li");a.append(this._dom.convertMarkdownLinkSnippets(i)),o.push(a)}return this._dom.find("ul",t).append(...o),t}_renderScoreGauges(e,t,n){let o=[],i=[];for(let a of Object.values(e.categories)){let s=(n[a.id]||t).renderCategoryScore(a,e.categoryGroups||{},{gatherMode:e.gatherMode}),c=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",s);c&&(this._dom.safelySetHref(c,`#${a.id}`),c.addEventListener("click",d=>{if(!c.matches('[href^="#"]'))return;let h=c.getAttribute("href"),p=this._dom.rootEl;if(!h||!p)return;let g=this._dom.find(h,p);d.preventDefault(),g.scrollIntoView()}),this._opts.onPageAnchorRendered?.(c)),k.isPluginCategory(a.id)?i.push(s):o.push(s)}return[...o,...i]}_renderReport(e){m.apply({providedStrings:e.i18n.rendererFormattedStrings,i18n:new re(e.configSettings.locale),reportJson:e});let t=new ee(this._dom,{fullPageScreenshot:e.fullPageScreenshot??void 0,entities:e.entities}),n=new B(this._dom,t),o={performance:new oe(this._dom,t)},i=this._dom.createElement("div");i.append(this._renderReportHeader());let a=this._dom.createElement("div","lh-container"),l=this._dom.createElement("div","lh-report");l.append(this._renderReportWarnings(e));let s;Object.keys(e.categories).length===1?i.classList.add("lh-header--solo-category"):s=this._dom.createElement("div","lh-scores-header");let d=this._dom.createElement("div");if(d.classList.add("lh-scorescale-wrap"),d.append(this._dom.createComponent("scorescale")),s){let b=this._dom.find(".lh-scores-container",i);s.append(...this._renderScoreGauges(e,n,o)),b.append(s,d);let w=this._dom.createElement("div","lh-sticky-header");w.append(...this._renderScoreGauges(e,n,o)),a.append(w)}let h=this._dom.createElement("div","lh-categories");l.append(h);let p={gatherMode:e.gatherMode};for(let b of Object.values(e.categories)){let w=o[b.id]||n;w.dom.createChildOf(h,"div","lh-category-wrapper").append(w.render(b,e.categoryGroups,p))}n.injectFinalScreenshot(h,e.audits,d);let g=this._dom.createFragment();return this._opts.omitGlobalStyles||g.append(this._dom.createComponent("styles")),this._opts.omitTopbar||g.append(this._renderReportTopbar(e)),g.append(a),l.append(this._renderReportFooter(e)),a.append(i,l),e.fullPageScreenshot&&G.installFullPageScreenshot(this._dom.rootEl,e.fullPageScreenshot.screenshot),g}};function W(r,e){let t=r.rootEl;typeof e>"u"?t.classList.toggle("lh-dark"):t.classList.toggle("lh-dark",e)}var ft=typeof btoa<"u"?btoa:r=>Buffer.from(r).toString("base64"),vt=typeof atob<"u"?atob:r=>Buffer.from(r,"base64").toString();async function bt(r,e){let t=new TextEncoder().encode(r);if(e.gzip)if(typeof CompressionStream<"u"){let i=new CompressionStream("gzip"),a=i.writable.getWriter();a.write(t),a.close();let l=await new Response(i.readable).arrayBuffer();t=new Uint8Array(l)}else t=window.pako.gzip(r);let n="",o=5e3;for(let i=0;i<t.length;i+=o)n+=String.fromCharCode(...t.subarray(i,i+o));return ft(n)}function _t(r,e){let t=vt(r),n=Uint8Array.from(t,o=>o.charCodeAt(0));return e.gzip?window.pako.ungzip(n,{toText:!0}):new TextDecoder().decode(n)}var Le={toBase64:bt,fromBase64:_t};function le(){let r=window.location.host.endsWith(".vercel.app"),e=new URLSearchParams(window.location.search).has("dev");return r?`https://${window.location.host}/gh-pages`:e?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function se(r){let e=r.generatedTime,t=r.fetchTime||e;return`${r.lighthouseVersion}-${r.finalDisplayedUrl}-${t}`}function wt(r,e,t){let n=new URL(e).origin;window.addEventListener("message",function i(a){a.origin===n&&o&&a.data.opened&&(o.postMessage(r,n),window.removeEventListener("message",i))});let o=window.open(e,t)}async function Ce(r,e,t){let n=new URL(e),o=!!window.CompressionStream;n.hash=await Le.toBase64(JSON.stringify(r),{gzip:o}),o&&n.searchParams.set("gzip","1"),window.open(n.toString(),t)}async function Se(r){let e="viewer-"+se(r),t=le()+"/viewer/";await Ce({lhr:r},t,e)}async function Ae(r){let e="viewer-"+se(r),t=le()+"/viewer/";wt({lhr:r},t,e)}function ze(r){if(!r.audits["script-treemap-data"].details)throw new Error("no script treemap data found");let t={lhr:{mainDocumentUrl:r.mainDocumentUrl,finalUrl:r.finalUrl,finalDisplayedUrl:r.finalDisplayedUrl,audits:{"script-treemap-data":r.audits["script-treemap-data"]},configSettings:{locale:r.configSettings.locale}}},n=le()+"/treemap/",o="treemap-"+se(r);Ce(t,n,o)}var ie=class{constructor(e){this._dom=e,this._toggleEl,this._menuEl,this.onDocumentKeyDown=this.onDocumentKeyDown.bind(this),this.onToggleClick=this.onToggleClick.bind(this),this.onToggleKeydown=this.onToggleKeydown.bind(this),this.onMenuFocusOut=this.onMenuFocusOut.bind(this),this.onMenuKeydown=this.onMenuKeydown.bind(this),this._getNextMenuItem=this._getNextMenuItem.bind(this),this._getNextSelectableNode=this._getNextSelectableNode.bind(this),this._getPreviousMenuItem=this._getPreviousMenuItem.bind(this)}setup(e){this._toggleEl=this._dom.find(".lh-topbar button.lh-tools__button",this._dom.rootEl),this._toggleEl.addEventListener("click",this.onToggleClick),this._toggleEl.addEventListener("keydown",this.onToggleKeydown),this._menuEl=this._dom.find(".lh-topbar div.lh-tools__dropdown",this._dom.rootEl),this._menuEl.addEventListener("keydown",this.onMenuKeydown),this._menuEl.addEventListener("click",e)}close(){this._toggleEl.classList.remove("lh-active"),this._toggleEl.setAttribute("aria-expanded","false"),this._menuEl.contains(this._dom.document().activeElement)&&this._toggleEl.focus(),this._menuEl.removeEventListener("focusout",this.onMenuFocusOut),this._dom.document().removeEventListener("keydown",this.onDocumentKeyDown)}open(e){this._toggleEl.classList.contains("lh-active")?e.focus():this._menuEl.addEventListener("transitionend",()=>{e.focus()},{once:!0}),this._toggleEl.classList.add("lh-active"),this._toggleEl.setAttribute("aria-expanded","true"),this._menuEl.addEventListener("focusout",this.onMenuFocusOut),this._dom.document().addEventListener("keydown",this.onDocumentKeyDown)}onToggleClick(e){e.preventDefault(),e.stopImmediatePropagation(),this._toggleEl.classList.contains("lh-active")?this.close():this.open(this._getNextMenuItem())}onToggleKeydown(e){switch(e.code){case"ArrowUp":e.preventDefault(),this.open(this._getPreviousMenuItem());break;case"ArrowDown":case"Enter":case" ":e.preventDefault(),this.open(this._getNextMenuItem());break;default:}}onMenuKeydown(e){let t=e.target;switch(e.code){case"ArrowUp":e.preventDefault(),this._getPreviousMenuItem(t).focus();break;case"ArrowDown":e.preventDefault(),this._getNextMenuItem(t).focus();break;case"Home":e.preventDefault(),this._getNextMenuItem().focus();break;case"End":e.preventDefault(),this._getPreviousMenuItem().focus();break;default:}}onDocumentKeyDown(e){e.keyCode===27&&this.close()}onMenuFocusOut(e){let t=e.relatedTarget;this._menuEl.contains(t)||this.close()}_getNextSelectableNode(e,t){let n=e.filter(i=>i instanceof HTMLElement).filter(i=>!(i.hasAttribute("disabled")||window.getComputedStyle(i).display==="none")),o=t?n.indexOf(t)+1:0;return o>=n.length&&(o=0),n[o]}_getNextMenuItem(e){let t=Array.from(this._menuEl.childNodes);return this._getNextSelectableNode(t,e)}_getPreviousMenuItem(e){let t=Array.from(this._menuEl.childNodes).reverse();return this._getNextSelectableNode(t,e)}};var ae=class{constructor(e,t){this.lhr,this._reportUIFeatures=e,this._dom=t,this._dropDownMenu=new ie(this._dom),this._copyAttempt=!1,this.topbarEl,this.categoriesEl,this.stickyHeaderEl,this.highlightEl,this.onDropDownMenuClick=this.onDropDownMenuClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onCopy=this.onCopy.bind(this),this.collapseAllDetails=this.collapseAllDetails.bind(this)}enable(e){this.lhr=e,this._dom.rootEl.addEventListener("keyup",this.onKeyUp),this._dom.document().addEventListener("copy",this.onCopy),this._dropDownMenu.setup(this.onDropDownMenuClick),this._setUpCollapseDetailsAfterPrinting(),this._dom.find(".lh-topbar__logo",this._dom.rootEl).addEventListener("click",()=>W(this._dom)),this._setupStickyHeader()}onDropDownMenuClick(e){e.preventDefault();let t=e.target;if(!(!t||!t.hasAttribute("data-action"))){switch(t.getAttribute("data-action")){case"copy":this.onCopyButtonClick();break;case"print-summary":this.collapseAllDetails(),this._print();break;case"print-expanded":this.expandAllDetails(),this._print();break;case"save-json":{let n=JSON.stringify(this.lhr,null,2);this._reportUIFeatures._saveFile(new Blob([n],{type:"application/json"}));break}case"save-html":{let n=this._reportUIFeatures.getReportHtml();try{this._reportUIFeatures._saveFile(new Blob([n],{type:"text/html"}))}catch(o){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+o.message})}break}case"open-viewer":{this._dom.isDevTools()?Se(this.lhr):Ae(this.lhr);break}case"save-gist":{this._reportUIFeatures.saveAsGist();break}case"toggle-dark":{W(this._dom);break}case"view-unthrottled-trace":this._reportUIFeatures._opts.onViewTrace?.()}this._dropDownMenu.close()}}onCopy(e){this._copyAttempt&&e.clipboardData&&(e.preventDefault(),e.clipboardData.setData("text/plain",JSON.stringify(this.lhr,null,2)),this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:"Report JSON copied to clipboard"})),this._copyAttempt=!1}onCopyButtonClick(){this._dom.fireEventOn("lh-analytics",this._dom.document(),{name:"copy"});try{this._dom.document().queryCommandSupported("copy")&&(this._copyAttempt=!0,this._dom.document().execCommand("copy")||(this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"warn",msg:"Your browser does not support copy to clipboard."})))}catch(e){this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:e.message})}}onKeyUp(e){(e.ctrlKey||e.metaKey)&&e.keyCode===80&&this._dropDownMenu.close()}expandAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(t=>t.open=!0)}collapseAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(t=>t.open=!1)}_print(){this._reportUIFeatures._opts.onPrintOverride?this._reportUIFeatures._opts.onPrintOverride(this._dom.rootEl):self.print()}resetUIState(){this._dropDownMenu.close()}_getScrollParent(e){let{overflowY:t}=window.getComputedStyle(e);return t!=="visible"&&t!=="hidden"?e:e.parentElement?this._getScrollParent(e.parentElement):document}_setUpCollapseDetailsAfterPrinting(){"onbeforeprint"in self?self.addEventListener("afterprint",this.collapseAllDetails):self.matchMedia("print").addListener(t=>{t.matches?this.expandAllDetails():this.collapseAllDetails()})}_setupStickyHeader(){this.topbarEl=this._dom.find("div.lh-topbar",this._dom.rootEl),this.categoriesEl=this._dom.find("div.lh-categories",this._dom.rootEl),requestAnimationFrame(()=>requestAnimationFrame(()=>{try{this.stickyHeaderEl=this._dom.find("div.lh-sticky-header",this._dom.rootEl)}catch{return}this.highlightEl=this._dom.createChildOf(this.stickyHeaderEl,"div","lh-highlighter");let e=this._getScrollParent(this._dom.find(".lh-container",this._dom.rootEl));e.addEventListener("scroll",()=>this._updateStickyHeader());let t=e instanceof window.Document?document.documentElement:e;new window.ResizeObserver(()=>this._updateStickyHeader()).observe(t)}))}_updateStickyHeader(){if(!this.stickyHeaderEl)return;let e=this.topbarEl.getBoundingClientRect().bottom,t=this.categoriesEl.getBoundingClientRect().top,n=e>=t,i=Array.from(this._dom.rootEl.querySelectorAll(".lh-category")).filter(h=>h.getBoundingClientRect().top-window.innerHeight/2<0),a=i.length>0?i.length-1:0,l=this.stickyHeaderEl.querySelectorAll(".lh-gauge__wrapper, .lh-fraction__wrapper"),s=l[a],c=l[0].getBoundingClientRect().left,d=s.getBoundingClientRect().left-c;this.highlightEl.style.transform=`translate(${d}px)`,this.stickyHeaderEl.classList.toggle("lh-sticky-header--visible",n)}};function yt(r,e){let t=e?new Date(e):new Date,n=t.toLocaleTimeString("en-US",{hour12:!1}),o=t.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");o.unshift(o.pop());let i=o.join("-");return`${r}_${i}_${n}`.replace(/[/?<>\\:*|"]/g,"-")}function Me(r){let{hostname:e,pathname:t}=new URL(r.finalDisplayedUrl),n=e+t.replace(/\/$/,"");return yt(n,r.fetchTime)}function xt(r){return Array.from(r.tBodies[0].rows)}var ne=class{constructor(e,t={}){this.json,this._dom=e,this._opts=t,this._topbar=t.omitTopbar?null:new ae(this,e),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(e){this.json=e,this._fullPageScreenshot=E.getFullPageScreenshot(e),this._topbar&&(this._topbar.enable(e),this._topbar.resetUIState()),this._setupMediaQueryListeners(),this._setupThirdPartyFilter(),this._setupElementScreenshotOverlay(this._dom.rootEl);let t=this._dom.isDevTools()||this._opts.disableDarkMode||this._opts.disableAutoDarkModeAndFireworks;!t&&window.matchMedia("(prefers-color-scheme: dark)").matches&&W(this._dom,!0);let o=["performance","accessibility","best-practices","seo"].every(s=>{let c=e.categories[s];return c&&c.score===1}),i=this._opts.disableFireworks||this._opts.disableAutoDarkModeAndFireworks;if(o&&!i&&(this._enableFireworks(),t||W(this._dom,!0)),e.categories.performance&&e.categories.performance.auditRefs.some(s=>!!(s.group==="metrics"&&e.audits[s.id].errorMessage))){let s=this._dom.find("input.lh-metrics-toggle__input",this._dom.rootEl);s.checked=!0}this.json.audits["script-treemap-data"]&&this.json.audits["script-treemap-data"].details&&this.addButton({text:m.strings.viewTreemapLabel,icon:"treemap",onClick:()=>ze(this.json)}),this._opts.onViewTrace&&(e.configSettings.throttlingMethod==="simulate"?this._dom.find('a[data-action="view-unthrottled-trace"]',this._dom.rootEl).classList.remove("lh-hidden"):this.addButton({text:m.strings.viewTraceLabel,onClick:()=>this._opts.onViewTrace?.()})),this._opts.getStandaloneReportHTML&&this._dom.find('a[data-action="save-html"]',this._dom.rootEl).classList.remove("lh-hidden");for(let s of this._dom.findAll("[data-i18n]",this._dom.rootEl)){let d=s.getAttribute("data-i18n");s.textContent=m.strings[d]}}addButton(e){let t=this._dom.rootEl.querySelector(".lh-audit-group--metrics");if(!t)return;let n=t.querySelector(".lh-buttons");n||(n=this._dom.createChildOf(t,"div","lh-buttons"));let o=["lh-button"];e.icon&&(o.push("lh-report-icon"),o.push(`lh-report-icon--${e.icon}`));let i=this._dom.createChildOf(n,"button",o.join(" "));return i.textContent=e.text,i.addEventListener("click",e.onClick),i}resetUIState(){this._topbar&&this._topbar.resetUIState()}getReportHtml(){if(!this._opts.getStandaloneReportHTML)throw new Error("`getStandaloneReportHTML` is not set");return this.resetUIState(),this._opts.getStandaloneReportHTML()}saveAsGist(){throw new Error("Cannot save as gist from base report")}_enableFireworks(){this._dom.find(".lh-scores-container",this._dom.rootEl).classList.add("lh-score100")}_setupMediaQueryListeners(){let e=self.matchMedia("(max-width: 500px)");e.addListener(this.onMediaQueryChange),this.onMediaQueryChange(e)}_resetUIState(){this._topbar&&this._topbar.resetUIState()}onMediaQueryChange(e){this._dom.rootEl.classList.toggle("lh-narrow",e.matches)}_setupThirdPartyFilter(){let e=["uses-rel-preconnect","third-party-facades","network-dependency-tree-insight"],t=["legacy-javascript","legacy-javascript-insight"];Array.from(this._dom.rootEl.querySelectorAll("table.lh-table")).filter(i=>i.querySelector("td.lh-table-column--url, td.lh-table-column--source-location")).filter(i=>{let a=i.closest(".lh-audit");if(!a)throw new Error(".lh-table not within audit");return!e.includes(a.id)}).forEach(i=>{let a=xt(i),l=a.filter(f=>!f.classList.contains("lh-sub-item-row")),s=this._getThirdPartyRows(l,E.getFinalDisplayedUrl(this.json)),c=a.some(f=>f.classList.contains("lh-row--even")),d=this._dom.createComponent("3pFilter"),h=this._dom.find("input",d);h.addEventListener("change",f=>{let u=f.target instanceof HTMLInputElement&&!f.target.checked,v=!0,_=l[0];for(;_;){let x=u&&s.includes(_);do _.classList.toggle("lh-row--hidden",x),c&&(_.classList.toggle("lh-row--even",!x&&v),_.classList.toggle("lh-row--odd",!x&&!v)),_=_.nextElementSibling;while(_&&_.classList.contains("lh-sub-item-row"));x||(v=!v)}});let p=s.filter(f=>!f.classList.contains("lh-row--group")).length;this._dom.find(".lh-3p-filter-count",d).textContent=`${p}`,this._dom.find(".lh-3p-ui-string",d).textContent=m.strings.thirdPartyResourcesLabel;let g=s.length===l.length,b=!s.length;if((g||b)&&(this._dom.find("div.lh-3p-filter",d).hidden=!0),!i.parentNode)return;i.parentNode.insertBefore(d,i);let w=i.closest(".lh-audit");if(!w)throw new Error(".lh-table not within audit");t.includes(w.id)&&!g&&h.click()})}_setupElementScreenshotOverlay(e){this._fullPageScreenshot&&G.installOverlayFeature({dom:this._dom,rootEl:e,overlayContainerEl:e,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(e,t){let n=E.getEntityFromUrl(t,this.json.entities),o=this.json.entities?.find(a=>a.isFirstParty===!0)?.name,i=[];for(let a of e){if(o){if(!a.dataset.entity||a.dataset.entity===o)continue}else{let l=a.querySelector("div.lh-text__url");if(!l)continue;let s=l.dataset.url;if(!s||!(E.getEntityFromUrl(s,this.json.entities)!==n))continue}i.push(a)}return i}_saveFile(e){let t=e.type.match("json")?".json":".html",n=Me({finalDisplayedUrl:E.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime})+t;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(e,n):this._dom.saveFile(e,n)}};function kt(r,e={}){let t=document.createElement("article");t.classList.add("lh-root","lh-vars");let n=new Q(t.ownerDocument,t);return new te(n).renderReport(r,t,e),new ne(n,e).initFeatures(r),t}function Et(r,e){return{lhr:r,missingIcuMessageIds:[]}}function Lt(r,e){}function Ct(r){return!1}var St={registerLocaleData:Lt,hasLocale:Ct};export{Q as DOM,te as ReportRenderer,ne as ReportUIFeatures,St as format,kt as renderReport,Et as swapLocale};
2803
+ `)],["samples-one",m.strings.runtimeSingleLoad,m.strings.runtimeSingleLoadTooltip],["stopwatch",d],["networkspeed",`${n.summary}`,`${m.strings.runtimeSettingsNetworkThrottling}: ${n.networkThrottling}`],["chrome",`Using ${i}`+(a?` with ${a}`:""),`${m.strings.runtimeSettingsUANetwork}: "${e.environment.networkUserAgent}"`]],p=Object.keys(e.categories).filter(b=>k.isPluginCategory(b));for(let b of p){let w=e.environment.credits?.[b];h.push(["plugin",w?`${b} ${w}`:b,void 0,`https://www.npmjs.com/package/${b}`])}let g=this._dom.find(".lh-meta__items",t);for(let[b,w,f,u]of h){let v=this._dom.createChildOf(g,"li","lh-meta__item");if(u){let _=this._dom.createChildOf(v,"a");_.rel="noopener",_.target="_blank",_.textContent=w,this._dom.safelySetHref(_,u)}else v.textContent=w;if(f){v.classList.add("lh-tooltip-boundary");let _=this._dom.createChildOf(v,"div","lh-tooltip");_.textContent=f}v.classList.add("lh-report-icon",`lh-report-icon--${b}`)}}_renderReportWarnings(e){if(!e.runWarnings||e.runWarnings.length===0)return this._dom.createElement("div");let t=this._dom.createComponent("warningsToplevel"),n=this._dom.find(".lh-warnings__msg",t);n.textContent=m.strings.toplevelWarningsMessage;let o=[];for(let i of e.runWarnings){let a=this._dom.createElement("li");a.append(this._dom.convertMarkdownLinkSnippets(i)),o.push(a)}return this._dom.find("ul",t).append(...o),t}_renderScoreGauges(e,t,n){let o=[],i=[];for(let a of Object.values(e.categories)){let s=(n[a.id]||t).renderCategoryScore(a,e.categoryGroups||{},{gatherMode:e.gatherMode}),c=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",s);c&&(this._dom.safelySetHref(c,`#${a.id}`),c.addEventListener("click",d=>{if(!c.matches('[href^="#"]'))return;let h=c.getAttribute("href"),p=this._dom.rootEl;if(!h||!p)return;let g=this._dom.find(h,p);d.preventDefault(),g.scrollIntoView()}),this._opts.onPageAnchorRendered?.(c)),k.isPluginCategory(a.id)?i.push(s):o.push(s)}return[...o,...i]}_renderReport(e){m.apply({providedStrings:e.i18n.rendererFormattedStrings,i18n:new re(e.configSettings.locale),reportJson:e});let t=new ee(this._dom,{fullPageScreenshot:e.fullPageScreenshot??void 0,entities:e.entities}),n=new B(this._dom,t),o={performance:new oe(this._dom,t)},i=this._dom.createElement("div");i.append(this._renderReportHeader());let a=this._dom.createElement("div","lh-container"),l=this._dom.createElement("div","lh-report");l.append(this._renderReportWarnings(e));let s;Object.keys(e.categories).length===1?i.classList.add("lh-header--solo-category"):s=this._dom.createElement("div","lh-scores-header");let d=this._dom.createElement("div");if(d.classList.add("lh-scorescale-wrap"),d.append(this._dom.createComponent("scorescale")),s){let b=this._dom.find(".lh-scores-container",i);s.append(...this._renderScoreGauges(e,n,o)),b.append(s,d);let w=this._dom.createElement("div","lh-sticky-header");w.append(...this._renderScoreGauges(e,n,o)),a.append(w)}let h=this._dom.createElement("div","lh-categories");l.append(h);let p={gatherMode:e.gatherMode};for(let b of Object.values(e.categories)){let w=o[b.id]||n;w.dom.createChildOf(h,"div","lh-category-wrapper").append(w.render(b,e.categoryGroups,p))}n.injectFinalScreenshot(h,e.audits,d);let g=this._dom.createFragment();return this._opts.omitGlobalStyles||g.append(this._dom.createComponent("styles")),this._opts.omitTopbar||g.append(this._renderReportTopbar(e)),g.append(a),l.append(this._renderReportFooter(e)),a.append(i,l),e.fullPageScreenshot&&G.installFullPageScreenshot(this._dom.rootEl,e.fullPageScreenshot.screenshot),g}};function W(r,e){let t=r.rootEl;typeof e>"u"?t.classList.toggle("lh-dark"):t.classList.toggle("lh-dark",e)}var ft=typeof btoa<"u"?btoa:r=>Buffer.from(r).toString("base64"),vt=typeof atob<"u"?atob:r=>Buffer.from(r,"base64").toString();async function bt(r,e){let t=new TextEncoder().encode(r);if(e.gzip)if(typeof CompressionStream<"u"){let i=new CompressionStream("gzip"),a=i.writable.getWriter();a.write(t),a.close();let l=await new Response(i.readable).arrayBuffer();t=new Uint8Array(l)}else t=window.pako.gzip(r);let n="",o=5e3;for(let i=0;i<t.length;i+=o)n+=String.fromCharCode(...t.subarray(i,i+o));return ft(n)}function _t(r,e){let t=vt(r),n=Uint8Array.from(t,o=>o.charCodeAt(0));return e.gzip?window.pako.ungzip(n,{toText:!0}):new TextDecoder().decode(n)}var Le={toBase64:bt,fromBase64:_t};function le(){let r=window.location.host.endsWith(".vercel.app"),e=new URLSearchParams(window.location.search).has("dev");return r?`https://${window.location.host}/gh-pages`:e?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function se(r){let e=r.generatedTime,t=r.fetchTime||e;return`${r.lighthouseVersion}-${r.finalDisplayedUrl}-${t}`}function wt(r,e,t){let n=new URL(e).origin;window.addEventListener("message",function i(a){a.origin===n&&o&&a.data.opened&&(o.postMessage(r,n),window.removeEventListener("message",i))});let o=window.open(e,t)}async function Ce(r,e,t){let n=new URL(e),o=!!window.CompressionStream;n.hash=await Le.toBase64(JSON.stringify(r),{gzip:o}),o&&n.searchParams.set("gzip","1"),window.open(n.toString(),t)}async function Se(r){let e="viewer-"+se(r),t=le()+"/viewer/";await Ce({lhr:r},t,e)}async function Ae(r){let e="viewer-"+se(r),t=le()+"/viewer/";wt({lhr:r},t,e)}function ze(r){if(!r.audits["script-treemap-data"].details)throw new Error("no script treemap data found");let t={lhr:{mainDocumentUrl:r.mainDocumentUrl,finalUrl:r.finalUrl,finalDisplayedUrl:r.finalDisplayedUrl,audits:{"script-treemap-data":r.audits["script-treemap-data"]},configSettings:{locale:r.configSettings.locale}}},n=le()+"/treemap/",o="treemap-"+se(r);Ce(t,n,o)}var ie=class{constructor(e){this._dom=e,this._toggleEl,this._menuEl,this.onDocumentKeyDown=this.onDocumentKeyDown.bind(this),this.onToggleClick=this.onToggleClick.bind(this),this.onToggleKeydown=this.onToggleKeydown.bind(this),this.onMenuFocusOut=this.onMenuFocusOut.bind(this),this.onMenuKeydown=this.onMenuKeydown.bind(this),this._getNextMenuItem=this._getNextMenuItem.bind(this),this._getNextSelectableNode=this._getNextSelectableNode.bind(this),this._getPreviousMenuItem=this._getPreviousMenuItem.bind(this)}setup(e){this._toggleEl=this._dom.find(".lh-topbar button.lh-tools__button",this._dom.rootEl),this._toggleEl.addEventListener("click",this.onToggleClick),this._toggleEl.addEventListener("keydown",this.onToggleKeydown),this._menuEl=this._dom.find(".lh-topbar div.lh-tools__dropdown",this._dom.rootEl),this._menuEl.addEventListener("keydown",this.onMenuKeydown),this._menuEl.addEventListener("click",e)}close(){this._toggleEl.classList.remove("lh-active"),this._toggleEl.setAttribute("aria-expanded","false"),this._menuEl.contains(this._dom.document().activeElement)&&this._toggleEl.focus(),this._menuEl.removeEventListener("focusout",this.onMenuFocusOut),this._dom.document().removeEventListener("keydown",this.onDocumentKeyDown)}open(e){this._toggleEl.classList.contains("lh-active")?e.focus():this._menuEl.addEventListener("transitionend",()=>{e.focus()},{once:!0}),this._toggleEl.classList.add("lh-active"),this._toggleEl.setAttribute("aria-expanded","true"),this._menuEl.addEventListener("focusout",this.onMenuFocusOut),this._dom.document().addEventListener("keydown",this.onDocumentKeyDown)}onToggleClick(e){e.preventDefault(),e.stopImmediatePropagation(),this._toggleEl.classList.contains("lh-active")?this.close():this.open(this._getNextMenuItem())}onToggleKeydown(e){switch(e.code){case"ArrowUp":e.preventDefault(),this.open(this._getPreviousMenuItem());break;case"ArrowDown":case"Enter":case" ":e.preventDefault(),this.open(this._getNextMenuItem());break;default:}}onMenuKeydown(e){let t=e.target;switch(e.code){case"ArrowUp":e.preventDefault(),this._getPreviousMenuItem(t).focus();break;case"ArrowDown":e.preventDefault(),this._getNextMenuItem(t).focus();break;case"Home":e.preventDefault(),this._getNextMenuItem().focus();break;case"End":e.preventDefault(),this._getPreviousMenuItem().focus();break;default:}}onDocumentKeyDown(e){e.keyCode===27&&this.close()}onMenuFocusOut(e){let t=e.relatedTarget;this._menuEl.contains(t)||this.close()}_getNextSelectableNode(e,t){let n=e.filter(i=>i instanceof HTMLElement).filter(i=>!(i.hasAttribute("disabled")||window.getComputedStyle(i).display==="none")),o=t?n.indexOf(t)+1:0;return o>=n.length&&(o=0),n[o]}_getNextMenuItem(e){let t=Array.from(this._menuEl.childNodes);return this._getNextSelectableNode(t,e)}_getPreviousMenuItem(e){let t=Array.from(this._menuEl.childNodes).reverse();return this._getNextSelectableNode(t,e)}};var ae=class{constructor(e,t){this.lhr,this._reportUIFeatures=e,this._dom=t,this._dropDownMenu=new ie(this._dom),this._copyAttempt=!1,this.topbarEl,this.categoriesEl,this.stickyHeaderEl,this.highlightEl,this.onDropDownMenuClick=this.onDropDownMenuClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onCopy=this.onCopy.bind(this),this.collapseAllDetails=this.collapseAllDetails.bind(this)}enable(e){this.lhr=e,this._dom.rootEl.addEventListener("keyup",this.onKeyUp),this._dom.document().addEventListener("copy",this.onCopy),this._dropDownMenu.setup(this.onDropDownMenuClick),this._setUpCollapseDetailsAfterPrinting(),this._dom.find(".lh-topbar__logo",this._dom.rootEl).addEventListener("click",()=>W(this._dom)),this._setupStickyHeader()}onDropDownMenuClick(e){e.preventDefault();let t=e.target;if(!(!t||!t.hasAttribute("data-action"))){switch(t.getAttribute("data-action")){case"copy":this.onCopyButtonClick();break;case"print-summary":this.collapseAllDetails(),this._print();break;case"print-expanded":this.expandAllDetails(),this._print();break;case"save-json":{let n=JSON.stringify(this.lhr,null,2);this._reportUIFeatures._saveFile(new Blob([n],{type:"application/json"}));break}case"save-html":{let n=this._reportUIFeatures.getReportHtml();try{this._reportUIFeatures._saveFile(new Blob([n],{type:"text/html"}))}catch(o){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+o.message})}break}case"open-viewer":{this._dom.isDevTools()?Se(this.lhr):Ae(this.lhr);break}case"save-gist":{this._reportUIFeatures.saveAsGist();break}case"toggle-dark":{W(this._dom);break}case"view-unthrottled-trace":this._reportUIFeatures._opts.onViewTrace?.()}this._dropDownMenu.close()}}onCopy(e){this._copyAttempt&&e.clipboardData&&(e.preventDefault(),e.clipboardData.setData("text/plain",JSON.stringify(this.lhr,null,2)),this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:"Report JSON copied to clipboard"})),this._copyAttempt=!1}onCopyButtonClick(){this._dom.fireEventOn("lh-analytics",this._dom.document(),{name:"copy"});try{this._dom.document().queryCommandSupported("copy")&&(this._copyAttempt=!0,this._dom.document().execCommand("copy")||(this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"warn",msg:"Your browser does not support copy to clipboard."})))}catch(e){this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:e.message})}}onKeyUp(e){(e.ctrlKey||e.metaKey)&&e.keyCode===80&&this._dropDownMenu.close()}expandAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(t=>t.open=!0)}collapseAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(t=>t.open=!1)}_print(){this._reportUIFeatures._opts.onPrintOverride?this._reportUIFeatures._opts.onPrintOverride(this._dom.rootEl):self.print()}resetUIState(){this._dropDownMenu.close()}_getScrollParent(e){let{overflowY:t}=window.getComputedStyle(e);return t!=="visible"&&t!=="hidden"?e:e.parentElement?this._getScrollParent(e.parentElement):document}_setUpCollapseDetailsAfterPrinting(){"onbeforeprint"in self?self.addEventListener("afterprint",this.collapseAllDetails):self.matchMedia("print").addListener(t=>{t.matches?this.expandAllDetails():this.collapseAllDetails()})}_setupStickyHeader(){this.topbarEl=this._dom.find("div.lh-topbar",this._dom.rootEl),this.categoriesEl=this._dom.find("div.lh-categories",this._dom.rootEl),requestAnimationFrame(()=>requestAnimationFrame(()=>{try{this.stickyHeaderEl=this._dom.find("div.lh-sticky-header",this._dom.rootEl)}catch{return}this.highlightEl=this._dom.createChildOf(this.stickyHeaderEl,"div","lh-highlighter");let e=this._getScrollParent(this._dom.find(".lh-container",this._dom.rootEl));e.addEventListener("scroll",()=>this._updateStickyHeader());let t=e instanceof window.Document?document.documentElement:e;new window.ResizeObserver(()=>this._updateStickyHeader()).observe(t)}))}_updateStickyHeader(){if(!this.stickyHeaderEl)return;let e=this.topbarEl.getBoundingClientRect().bottom,t=this.categoriesEl.getBoundingClientRect().top,n=e>=t,i=Array.from(this._dom.rootEl.querySelectorAll(".lh-category")).filter(h=>h.getBoundingClientRect().top-window.innerHeight/2<0),a=i.length>0?i.length-1:0,l=this.stickyHeaderEl.querySelectorAll(".lh-gauge__wrapper, .lh-fraction__wrapper"),s=l[a],c=l[0].getBoundingClientRect().left,d=s.getBoundingClientRect().left-c;this.highlightEl.style.transform=`translate(${d}px)`,this.stickyHeaderEl.classList.toggle("lh-sticky-header--visible",n)}};function yt(r,e){let t=e?new Date(e):new Date,n=t.toLocaleTimeString("en-US",{hour12:!1}),o=t.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");o.unshift(o.pop());let i=o.join("-");return`${r.slice(0,200)}_${i}_${n}`.replace(/[/?<>\\:*|"]/g,"-")}function Me(r){let{hostname:e,pathname:t}=new URL(r.finalDisplayedUrl),n=e+t.replace(/\/$/,"");return yt(n,r.fetchTime)}function xt(r){return Array.from(r.tBodies[0].rows)}var ne=class{constructor(e,t={}){this.json,this._dom=e,this._opts=t,this._topbar=t.omitTopbar?null:new ae(this,e),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(e){this.json=e,this._fullPageScreenshot=E.getFullPageScreenshot(e),this._topbar&&(this._topbar.enable(e),this._topbar.resetUIState()),this._setupMediaQueryListeners(),this._setupThirdPartyFilter(),this._setupElementScreenshotOverlay(this._dom.rootEl);let t=this._dom.isDevTools()||this._opts.disableDarkMode||this._opts.disableAutoDarkModeAndFireworks;!t&&window.matchMedia("(prefers-color-scheme: dark)").matches&&W(this._dom,!0);let o=["performance","accessibility","best-practices","seo"].every(s=>{let c=e.categories[s];return c&&c.score===1}),i=this._opts.disableFireworks||this._opts.disableAutoDarkModeAndFireworks;if(o&&!i&&(this._enableFireworks(),t||W(this._dom,!0)),e.categories.performance&&e.categories.performance.auditRefs.some(s=>!!(s.group==="metrics"&&e.audits[s.id].errorMessage))){let s=this._dom.find("input.lh-metrics-toggle__input",this._dom.rootEl);s.checked=!0}this.json.audits["script-treemap-data"]&&this.json.audits["script-treemap-data"].details&&this.addButton({text:m.strings.viewTreemapLabel,icon:"treemap",onClick:()=>ze(this.json)}),this._opts.onViewTrace&&(e.configSettings.throttlingMethod==="simulate"?this._dom.find('a[data-action="view-unthrottled-trace"]',this._dom.rootEl).classList.remove("lh-hidden"):this.addButton({text:m.strings.viewTraceLabel,onClick:()=>this._opts.onViewTrace?.()})),this._opts.getStandaloneReportHTML&&this._dom.find('a[data-action="save-html"]',this._dom.rootEl).classList.remove("lh-hidden");for(let s of this._dom.findAll("[data-i18n]",this._dom.rootEl)){let d=s.getAttribute("data-i18n");s.textContent=m.strings[d]}}addButton(e){let t=this._dom.rootEl.querySelector(".lh-audit-group--metrics");if(!t)return;let n=t.querySelector(".lh-buttons");n||(n=this._dom.createChildOf(t,"div","lh-buttons"));let o=["lh-button"];e.icon&&(o.push("lh-report-icon"),o.push(`lh-report-icon--${e.icon}`));let i=this._dom.createChildOf(n,"button",o.join(" "));return i.textContent=e.text,i.addEventListener("click",e.onClick),i}resetUIState(){this._topbar&&this._topbar.resetUIState()}getReportHtml(){if(!this._opts.getStandaloneReportHTML)throw new Error("`getStandaloneReportHTML` is not set");return this.resetUIState(),this._opts.getStandaloneReportHTML()}saveAsGist(){throw new Error("Cannot save as gist from base report")}_enableFireworks(){this._dom.find(".lh-scores-container",this._dom.rootEl).classList.add("lh-score100")}_setupMediaQueryListeners(){let e=self.matchMedia("(max-width: 500px)");e.addListener(this.onMediaQueryChange),this.onMediaQueryChange(e)}_resetUIState(){this._topbar&&this._topbar.resetUIState()}onMediaQueryChange(e){this._dom.rootEl.classList.toggle("lh-narrow",e.matches)}_setupThirdPartyFilter(){let e=["uses-rel-preconnect","third-party-facades","network-dependency-tree-insight"],t=["legacy-javascript","legacy-javascript-insight"];Array.from(this._dom.rootEl.querySelectorAll("table.lh-table")).filter(i=>i.querySelector("td.lh-table-column--url, td.lh-table-column--source-location")).filter(i=>{let a=i.closest(".lh-audit");if(!a)throw new Error(".lh-table not within audit");return!e.includes(a.id)}).forEach(i=>{let a=xt(i),l=a.filter(f=>!f.classList.contains("lh-sub-item-row")),s=this._getThirdPartyRows(l,E.getFinalDisplayedUrl(this.json)),c=a.some(f=>f.classList.contains("lh-row--even")),d=this._dom.createComponent("3pFilter"),h=this._dom.find("input",d);h.addEventListener("change",f=>{let u=f.target instanceof HTMLInputElement&&!f.target.checked,v=!0,_=l[0];for(;_;){let x=u&&s.includes(_);do _.classList.toggle("lh-row--hidden",x),c&&(_.classList.toggle("lh-row--even",!x&&v),_.classList.toggle("lh-row--odd",!x&&!v)),_=_.nextElementSibling;while(_&&_.classList.contains("lh-sub-item-row"));x||(v=!v)}});let p=s.filter(f=>!f.classList.contains("lh-row--group")).length;this._dom.find(".lh-3p-filter-count",d).textContent=`${p}`,this._dom.find(".lh-3p-ui-string",d).textContent=m.strings.thirdPartyResourcesLabel;let g=s.length===l.length,b=!s.length;if((g||b)&&(this._dom.find("div.lh-3p-filter",d).hidden=!0),!i.parentNode)return;i.parentNode.insertBefore(d,i);let w=i.closest(".lh-audit");if(!w)throw new Error(".lh-table not within audit");t.includes(w.id)&&!g&&h.click()})}_setupElementScreenshotOverlay(e){this._fullPageScreenshot&&G.installOverlayFeature({dom:this._dom,rootEl:e,overlayContainerEl:e,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(e,t){let n=E.getEntityFromUrl(t,this.json.entities),o=this.json.entities?.find(a=>a.isFirstParty===!0)?.name,i=[];for(let a of e){if(o){if(!a.dataset.entity||a.dataset.entity===o)continue}else{let l=a.querySelector("div.lh-text__url");if(!l)continue;let s=l.dataset.url;if(!s||!(E.getEntityFromUrl(s,this.json.entities)!==n))continue}i.push(a)}return i}_saveFile(e){let t=e.type.match("json")?".json":".html",n=Me({finalDisplayedUrl:E.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime})+t;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(e,n):this._dom.saveFile(e,n)}};function kt(r,e={}){let t=document.createElement("article");t.classList.add("lh-root","lh-vars");let n=new Q(t.ownerDocument,t);return new te(n).renderReport(r,t,e),new ne(n,e).initFeatures(r),t}function Et(r,e){return{lhr:r,missingIcuMessageIds:[]}}function Lt(r,e){}function Ct(r){return!1}var St={registerLocaleData:Lt,hasLocale:Ct};export{Q as DOM,te as ReportRenderer,ne as ReportUIFeatures,St as format,kt as renderReport,Et as swapLocale};
2804
2804
  /**
2805
2805
  * @license
2806
2806
  * Copyright 2017 Google LLC
@@ -2874,7 +2874,7 @@ details[open] .lh-clump-toggletext--hide { display: block;}
2874
2874
  }
2875
2875
  }
2876
2876
  `),e.append(n);let a=t.createElement("div","lh-topbar"),i=t.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");i.setAttribute("role","img"),i.setAttribute("title","Lighthouse logo"),i.setAttribute("fill","none"),i.setAttribute("xmlns","http://www.w3.org/2000/svg"),i.setAttribute("viewBox","0 0 48 48");let o=t.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d","m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z"),o.setAttribute("fill","#F63");let r=t.createElementNS("http://www.w3.org/2000/svg","path");r.setAttribute("d","M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z"),r.setAttribute("fill","#FFA385");let s=t.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("fill","#FF3"),s.setAttribute("d","M20.5 10h7v7h-7z"),i.append(" ",o," ",r," ",s," ");let p=t.createElement("a","lh-topbar__url");p.setAttribute("href",""),p.setAttribute("target","_blank"),p.setAttribute("rel","noopener");let l=t.createElement("div","lh-tools"),m=t.createElement("div","lh-tools-locale lh-hidden"),d=t.createElement("button","lh-button lh-tool-locale__button");d.setAttribute("id","lh-button__swap-locales"),d.setAttribute("title","Show Language Picker"),d.setAttribute("aria-label","Toggle language picker"),d.setAttribute("aria-haspopup","menu"),d.setAttribute("aria-expanded","false"),d.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");let u=t.createElementNS("http://www.w3.org/2000/svg","svg");u.setAttribute("width","20px"),u.setAttribute("height","20px"),u.setAttribute("viewBox","0 0 24 24"),u.setAttribute("fill","currentColor");let h=t.createElementNS("http://www.w3.org/2000/svg","path");h.setAttribute("d","M0 0h24v24H0V0z"),h.setAttribute("fill","none");let b=t.createElementNS("http://www.w3.org/2000/svg","path");b.setAttribute("d","M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"),u.append(h,b),d.append(" ",u," ");let C=t.createElement("div","lh-tools-locale__selector-wrapper");C.setAttribute("id","lh-tools-locale__selector-wrapper"),C.setAttribute("role","menu"),C.setAttribute("aria-labelledby","lh-button__swap-locales"),C.setAttribute("aria-hidden","true"),C.append(" "," "),m.append(" ",d," ",C," ");let v=t.createElement("button","lh-tools__button");v.setAttribute("id","lh-tools-button"),v.setAttribute("title","Tools menu"),v.setAttribute("aria-label","Toggle report tools menu"),v.setAttribute("aria-haspopup","menu"),v.setAttribute("aria-expanded","false"),v.setAttribute("aria-controls","lh-tools-dropdown");let g=t.createElementNS("http://www.w3.org/2000/svg","svg");g.setAttribute("width","100%"),g.setAttribute("height","100%"),g.setAttribute("viewBox","0 0 24 24");let f=t.createElementNS("http://www.w3.org/2000/svg","path");f.setAttribute("d","M0 0h24v24H0z"),f.setAttribute("fill","none");let _=t.createElementNS("http://www.w3.org/2000/svg","path");_.setAttribute("d","M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"),g.append(" ",f," ",_," "),v.append(" ",g," ");let w=t.createElement("div","lh-tools__dropdown");w.setAttribute("id","lh-tools-dropdown"),w.setAttribute("role","menu"),w.setAttribute("aria-labelledby","lh-tools-button");let k=t.createElement("a","lh-report-icon lh-report-icon--print");k.setAttribute("role","menuitem"),k.setAttribute("tabindex","-1"),k.setAttribute("href","#"),k.setAttribute("data-i18n","dropdownPrintSummary"),k.setAttribute("data-action","print-summary");let I=t.createElement("a","lh-report-icon lh-report-icon--print");I.setAttribute("role","menuitem"),I.setAttribute("tabindex","-1"),I.setAttribute("href","#"),I.setAttribute("data-i18n","dropdownPrintExpanded"),I.setAttribute("data-action","print-expanded");let D=t.createElement("a","lh-report-icon lh-report-icon--copy");D.setAttribute("role","menuitem"),D.setAttribute("tabindex","-1"),D.setAttribute("href","#"),D.setAttribute("data-i18n","dropdownCopyJSON"),D.setAttribute("data-action","copy");let j=t.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");j.setAttribute("role","menuitem"),j.setAttribute("tabindex","-1"),j.setAttribute("href","#"),j.setAttribute("data-i18n","dropdownSaveHTML"),j.setAttribute("data-action","save-html");let W=t.createElement("a","lh-report-icon lh-report-icon--download");W.setAttribute("role","menuitem"),W.setAttribute("tabindex","-1"),W.setAttribute("href","#"),W.setAttribute("data-i18n","dropdownSaveJSON"),W.setAttribute("data-action","save-json");let z=t.createElement("a","lh-report-icon lh-report-icon--open");z.setAttribute("role","menuitem"),z.setAttribute("tabindex","-1"),z.setAttribute("href","#"),z.setAttribute("data-i18n","dropdownViewer"),z.setAttribute("data-action","open-viewer");let B=t.createElement("a","lh-report-icon lh-report-icon--open");B.setAttribute("role","menuitem"),B.setAttribute("tabindex","-1"),B.setAttribute("href","#"),B.setAttribute("data-i18n","dropdownSaveGist"),B.setAttribute("data-action","save-gist");let K=t.createElement("a","lh-report-icon lh-report-icon--open lh-hidden");K.setAttribute("role","menuitem"),K.setAttribute("tabindex","-1"),K.setAttribute("href","#"),K.setAttribute("data-i18n","dropdownViewUnthrottledTrace"),K.setAttribute("data-action","view-unthrottled-trace");let Y=t.createElement("a","lh-report-icon lh-report-icon--dark");return Y.setAttribute("role","menuitem"),Y.setAttribute("tabindex","-1"),Y.setAttribute("href","#"),Y.setAttribute("data-i18n","dropdownDarkTheme"),Y.setAttribute("data-action","toggle-dark"),w.append(" ",k," ",I," ",D," "," ",j," ",W," ",z," ",B," "," ",K," ",Y," "),l.append(" ",m," ",v," ",w," "),a.append(" "," ",i," ",p," ",l," "),e.append(a),e}function Fo(t){let e=t.createFragment(),n=t.createElement("div","lh-warnings lh-warnings--toplevel"),a=t.createElement("p","lh-warnings__msg"),i=t.createElement("ul");return n.append(" ",a," ",i," "),e.append(n),e}function Ta(t,e){switch(e){case"3pFilter":return bo(t);case"audit":return yo(t);case"categoryHeader":return _o(t);case"chevron":return Co(t);case"clump":return wo(t);case"crc":return xo(t);case"crcChain":return So(t);case"elementScreenshot":return ko(t);case"explodeyGauge":return Po(t);case"footer":return Ao(t);case"fraction":return Lo(t);case"gauge":return Eo(t);case"heading":return Io(t);case"metric":return Uo(t);case"scorescale":return To(t);case"scoresWrapper":return No(t);case"snippet":return Ro(t);case"snippetContent":return Do(t);case"snippetHeader":return zo(t);case"snippetLine":return jo(t);case"styles":return Mo(t);case"topbar":return Ho(t);case"warningsToplevel":return Fo(t)}throw new Error("unexpected component: "+e)}var le=class{constructor(e,n){this._document=e,this._lighthouseChannel="unknown",this._componentCache=new Map,this.rootEl=n}createElement(e,n){let a=this._document.createElement(e);if(n)for(let i of n.split(/\s+/))i&&a.classList.add(i);return a}createElementNS(e,n,a){let i=this._document.createElementNS(e,n);if(a)for(let o of a.split(/\s+/))o&&i.classList.add(o);return i}createSVGElement(e,n){return this._document.createElementNS("http://www.w3.org/2000/svg",e,n)}createFragment(){return this._document.createDocumentFragment()}createTextNode(e){return this._document.createTextNode(e)}createChildOf(e,n,a){let i=this.createElement(n,a);return e.append(i),i}createComponent(e){let n=this._componentCache.get(e);if(n){let i=n.cloneNode(!0);return this.findAll("style",i).forEach(o=>o.remove()),i}return n=Ta(this,e),this._componentCache.set(e,n),n.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(e,n={}){let a=this.createElement("span");for(let i of N.splitMarkdownLink(e)){let o=i.text.includes("`")?this.convertMarkdownCodeSnippets(i.text):i.text;if(!i.isLink){a.append(o);continue}let r=new URL(i.linkHref);(["https://developers.google.com","https://web.dev","https://developer.chrome.com"].includes(r.origin)||n.alwaysAppendUtmSource)&&(r.searchParams.set("utm_source","lighthouse"),r.searchParams.set("utm_medium",this._lighthouseChannel));let p=this.createElement("a");p.rel="noopener",p.target="_blank",p.append(o),this.safelySetHref(p,r.href),a.append(p)}return a}safelySetHref(e,n){if(n=n||"",n.startsWith("#")){e.href=n;return}let a=["https:","http:"],i;try{i=new URL(n)}catch{}i&&a.includes(i.protocol)&&(e.href=i.href)}safelySetBlobHref(e,n){if(n.type!=="text/html"&&n.type!=="application/json")throw new Error("Unsupported blob type");let a=URL.createObjectURL(n);e.href=a}convertMarkdownCodeSnippets(e){let n=this.createElement("span");for(let a of N.splitMarkdownCodeSpans(e))if(a.isCode){let i=this.createElement("code");i.textContent=a.text,n.append(i)}else n.append(this._document.createTextNode(a.text));return n}setLighthouseChannel(e){this._lighthouseChannel=e}document(){return this._document}isDevTools(){return!!this._document.querySelector(".lh-devtools")}find(e,n=this.rootEl??this._document){let a=this.maybeFind(e,n);if(a===null)throw new Error(`query ${e} not found`);return a}maybeFind(e,n=this.rootEl??this._document){return n.querySelector(e)}findAll(e,n){return Array.from(n.querySelectorAll(e))}fireEventOn(e,n=this._document,a){let i=new CustomEvent(e,a?{detail:a}:void 0);n.dispatchEvent(i)}saveFile(e,n){let a=this.createElement("a");a.download=n,this.safelySetBlobHref(a,e),this._document.body.append(a),a.click(),this._document.body.removeChild(a),setTimeout(()=>URL.revokeObjectURL(a.href),500)}};var pe=class{constructor(e,n){this.dom=e,this.detailsRenderer=n}get _clumpTitles(){return{warning:y.strings.warningAuditsGroupTitle,manual:y.strings.manualAuditsGroupTitle,passed:y.strings.passedAuditsGroupTitle,notApplicable:y.strings.notApplicableAuditsGroupTitle}}renderAudit(e){let n=y.strings,a=this.dom.createComponent("audit"),i=this.dom.find("div.lh-audit",a);i.id=e.result.id;let o=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",i).textContent=e.result.displayValue);let r=this.dom.find(".lh-audit__title",i);r.append(this.dom.convertMarkdownCodeSnippets(e.result.title));let s=this.dom.find(".lh-audit__description",i);s.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(let u of e.relevantMetrics||[]){let h=this.dom.createChildOf(s,"span","lh-audit__adorn");h.title=`Relevant to ${u.result.title}`,h.textContent=u.acronym||u.id}if(e.weight===0){let u=this.dom.createChildOf(s,"span","lh-audit__adorn");u.title=y.strings.unscoredTitle,u.textContent=y.strings.unscoredLabel}e.stackPacks&&e.stackPacks.forEach(u=>{let h=this.dom.createElement("img","lh-audit__stackpack__img");h.src=u.iconDataURL,h.alt=u.title;let b=this.dom.convertMarkdownLinkSnippets(u.description,{alwaysAppendUtmSource:!0}),C=this.dom.createElement("div","lh-audit__stackpack");C.append(h,b),this.dom.find(".lh-audit__stackpacks",i).append(C)});let p=this.dom.find("details",i);if(e.result.details){let u=this.detailsRenderer.render(e.result.details);u&&(u.classList.add("lh-details"),p.append(u))}if(this.dom.find(".lh-chevron-container",i).append(this._createChevron()),this._setRatingClass(i,e.result.score,o),e.result.scoreDisplayMode==="error"){i.classList.add("lh-audit--error");let u=this.dom.find(".lh-audit__display-text",i);u.textContent=n.errorLabel,u.classList.add("lh-tooltip-boundary");let h=this.dom.createChildOf(u,"div","lh-tooltip lh-tooltip--error");h.textContent=e.result.errorMessage||n.errorMissingAuditInfo}else if(e.result.explanation){let u=this.dom.createChildOf(r,"div","lh-audit-explanation");u.textContent=e.result.explanation}let l=e.result.warnings;if(!l||l.length===0)return i;let m=this.dom.find("summary",p),d=this.dom.createChildOf(m,"div","lh-warnings");if(this.dom.createChildOf(d,"span").textContent=n.warningHeader,l.length===1)d.append(this.dom.createTextNode(l.join("")));else{let u=this.dom.createChildOf(d,"ul");for(let h of l){let b=this.dom.createChildOf(u,"li");b.textContent=h}}return i}injectFinalScreenshot(e,n,a){let i=n["final-screenshot"];if(!i||i.scoreDisplayMode==="error"||!i.details||i.details.type!=="screenshot")return null;let o=this.dom.createElement("img","lh-final-ss-image"),r=i.details.data;o.src=r,o.alt=i.title;let s=this.dom.find(".lh-category .lh-category-header",e),p=this.dom.createElement("div","lh-category-headercol"),l=this.dom.createElement("div","lh-category-headercol lh-category-headercol--separator"),m=this.dom.createElement("div","lh-category-headercol");p.append(...s.childNodes),p.append(a),m.append(o),s.append(p,l,m),s.classList.add("lh-category-header__finalscreenshot")}_createChevron(){let e=this.dom.createComponent("chevron");return this.dom.find("svg.lh-chevron",e)}_setRatingClass(e,n,a){let i=P.calculateRating(n,a);return e.classList.add(`lh-audit--${a.toLowerCase()}`),a!=="informative"&&e.classList.add(`lh-audit--${i}`),e}renderCategoryHeader(e,n,a){let i=this.dom.createComponent("categoryHeader"),o=this.dom.find(".lh-score__gauge",i),r=this.renderCategoryScore(e,n,a);if(o.append(r),e.description){let s=this.dom.convertMarkdownLinkSnippets(e.description);this.dom.find(".lh-category-header__description",i).append(s)}return i}renderAuditGroup(e){let n=this.dom.createElement("div","lh-audit-group"),a=this.dom.createElement("div","lh-audit-group__header");this.dom.createChildOf(a,"span","lh-audit-group__title").textContent=e.title,n.append(a);let i=null;return e.description&&(i=this.dom.convertMarkdownLinkSnippets(e.description),i.classList.add("lh-audit-group__description","lh-audit-group__footer"),n.append(i)),[n,i]}_renderGroupedAudits(e,n){let a=new Map,i="NotAGroup";a.set(i,[]);for(let r of e){let s=r.group||i,p=a.get(s)||[];p.push(r),a.set(s,p)}let o=[];for(let[r,s]of a){if(r===i){for(let d of s)o.push(this.renderAudit(d));continue}let p=n[r],[l,m]=this.renderAuditGroup(p);for(let d of s)l.insertBefore(this.renderAudit(d),m);l.classList.add(`lh-audit-group--${r}`),o.push(l)}return o}renderUnexpandableClump(e,n){let a=this.dom.createElement("div");return this._renderGroupedAudits(e,n).forEach(o=>a.append(o)),a}renderClump(e,{auditRefsOrEls:n,description:a,openByDefault:i}){let o=this.dom.createComponent("clump"),r=this.dom.find(".lh-clump",o);i&&r.setAttribute("open","");let s=this.dom.find(".lh-audit-group__header",r),p=this._clumpTitles[e];this.dom.find(".lh-audit-group__title",s).textContent=p;let l=this.dom.find(".lh-audit-group__itemcount",r);l.textContent=`(${n.length})`;let m=n.map(u=>u instanceof HTMLElement?u:this.renderAudit(u));r.append(...m);let d=this.dom.find(".lh-audit-group",o);if(a){let u=this.dom.convertMarkdownLinkSnippets(a);u.classList.add("lh-audit-group__description","lh-audit-group__footer"),d.append(u)}return this.dom.find(".lh-clump-toggletext--show",d).textContent=y.strings.show,this.dom.find(".lh-clump-toggletext--hide",d).textContent=y.strings.hide,r.classList.add(`lh-clump--${e.toLowerCase()}`),d}renderCategoryScore(e,n,a){let i;if(a&&P.shouldDisplayAsFraction(a.gatherMode,e)?i=this.renderCategoryFraction(e):i=this.renderScoreGauge(e,n),a?.omitLabel&&this.dom.find(".lh-gauge__label,.lh-fraction__label",i).remove(),a?.onPageAnchorRendered){let o=this.dom.find("a",i);a.onPageAnchorRendered(o)}return i}renderScoreGauge(e,n){let a=this.dom.createComponent("gauge"),i=this.dom.find("a.lh-gauge__wrapper",a);P.isPluginCategory(e.id)&&i.classList.add("lh-gauge__wrapper--plugin");let o=Number(e.score),r=this.dom.find(".lh-gauge",a),s=this.dom.find("circle.lh-gauge-arc",r);s&&this._setGaugeArc(s,o);let p=Math.round(o*100),l=this.dom.find("div.lh-gauge__percentage",a);return l.textContent=p.toString(),e.score===null&&(l.classList.add("lh-gauge--error"),l.textContent="",l.title=y.strings.errorLabel),e.auditRefs.length===0||this.hasApplicableAudits(e)?i.classList.add(`lh-gauge__wrapper--${P.calculateRating(e.score)}`):(i.classList.add("lh-gauge__wrapper--not-applicable"),l.textContent="-",l.title=y.strings.notApplicableAuditsGroupTitle),this.dom.find(".lh-gauge__label",a).textContent=e.title,a}renderCategoryFraction(e){let n=this.dom.createComponent("fraction"),a=this.dom.find("a.lh-fraction__wrapper",n),{numPassed:i,numPassableAudits:o,totalWeight:r}=P.calculateCategoryFraction(e),s=i/o,p=this.dom.find(".lh-fraction__content",n),l=this.dom.createElement("span");l.textContent=`${i}/${o}`,p.append(l);let m=P.calculateRating(s);return r===0&&(m="null"),a.classList.add(`lh-fraction__wrapper--${m}`),this.dom.find(".lh-fraction__label",n).textContent=e.title,n}hasApplicableAudits(e){return e.auditRefs.some(n=>n.result.scoreDisplayMode!=="notApplicable")}_setGaugeArc(e,n){let a=2*Math.PI*Number(e.getAttribute("r")),i=Number(e.getAttribute("stroke-width")),o=.25*i/a;e.style.transform=`rotate(${-90+o*360}deg)`;let r=n*a-i/2;n===0&&(e.style.opacity="0"),n===1&&(r=a),e.style.strokeDasharray=`${Math.max(r,0)} ${a}`}_auditHasWarning(e){return!!e.result.warnings?.length}_getClumpIdForAuditRef(e){let n=e.result.scoreDisplayMode;return n==="manual"||n==="notApplicable"?n:P.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,n={},a){let i=this.dom.createElement("div","lh-category");i.id=e.id,i.append(this.renderCategoryHeader(e,n,a));let o=new Map;o.set("failed",[]),o.set("warning",[]),o.set("manual",[]),o.set("passed",[]),o.set("notApplicable",[]);for(let s of e.auditRefs){if(s.group==="hidden")continue;let p=this._getClumpIdForAuditRef(s),l=o.get(p);l.push(s),o.set(p,l)}for(let s of o.values())s.sort((p,l)=>l.weight-p.weight);let r=o.get("failed")?.length;for(let[s,p]of o){if(p.length===0)continue;if(s==="failed"){let u=this.renderUnexpandableClump(p,n);u.classList.add("lh-clump--failed"),i.append(u);continue}let l=s==="manual"?e.manualDescription:void 0,m=s==="warning"||s==="manual"&&r===0,d=this.renderClump(s,{auditRefsOrEls:p,description:l,openByDefault:m});i.append(d)}return i}};var Oe=class{static createSegment(e,n,a,i){let o=e[n],r=Object.keys(e),s=r.indexOf(n)===r.length-1,p=!!o.children&&Object.keys(o.children).length>0,l=Array.isArray(a)?a.slice(0):[];return typeof i<"u"&&l.push(!i),{node:o,isLastChild:s,hasChildren:p,treeMarkers:l}}static createChainNode(e,n,a){let i=e.createComponent("crcChain"),o,r,s,p,l;"request"in n.node?(r=n.node.request.transferSize,s=n.node.request.url,o=(n.node.request.endTime-n.node.request.startTime)*1e3,p=!1):(r=n.node.transferSize,s=n.node.url,o=n.node.navStartToEndTime,p=!0,l=n.node.isLongest);let m=e.find(".lh-crc-node",i);m.setAttribute("title",s),l&&m.classList.add("lh-crc-node__longest");let d=e.find(".lh-crc-node__tree-marker",i);n.treeMarkers.forEach(v=>{let g=v?"lh-tree-marker lh-vert":"lh-tree-marker";d.append(e.createElement("span",g),e.createElement("span","lh-tree-marker"))});let u=n.isLastChild?"lh-tree-marker lh-up-right":"lh-tree-marker lh-vert-right",h=n.hasChildren?"lh-tree-marker lh-horiz-down":"lh-tree-marker lh-right";d.append(e.createElement("span",u),e.createElement("span","lh-tree-marker lh-right"),e.createElement("span",h));let b=a.renderTextURL(s),C=e.find(".lh-crc-node__tree-value",i);if(C.append(b),!n.hasChildren||p){let v=e.createElement("span","lh-crc-node__chain-duration");v.textContent=" - "+y.i18n.formatMilliseconds(o)+", ";let g=e.createElement("span","lh-crc-node__chain-size");g.textContent=y.i18n.formatBytesToKiB(r,.01),C.append(v,g)}return i}static buildTree(e,n,a,i){if(a.append(Be.createChainNode(e,n,i)),n.node.children)for(let o of Object.keys(n.node.children)){let r=Be.createSegment(n.node.children,o,n.treeMarkers,n.isLastChild);Be.buildTree(e,r,a,i)}}static render(e,n,a){let i=e.createComponent("crc"),o=e.find(".lh-crc",i);e.find(".lh-crc-initial-nav",i).textContent=y.strings.crcInitialNavigation,e.find(".lh-crc__longest_duration_label",i).textContent=y.strings.crcLongestDurationLabel,e.find(".lh-crc__longest_duration",i).textContent=y.i18n.formatMilliseconds(n.longestChain.duration);let r=n.chains;for(let s of Object.keys(r)){let p=Be.createSegment(r,s);Be.buildTree(e,p,o,a)}return e.find(".lh-crc-container",i)}},Be=Oe;function Bo(t,e){return e.left<=t.width&&0<=e.right&&e.top<=t.height&&0<=e.bottom}function Na(t,e,n){return t<e?e:t>n?n:t}function Oo(t){return{x:t.left+t.width/2,y:t.top+t.height/2}}var ue=class t{static getScreenshotPositions(e,n,a){let i=Oo(e),o=Na(i.x-n.width/2,0,a.width-n.width),r=Na(i.y-n.height/2,0,a.height-n.height);return{screenshot:{left:o,top:r},clip:{left:e.left-o,top:e.top-r}}}static renderClipPathInScreenshot(e,n,a,i,o){let r=e.find("clipPath",n),s=`clip-${y.getUniqueSuffix()}`;r.id=s,n.style.clipPath=`url(#${s})`;let p=a.top/o.height,l=p+i.height/o.height,m=a.left/o.width,d=m+i.width/o.width,u=[`0,0 1,0 1,${p} 0,${p}`,`0,${l} 1,${l} 1,1 0,1`,`0,${p} ${m},${p} ${m},${l} 0,${l}`,`${d},${p} 1,${p} 1,${l} ${d},${l}`];for(let h of u){let b=e.createElementNS("http://www.w3.org/2000/svg","polygon");b.setAttribute("points",h),r.append(b)}}static installFullPageScreenshot(e,n){e.style.setProperty("--element-screenshot-url",`url('${n.data}')`)}static installOverlayFeature(e){let{dom:n,rootEl:a,overlayContainerEl:i,fullPageScreenshot:o}=e,r="lh-screenshot-overlay--enabled";a.classList.contains(r)||(a.classList.add(r),a.addEventListener("click",s=>{let p=s.target;if(!p)return;let l=p.closest(".lh-node > .lh-element-screenshot");if(!l)return;let m=n.createElement("div","lh-element-screenshot__overlay");i.append(m);let d={width:m.clientWidth*.95,height:m.clientHeight*.8},u={width:Number(l.dataset.rectWidth),height:Number(l.dataset.rectHeight),left:Number(l.dataset.rectLeft),right:Number(l.dataset.rectLeft)+Number(l.dataset.rectWidth),top:Number(l.dataset.rectTop),bottom:Number(l.dataset.rectTop)+Number(l.dataset.rectHeight)},h=t.render(n,o.screenshot,u,d);if(!h){m.remove();return}m.append(h),m.addEventListener("click",()=>m.remove())}))}static _computeZoomFactor(e,n){let i={x:n.width/e.width,y:n.height/e.height},o=.75*Math.min(i.x,i.y);return Math.min(1,o)}static render(e,n,a,i){if(!Bo(n,a))return null;let o=e.createComponent("elementScreenshot"),r=e.find("div.lh-element-screenshot",o);r.dataset.rectWidth=a.width.toString(),r.dataset.rectHeight=a.height.toString(),r.dataset.rectLeft=a.left.toString(),r.dataset.rectTop=a.top.toString();let s=this._computeZoomFactor(a,i),p={width:i.width/s,height:i.height/s};p.width=Math.min(n.width,p.width),p.height=Math.min(n.height,p.height);let l={width:p.width*s,height:p.height*s},m=t.getScreenshotPositions(a,p,{width:n.width,height:n.height}),d=e.find("div.lh-element-screenshot__image",r);d.style.width=l.width+"px",d.style.height=l.height+"px",d.style.backgroundPositionY=-(m.screenshot.top*s)+"px",d.style.backgroundPositionX=-(m.screenshot.left*s)+"px",d.style.backgroundSize=`${n.width*s}px ${n.height*s}px`;let u=e.find("div.lh-element-screenshot__element-marker",r);u.style.width=a.width*s+"px",u.style.height=a.height*s+"px",u.style.left=m.clip.left*s+"px",u.style.top=m.clip.top*s+"px";let h=e.find("div.lh-element-screenshot__mask",r);return h.style.width=l.width+"px",h.style.height=l.height+"px",t.renderClipPathInScreenshot(e,h,m.clip,a,p),r}};var Go=["http://","https://","data:"],Vo=["bytes","numeric","ms","timespanMs"],_e=class{constructor(e,n={}){this._dom=e,this._fullPageScreenshot=n.fullPageScreenshot,this._entities=n.entities}render(e){switch(e.type){case"filmstrip":return this._renderFilmstrip(e);case"list":return this._renderList(e);case"checklist":return this._renderChecklist(e);case"table":case"opportunity":return this._renderTable(e);case"network-tree":case"criticalrequestchain":return Oe.render(this._dom,e,this);case"screenshot":case"debugdata":case"treemap-data":return null;default:return this._renderUnknown(e.type,e)}}_renderBytes(e){let n=y.i18n.formatBytesToKiB(e.value,e.granularity||.1),a=this._renderText(n);return a.title=y.i18n.formatBytes(e.value),a}_renderMilliseconds(e){let n;return e.displayUnit==="duration"?n=y.i18n.formatDuration(e.value):n=y.i18n.formatMilliseconds(e.value,e.granularity||10),this._renderText(n)}renderTextURL(e){let n=e,a,i,o;try{let s=N.parseURL(n);a=s.file==="/"?s.origin:s.file,i=s.file==="/"||s.hostname===""?"":`(${s.hostname})`,o=n}catch{a=n}let r=this._dom.createElement("div","lh-text__url");if(r.append(this._createLink({text:a,url:n})),i){let s=this._renderText(i);s.classList.add("lh-text__url-host"),r.append(s)}return o&&(r.title=n,r.dataset.url=n),r}_renderLink(e){return this._createLink(e)}_createLink(e){let n=this._dom.createElement("a");if(this._dom.safelySetHref(n,e.url),!n.href){let a=this._renderText(e.text);return a.classList.add("lh-link"),a}return n.rel="noopener",n.target="_blank",n.textContent=e.text,n.classList.add("lh-link"),n}_renderText(e){let n=this._dom.createElement("div","lh-text");return n.textContent=e,n}_renderBaselineStatus(e){let n=this._dom.createElement("div","lh-baseline-status"),a=e.status;return n.classList.add(`lh-baseline-status--${a}`),n.textContent=String(e.displayString),n}_renderNumeric(e){let n=y.i18n.formatNumber(e.value,e.granularity||.1),a=this._dom.createElement("div","lh-numeric");return a.textContent=n,a}_renderThumbnail(e){let n=this._dom.createElement("img","lh-thumbnail"),a=e;return n.src=a,n.title=a,n.alt="",n}_renderUnknown(e,n){console.error(`Unknown details type: ${e}`,n);let a=this._dom.createElement("details","lh-unknown");return this._dom.createChildOf(a,"summary").textContent=`We don't know how to render audit details of type \`${e}\`. The Lighthouse version that collected this data is likely newer than the Lighthouse version of the report renderer. Expand for the raw JSON.`,this._dom.createChildOf(a,"pre").textContent=JSON.stringify(n,null,2),a}_renderTableValue(e,n){if(e==null)return null;if(typeof e=="object")switch(e.type){case"code":return this._renderCode(e.value);case"link":return this._renderLink(e);case"node":return this.renderNode(e);case"numeric":return this._renderNumeric(e);case"text":return this._renderText(e.value);case"source-location":return this.renderSourceLocation(e);case"url":return this.renderTextURL(e.value);case"baseline-status":return this._renderBaselineStatus(e);default:return this._renderUnknown(e.type,e)}switch(n.valueType){case"bytes":{let a=Number(e);return this._renderBytes({value:a,granularity:n.granularity})}case"code":{let a=String(e);return this._renderCode(a)}case"ms":{let a={value:Number(e),granularity:n.granularity,displayUnit:n.displayUnit};return this._renderMilliseconds(a)}case"numeric":{let a=Number(e);return this._renderNumeric({value:a,granularity:n.granularity})}case"text":{let a=String(e);return this._renderText(a)}case"thumbnail":{let a=String(e);return this._renderThumbnail(a)}case"timespanMs":{let a=Number(e);return this._renderMilliseconds({value:a})}case"url":{let a=String(e);return Go.some(i=>a.startsWith(i))?this.renderTextURL(a):this._renderCode(a)}default:return this._renderUnknown(n.valueType,e)}}_getDerivedSubItemsHeading(e){return e.subItemsHeading?{key:e.subItemsHeading.key||"",valueType:e.subItemsHeading.valueType||e.valueType,granularity:e.subItemsHeading.granularity||e.granularity,displayUnit:e.subItemsHeading.displayUnit||e.displayUnit,label:""}:null}_renderTableRow(e,n){let a=this._dom.createElement("tr");for(let i of n){if(!i||!i.key){this._dom.createChildOf(a,"td","lh-table-column--empty");continue}let o=e[i.key],r;if(o!=null&&(r=this._renderTableValue(o,i)),r){let s=`lh-table-column--${i.valueType}`;this._dom.createChildOf(a,"td",s).append(r)}else this._dom.createChildOf(a,"td","lh-table-column--empty")}return a}_renderTableRowsFromItem(e,n){let a=this._dom.createFragment();if(a.append(this._renderTableRow(e,n)),!e.subItems)return a;let i=n.map(this._getDerivedSubItemsHeading);if(!i.some(Boolean))return a;for(let o of e.subItems.items){let r=this._renderTableRow(o,i);r.classList.add("lh-sub-item-row"),a.append(r)}return a}_adornEntityGroupRow(e){let n=e.dataset.entity;if(!n)return;let a=this._entities?.find(o=>o.name===n);if(!a)return;let i=this._dom.find("td",e);if(a.category){let o=this._dom.createElement("span");o.classList.add("lh-audit__adorn"),o.textContent=a.category,i.append(" ",o)}if(a.isFirstParty){let o=this._dom.createElement("span");o.classList.add("lh-audit__adorn","lh-audit__adorn1p"),o.textContent=y.strings.firstPartyChipLabel,i.append(" ",o)}if(a.homepage){let o=this._dom.createElement("a");this._dom.safelySetHref(o,a.homepage),o.href&&(o.target="_blank",o.title=y.strings.openInANewTabTooltip,o.classList.add("lh-report-icon--external"),i.append(" ",o))}}_renderEntityGroupRow(e,n){let a={...n[0]};a.valueType="text";let i=[a,...n.slice(1)],o=this._dom.createFragment();return o.append(this._renderTableRow(e,i)),this._dom.find("tr",o).classList.add("lh-row--group"),o}_getEntityGroupItems(e){let{items:n,headings:a,sortedBy:i}=e;if(!n.length||e.isEntityGrouped||!n.some(m=>m.entity))return[];let o=new Set(e.skipSumming||[]),r=[];for(let m of a)!m.key||o.has(m.key)||Vo.includes(m.valueType)&&r.push(m.key);let s=a[0].key;if(!s)return[];let p=new Map;for(let m of n){let d=typeof m.entity=="string"?m.entity:void 0,u=p.get(d)||{[s]:d||y.strings.unattributable,entity:d};for(let h of r)u[h]=Number(u[h]||0)+Number(m[h]||0);p.set(d,u)}let l=[...p.values()];return i&&l.sort(P.getTableItemSortComparator(i)),l}_renderTable(e){if(!e.items.length)return this._dom.createElement("span");let n=this._dom.createElement("table","lh-table"),a=this._dom.createChildOf(n,"thead"),i=this._dom.createChildOf(a,"tr");for(let s of e.headings){let l=`lh-table-column--${s.valueType||"text"}`,m=this._dom.createElement("div","lh-text");m.textContent=s.label,this._dom.createChildOf(i,"th",l).append(m)}let o=this._getEntityGroupItems(e),r=this._dom.createChildOf(n,"tbody");if(o.length)for(let s of o){let p=typeof s.entity=="string"?s.entity:void 0,l=this._renderEntityGroupRow(s,e.headings);for(let d of e.items.filter(u=>u.entity===p))l.append(this._renderTableRowsFromItem(d,e.headings));let m=this._dom.findAll("tr",l);p&&m.length&&(m.forEach(d=>d.dataset.entity=p),this._adornEntityGroupRow(m[0])),r.append(l)}else{let s=!0;for(let p of e.items){let l=this._renderTableRowsFromItem(p,e.headings),m=this._dom.findAll("tr",l),d=m[0];if(typeof p.entity=="string"&&(d.dataset.entity=p.entity),e.isEntityGrouped&&p.entity)d.classList.add("lh-row--group"),this._adornEntityGroupRow(d);else for(let u of m)u.classList.add(s?"lh-row--even":"lh-row--odd");s=!s,r.append(l)}}return n}_renderListValue(e){return e.type==="node"?this.renderNode(e):e.type==="text"?this._renderText(e.value):this.render(e)}_renderList(e){let n=this._dom.createElement("div","lh-list");return e.items.forEach(a=>{if(a.type==="list-section"){let o=this._dom.createElement("div","lh-list-section");a.title&&this._dom.createChildOf(o,"div","lh-list-section__title").append(this._dom.convertMarkdownLinkSnippets(a.title)),a.description&&this._dom.createChildOf(o,"div","lh-list-section__description").append(this._dom.convertMarkdownLinkSnippets(a.description));let r=this._renderListValue(a.value);r&&o.append(r),n.append(o);return}let i=this._renderListValue(a);i&&n.append(i)}),n}_renderChecklist(e){let n=this._dom.createElement("ul","lh-checklist");return Object.values(e.items).forEach(a=>{let i=this._dom.createChildOf(n,"li","lh-checklist-item"),o=a.value?"lh-report-plain-icon--checklist-pass":"lh-report-plain-icon--checklist-fail";this._dom.createChildOf(i,"span",`lh-report-plain-icon ${o}`).textContent=a.label}),n}renderNode(e){let n=this._dom.createElement("span","lh-node");if(e.nodeLabel){let r=this._dom.createElement("div");r.textContent=e.nodeLabel,n.append(r)}if(e.snippet){let r=this._dom.createElement("div");r.classList.add("lh-node__snippet"),r.textContent=e.snippet,n.append(r)}if(e.selector&&(n.title=e.selector),e.path&&n.setAttribute("data-path",e.path),e.selector&&n.setAttribute("data-selector",e.selector),e.snippet&&n.setAttribute("data-snippet",e.snippet),!this._fullPageScreenshot)return n;let a=e.lhId&&this._fullPageScreenshot.nodes[e.lhId];if(!a||a.width===0||a.height===0)return n;let i={width:147,height:100},o=ue.render(this._dom,this._fullPageScreenshot.screenshot,a,i);return o&&n.prepend(o),n}renderSourceLocation(e){if(!e.url)return null;let n=`${e.url}:${e.line+1}:${e.column}`,a;e.original&&(a=`${e.original.file||"<unmapped>"}:${e.original.line+1}:${e.original.column}`);let i;if(e.urlProvider==="network"&&a)i=this._createLink({url:e.url,text:a}),i.title=`maps to generated location ${n}`;else if(e.urlProvider==="network"&&!a)i=this.renderTextURL(e.url),this._dom.find(".lh-link",i).textContent+=`:${e.line+1}:${e.column}`;else if(e.urlProvider==="comment"&&a)i=this._renderText(`${a} (from source map)`),i.title=`${n} (from sourceURL)`;else if(e.urlProvider==="comment"&&!a)i=this._renderText(`${n} (from sourceURL)`);else return null;return i.classList.add("lh-source-location"),i.setAttribute("data-source-url",e.url),i.setAttribute("data-source-line",String(e.line)),i.setAttribute("data-source-column",String(e.column)),i}_renderFilmstrip(e){let n=this._dom.createElement("div","lh-filmstrip");for(let a of e.items){let i=this._dom.createChildOf(n,"div","lh-filmstrip__frame"),o=this._dom.createChildOf(i,"img","lh-filmstrip__thumbnail");o.src=a.data,o.alt="Screenshot"}return n}_renderCode(e){let n=this._dom.createElement("pre","lh-code");return n.textContent=e,n}};function Ra(t){let e=t.createComponent("explodeyGauge");return t.find(".lh-exp-gauge-component",e)}function Da(t,e,n){let a=t.find("div.lh-exp-gauge__wrapper",e);a.className="",a.classList.add("lh-exp-gauge__wrapper",`lh-exp-gauge__wrapper--${P.calculateRating(n.score)}`),qo(t,a,n)}function $o(t,e,n){n=n||t/32;let a=t/n,i=.5*n,o=a+i+n,r=2*Math.PI*a,s=Math.acos(1-.5*Math.pow(.5*n/a,2))*a,p=2*Math.PI*o,l=Math.acos(1-.5*Math.pow(.5*n/o,2))*o;return{radiusInner:a,radiusOuter:o,circumferenceInner:r,circumferenceOuter:p,getArcLength:()=>Math.max(0,Number(e*r)),getMetricArcLength:(m,d=!1)=>{let u=d?0:2*l;return Math.max(0,Number(m*p-i-u))},endDiffInner:s,endDiffOuter:l,strokeWidth:n,strokeGap:i}}function qo(t,e,n){let o=Number(n.score),{radiusInner:r,radiusOuter:s,circumferenceInner:p,circumferenceOuter:l,getArcLength:m,getMetricArcLength:d,endDiffInner:u,endDiffOuter:h,strokeWidth:b,strokeGap:C}=$o(128,o),v=t.find("svg.lh-exp-gauge",e);t.find(".lh-exp-gauge__label",v).textContent=n.title,v.setAttribute("viewBox",[-64,-64/2,128,128/2].join(" ")),v.style.setProperty("--stroke-width",`${b}px`),v.style.setProperty("--circle-meas",(2*Math.PI).toFixed(4));let g=t.find("g.lh-exp-gauge__outer",e),f=t.find("g.lh-exp-gauge__inner",e),_=t.find("circle.lh-cover",g),w=t.find("circle.lh-exp-gauge__arc",f),k=t.find("text.lh-exp-gauge__percentage",f);g.style.setProperty("--scale-initial",String(r/s)),g.style.setProperty("--radius",`${s}px`),_.style.setProperty("--radius",`${.5*(r+s)}px`),_.setAttribute("stroke-width",String(C)),v.style.setProperty("--radius",`${r}px`),w.setAttribute("stroke-dasharray",`${m()} ${(p-m()).toFixed(4)}`),w.setAttribute("stroke-dashoffset",String(.25*p-u)),k.textContent=Math.round(o*100).toString();let I=s+b,D=s-b,j=n.auditRefs.filter(L=>L.group==="metrics"&&L.weight),W=j.reduce((L,F)=>L+=F.weight,0),z=.25*l-h-.5*C,B=-.5*Math.PI;g.querySelectorAll(".metric").forEach(L=>{j.map(X=>`metric--${X.id}`).find(X=>L.classList.contains(X))||L.remove()}),j.forEach((L,F)=>{let G=L.acronym??L.id,X=!g.querySelector(`.metric--${G}`),V=t.maybeFind(`g.metric--${G}`,g)||t.createSVGElement("g"),we=t.maybeFind(`.metric--${G} circle.lh-exp-gauge--faded`,g)||t.createSVGElement("circle"),fe=t.maybeFind(`.metric--${G} circle.lh-exp-gauge--miniarc`,g)||t.createSVGElement("circle"),Q=t.maybeFind(`.metric--${G} circle.lh-exp-gauge-hovertarget`,g)||t.createSVGElement("circle"),J=t.maybeFind(`.metric--${G} text.metric__label`,g)||t.createSVGElement("text"),q=t.maybeFind(`.metric--${G} text.metric__value`,g)||t.createSVGElement("text");V.classList.add("metric",`metric--${G}`),we.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--faded"),fe.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--miniarc"),Q.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget");let ve=L.weight/W,an=d(ve),on=L.result.score?L.result.score*ve:0,rn=d(on),li=ve*l,sn=d(ve,!0),ln=P.calculateRating(L.result.score,L.result.scoreDisplayMode);V.style.setProperty("--metric-rating",ln),V.style.setProperty("--metric-color",`var(--color-${ln})`),V.style.setProperty("--metric-offset",`${z}`),V.style.setProperty("--i",F.toString()),we.setAttribute("stroke-dasharray",`${an} ${l-an}`),fe.style.setProperty("--metric-array",`${rn} ${l-rn}`),Q.setAttribute("stroke-dasharray",`${sn} ${l-sn-h}`),J.classList.add("metric__label"),q.classList.add("metric__value"),J.textContent=G,q.textContent=`+${Math.round(on*100)}`;let pn=B+ve*Math.PI,xe=Math.cos(pn),Se=Math.sin(pn);switch(!0){case xe>0:q.setAttribute("text-anchor","end");break;case xe<0:J.setAttribute("text-anchor","end");break;case xe===0:J.setAttribute("text-anchor","middle"),q.setAttribute("text-anchor","middle");break}switch(!0){case Se>0:J.setAttribute("dominant-baseline","hanging");break;case Se<0:q.setAttribute("dominant-baseline","hanging");break;case Se===0:J.setAttribute("dominant-baseline","middle"),q.setAttribute("dominant-baseline","middle");break}J.setAttribute("x",(I*xe).toFixed(2)),J.setAttribute("y",(I*Se).toFixed(2)),q.setAttribute("x",(D*xe).toFixed(2)),q.setAttribute("y",(D*Se).toFixed(2)),X&&(V.appendChild(we),V.appendChild(fe),V.appendChild(Q),V.appendChild(J),V.appendChild(q),g.appendChild(V)),z-=li,B+=ve*2*Math.PI});let K=g.querySelector(".lh-exp-gauge-underhovertarget")||t.createSVGElement("circle");K.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget","lh-exp-gauge-underhovertarget");let Y=d(1,!0);if(K.setAttribute("stroke-dasharray",`${Y} ${l-Y-h}`),K.isConnected||g.prepend(K),v.dataset.listenersSetup)return;v.dataset.listenersSetup=!0,si(v),v.addEventListener("pointerover",L=>{if(L.target===v&&v.classList.contains("state--expanded")){v.classList.remove("state--expanded"),v.classList.contains("state--highlight")&&(v.classList.remove("state--highlight"),t.find(".metric--highlight",v).classList.remove("metric--highlight"));return}if(!(L.target instanceof Element))return;let F=L.target.parentNode;if(F instanceof SVGElement){if(F&&F===f){v.classList.contains("state--expanded")?v.classList.contains("state--highlight")&&(v.classList.remove("state--highlight"),t.find(".metric--highlight",v).classList.remove("metric--highlight")):v.classList.add("state--expanded");return}if(F&&F.classList&&F.classList.contains("metric")){let G=F.style.getPropertyValue("--metric-rating");if(e.style.setProperty("--color-highlight",`var(--color-${G}-secondary)`),!v.classList.contains("state--highlight"))v.classList.add("state--highlight"),F.classList.add("metric--highlight");else{let X=t.find(".metric--highlight",v);F!==X&&(X.classList.remove("metric--highlight"),F.classList.add("metric--highlight"))}}}}),v.addEventListener("mouseleave",()=>{v.classList.remove("state--highlight"),v.querySelector(".metric--highlight")?.classList.remove("metric--highlight")});async function si(L){if(await new Promise(Q=>setTimeout(Q,1e3)),L.classList.contains("state--expanded"))return;let F=t.find(".lh-exp-gauge__inner",L),G=Array.from(F.querySelectorAll("circle")).map(Q=>{let J=`uniq-${Math.random()}`;Q.setAttribute("id",J);let q=t.createSVGElement("use");return q.setAttribute("href",`#${J}`),L.appendChild(q),q}),X=2.5;L.style.setProperty("--peek-dur",`${X}s`),L.classList.add("state--peek","state--expanded");let V=()=>{L.classList.remove("state--peek","state--expanded"),G.forEach(Q=>Q.remove())},we=setTimeout(()=>{L.removeEventListener("mouseenter",fe),V()},X*1e3*1.5);function fe(){clearTimeout(we),V()}L.addEventListener("mouseenter",fe,{once:!0})}}var gt=class extends pe{_renderMetric(e){let n=this.dom.createComponent("metric"),a=this.dom.find(".lh-metric",n);a.id=e.result.id;let i=P.calculateRating(e.result.score,e.result.scoreDisplayMode);a.classList.add(`lh-metric--${i}`);let o=this.dom.find(".lh-metric__title",n);o.textContent=e.result.title;let r=this.dom.find(".lh-metric__value",n);r.textContent=e.result.displayValue||"";let s=this.dom.find(".lh-metric__description",n);if(s.append(this.dom.convertMarkdownLinkSnippets(e.result.description)),e.result.scoreDisplayMode==="error"){s.textContent="",r.textContent="Error!";let p=this.dom.createChildOf(s,"span");p.textContent=e.result.errorMessage||"Report error: no metric information"}else e.result.scoreDisplayMode==="notApplicable"&&(r.textContent="--");return a}_getScoringCalculatorHref(e){let n=e.filter(d=>d.group==="metrics"),a=e.find(d=>d.id==="interactive"),i=e.find(d=>d.id==="first-cpu-idle"),o=e.find(d=>d.id==="first-meaningful-paint");a&&n.push(a),i&&n.push(i),o&&typeof o.result.score=="number"&&n.push(o);let r=d=>Math.round(d*100)/100,p=[...n.map(d=>{let u;return typeof d.result.numericValue=="number"?(u=d.id==="cumulative-layout-shift"?r(d.result.numericValue):Math.round(d.result.numericValue),u=u.toString()):u="null",[d.acronym||d.id,u]})];y.reportJson&&(p.push(["device",y.reportJson.configSettings.formFactor]),p.push(["version",y.reportJson.lighthouseVersion]));let l=new URLSearchParams(p),m=new URL("https://googlechrome.github.io/lighthouse/scorecalc/");return m.hash=l.toString(),m.href}overallImpact(e,n){if(!e.result.metricSavings)return{overallImpact:0,overallLinearImpact:0};let a=0,i=0;for(let[o,r]of Object.entries(e.result.metricSavings)){if(r===void 0)continue;let s=n.find(h=>h.acronym===o);if(!s||s.result.score===null)continue;let p=s.result.numericValue;if(!p)continue;let l=r/p*s.weight;i+=l;let m=s.result.scoringOptions;if(!m)continue;let u=(N.computeLogNormalScore(m,p-r)-s.result.score)*s.weight;a+=u}return{overallImpact:a,overallLinearImpact:i}}render(e,n,a){let i=y.strings,o=this.dom.createElement("div","lh-category");o.id=e.id,o.append(this.renderCategoryHeader(e,n,a));let r=e.auditRefs.filter(u=>u.group==="metrics");if(r.length){let[u,h]=this.renderAuditGroup(n.metrics),b=this.dom.createElement("input","lh-metrics-toggle__input"),C=`lh-metrics-toggle${y.getUniqueSuffix()}`;b.setAttribute("aria-label","Toggle the display of metric descriptions"),b.type="checkbox",b.id=C,u.prepend(b);let v=this.dom.find(".lh-audit-group__header",u),g=this.dom.createChildOf(v,"label","lh-metrics-toggle__label");g.htmlFor=C;let f=this.dom.createChildOf(g,"span","lh-metrics-toggle__labeltext--show"),_=this.dom.createChildOf(g,"span","lh-metrics-toggle__labeltext--hide");f.textContent=y.strings.expandView,_.textContent=y.strings.collapseView;let w=this.dom.createElement("div","lh-metrics-container");if(u.insertBefore(w,h),r.forEach(k=>{w.append(this._renderMetric(k))}),o.querySelector(".lh-gauge__wrapper")){let k=this.dom.find(".lh-category-header__description",o),I=this.dom.createChildOf(k,"div","lh-metrics__disclaimer"),D=this.dom.convertMarkdownLinkSnippets(i.varianceDisclaimer);I.append(D);let j=this.dom.createChildOf(I,"a","lh-calclink");j.target="_blank",j.textContent=i.calculatorLink,this.dom.safelySetHref(j,this._getScoringCalculatorHref(e.auditRefs))}u.classList.add("lh-audit-group--metrics"),o.append(u)}let s=this.dom.createChildOf(o,"div","lh-filmstrip-container"),l=e.auditRefs.find(u=>u.id==="screenshot-thumbnails")?.result;if(l?.details){s.id=l.id;let u=this.detailsRenderer.render(l.details);u&&s.append(u)}let m=this.renderFilterableSection(e,n,["insights","diagnostics"],r);if(m&&(m.classList.add("lh-perf-audits"),o.append(m)),(!a||a?.gatherMode==="navigation")&&e.score!==null){let u=Ra(this.dom);Da(this.dom,u,e),this.dom.find(".lh-score__gauge",o).replaceWith(u)}return o}renderFilterableSection(e,n,a,i){if(a=a.filter(g=>!!n[g]),!a.length)return null;let o=this.dom.createElement("div"),r=g=>g.group??"",p=e.auditRefs.filter(g=>a.includes(r(g))).map(g=>{let{overallImpact:f,overallLinearImpact:_}=this.overallImpact(g,i),w=g.result.guidanceLevel||1,k=this.renderAudit(g);return{auditRef:g,auditEl:k,overallImpact:f,overallLinearImpact:_,guidanceLevel:w}}),l=p.filter(g=>!P.showAsPassed(g.auditRef.result)),m=p.filter(g=>P.showAsPassed(g.auditRef.result)),d={};for(let g of a){let f=this.renderAuditGroup(n[g]);f[0].classList.add(`lh-audit-group--${g}`),d[g]=f}function u(g){for(let f of p)if(g==="All")f.auditEl.hidden=!1;else{let _=f.auditRef.result.metricSavings?.[g]===void 0;f.auditEl.hidden=_}l.sort((f,_)=>{let w=f.auditRef.result.score||0,k=_.auditRef.result.score||0;if(w!==k)return w-k;if(g!=="All"){let I=f.auditRef.result.metricSavings?.[g]??-1,D=_.auditRef.result.metricSavings?.[g]??-1;if(I!==D)return D-I}return f.overallImpact!==_.overallImpact?_.overallImpact*_.guidanceLevel-f.overallImpact*f.guidanceLevel:f.overallImpact===0&&_.overallImpact===0&&f.overallLinearImpact!==_.overallLinearImpact?_.overallLinearImpact*_.guidanceLevel-f.overallLinearImpact*f.guidanceLevel:_.guidanceLevel-f.guidanceLevel});for(let f of l){if(!f.auditRef.group)continue;let _=d[r(f.auditRef)];if(!_)continue;let[w,k]=_;w.insertBefore(f.auditEl,k)}}let h=new Set;for(let g of l){let f=g.auditRef.result.metricSavings||{};for(let[_,w]of Object.entries(f))typeof w=="number"&&h.add(_)}let b=i.filter(g=>g.acronym&&h.has(g.acronym));b.length&&this.renderMetricAuditFilter(b,o,u),u("All");for(let g of a)if(l.some(f=>r(f.auditRef)===g)){let f=d[g];if(!f)continue;o.append(f[0])}if(!m.length)return o;let C={auditRefsOrEls:m.map(g=>g.auditEl),groupDefinitions:n},v=this.renderClump("passed",C);return o.append(v),o}renderMetricAuditFilter(e,n,a){let i=this.dom.createElement("div","lh-metricfilter"),o=this.dom.createChildOf(i,"span","lh-metricfilter__text");o.textContent=y.strings.showRelevantAudits;let r=[{acronym:"All",id:"All"},...e],s=y.getUniqueSuffix();for(let p of r){let l=`metric-${p.acronym}-${s}`,m=this.dom.createChildOf(i,"input","lh-metricfilter__radio");m.type="radio",m.name=`metricsfilter-${s}`,m.id=l;let d=this.dom.createChildOf(i,"label","lh-metricfilter__label");d.htmlFor=l,d.title="result"in p?p.result.title:"",d.textContent=p.acronym||p.id,p.acronym==="All"&&(m.checked=!0,d.classList.add("lh-metricfilter__label--active")),n.append(i),m.addEventListener("input",u=>{for(let b of n.querySelectorAll("label.lh-metricfilter__label"))b.classList.toggle("lh-metricfilter__label--active",b.htmlFor===l);n.classList.toggle("lh-category--filtered",p.acronym!=="All"),a(p.acronym||"All");let h=n.querySelectorAll("div.lh-audit-group, details.lh-audit-group");for(let b of h){b.hidden=!1;let C=Array.from(b.querySelectorAll("div.lh-audit")),v=!!C.length&&C.every(g=>g.hidden);b.hidden=v}})}}};var ft=class{constructor(e){this._dom=e,this._opts={}}renderReport(e,n,a){if(!this._dom.rootEl&&n){console.warn("Please adopt the new report API in renderer/api.js.");let o=n.closest(".lh-root");o?this._dom.rootEl=o:(n.classList.add("lh-root","lh-vars"),this._dom.rootEl=n)}else this._dom.rootEl&&n&&(this._dom.rootEl=n);a&&(this._opts=a),this._dom.setLighthouseChannel(e.configSettings.channel||"unknown");let i=P.prepareReportResult(e);return this._dom.rootEl.textContent="",this._dom.rootEl.append(this._renderReport(i)),this._opts.occupyEntireViewport&&this._dom.rootEl.classList.add("lh-max-viewport"),this._dom.rootEl}_renderReportTopbar(e){let n=this._dom.createComponent("topbar"),a=this._dom.find("a.lh-topbar__url",n);return a.textContent=e.finalDisplayedUrl,a.title=e.finalDisplayedUrl,this._dom.safelySetHref(a,e.finalDisplayedUrl),n}_renderReportHeader(){let e=this._dom.createComponent("heading"),n=this._dom.createComponent("scoresWrapper");return this._dom.find(".lh-scores-wrapper-placeholder",e).replaceWith(n),e}_renderReportFooter(e){let n=this._dom.createComponent("footer");return this._renderMetaBlock(e,n),this._dom.find(".lh-footer__version_issue",n).textContent=y.strings.footerIssue,this._dom.find(".lh-footer__version",n).textContent=e.lighthouseVersion,n}_renderMetaBlock(e,n){let a=P.getEmulationDescriptions(e.configSettings||{}),i=e.userAgent.match(/(\w*Chrome\/[\d.]+)/),o=Array.isArray(i)?i[1].replace("/"," ").replace("Chrome","Chromium"):"Chromium",r=e.configSettings.channel,s=e.environment.benchmarkIndex.toFixed(0),p=e.environment.credits?.["axe-core"],l=[`${y.strings.runtimeSettingsBenchmark}: ${s}`,`${y.strings.runtimeSettingsCPUThrottling}: ${a.cpuThrottling}`];a.screenEmulation&&l.push(`${y.strings.runtimeSettingsScreenEmulation}: ${a.screenEmulation}`),p&&l.push(`${y.strings.runtimeSettingsAxeVersion}: ${p}`);let m=y.strings.runtimeAnalysisWindow;e.gatherMode==="timespan"?m=y.strings.runtimeAnalysisWindowTimespan:e.gatherMode==="snapshot"&&(m=y.strings.runtimeAnalysisWindowSnapshot);let d=[["date",`Captured at ${y.i18n.formatDateTime(e.fetchTime)}`],["devices",`${a.deviceEmulation} with Lighthouse ${e.lighthouseVersion}`,l.join(`
2877
- `)],["samples-one",y.strings.runtimeSingleLoad,y.strings.runtimeSingleLoadTooltip],["stopwatch",m],["networkspeed",`${a.summary}`,`${y.strings.runtimeSettingsNetworkThrottling}: ${a.networkThrottling}`],["chrome",`Using ${o}`+(r?` with ${r}`:""),`${y.strings.runtimeSettingsUANetwork}: "${e.environment.networkUserAgent}"`]],u=Object.keys(e.categories).filter(b=>P.isPluginCategory(b));for(let b of u){let C=e.environment.credits?.[b];d.push(["plugin",C?`${b} ${C}`:b,void 0,`https://www.npmjs.com/package/${b}`])}let h=this._dom.find(".lh-meta__items",n);for(let[b,C,v,g]of d){let f=this._dom.createChildOf(h,"li","lh-meta__item");if(g){let _=this._dom.createChildOf(f,"a");_.rel="noopener",_.target="_blank",_.textContent=C,this._dom.safelySetHref(_,g)}else f.textContent=C;if(v){f.classList.add("lh-tooltip-boundary");let _=this._dom.createChildOf(f,"div","lh-tooltip");_.textContent=v}f.classList.add("lh-report-icon",`lh-report-icon--${b}`)}}_renderReportWarnings(e){if(!e.runWarnings||e.runWarnings.length===0)return this._dom.createElement("div");let n=this._dom.createComponent("warningsToplevel"),a=this._dom.find(".lh-warnings__msg",n);a.textContent=y.strings.toplevelWarningsMessage;let i=[];for(let o of e.runWarnings){let r=this._dom.createElement("li");r.append(this._dom.convertMarkdownLinkSnippets(o)),i.push(r)}return this._dom.find("ul",n).append(...i),n}_renderScoreGauges(e,n,a){let i=[],o=[];for(let r of Object.values(e.categories)){let p=(a[r.id]||n).renderCategoryScore(r,e.categoryGroups||{},{gatherMode:e.gatherMode}),l=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",p);l&&(this._dom.safelySetHref(l,`#${r.id}`),l.addEventListener("click",m=>{if(!l.matches('[href^="#"]'))return;let d=l.getAttribute("href"),u=this._dom.rootEl;if(!d||!u)return;let h=this._dom.find(d,u);m.preventDefault(),h.scrollIntoView()}),this._opts.onPageAnchorRendered?.(l)),P.isPluginCategory(r.id)?o.push(p):i.push(p)}return[...i,...o]}_renderReport(e){y.apply({providedStrings:e.i18n.rendererFormattedStrings,i18n:new ge(e.configSettings.locale),reportJson:e});let n=new _e(this._dom,{fullPageScreenshot:e.fullPageScreenshot??void 0,entities:e.entities}),a=new pe(this._dom,n),i={performance:new gt(this._dom,n)},o=this._dom.createElement("div");o.append(this._renderReportHeader());let r=this._dom.createElement("div","lh-container"),s=this._dom.createElement("div","lh-report");s.append(this._renderReportWarnings(e));let p;Object.keys(e.categories).length===1?o.classList.add("lh-header--solo-category"):p=this._dom.createElement("div","lh-scores-header");let m=this._dom.createElement("div");if(m.classList.add("lh-scorescale-wrap"),m.append(this._dom.createComponent("scorescale")),p){let b=this._dom.find(".lh-scores-container",o);p.append(...this._renderScoreGauges(e,a,i)),b.append(p,m);let C=this._dom.createElement("div","lh-sticky-header");C.append(...this._renderScoreGauges(e,a,i)),r.append(C)}let d=this._dom.createElement("div","lh-categories");s.append(d);let u={gatherMode:e.gatherMode};for(let b of Object.values(e.categories)){let C=i[b.id]||a;C.dom.createChildOf(d,"div","lh-category-wrapper").append(C.render(b,e.categoryGroups,u))}a.injectFinalScreenshot(d,e.audits,m);let h=this._dom.createFragment();return this._opts.omitGlobalStyles||h.append(this._dom.createComponent("styles")),this._opts.omitTopbar||h.append(this._renderReportTopbar(e)),h.append(r),s.append(this._renderReportFooter(e)),r.append(o,s),e.fullPageScreenshot&&ue.installFullPageScreenshot(this._dom.rootEl,e.fullPageScreenshot.screenshot),h}};function Ce(t,e){let n=t.rootEl;typeof e>"u"?n.classList.toggle("lh-dark"):n.classList.toggle("lh-dark",e)}var Wo=typeof btoa<"u"?btoa:t=>Buffer.from(t).toString("base64"),Jo=typeof atob<"u"?atob:t=>Buffer.from(t,"base64").toString();async function Zo(t,e){let n=new TextEncoder().encode(t);if(e.gzip)if(typeof CompressionStream<"u"){let o=new CompressionStream("gzip"),r=o.writable.getWriter();r.write(n),r.close();let s=await new Response(o.readable).arrayBuffer();n=new Uint8Array(s)}else n=window.pako.gzip(t);let a="",i=5e3;for(let o=0;o<n.length;o+=i)a+=String.fromCharCode(...n.subarray(o,o+i));return Wo(a)}function Ko(t,e){let n=Jo(t),a=Uint8Array.from(n,i=>i.charCodeAt(0));return e.gzip?window.pako.ungzip(a,{toText:!0}):new TextDecoder().decode(a)}var za={toBase64:Zo,fromBase64:Ko};function Yt(){let t=window.location.host.endsWith(".vercel.app"),e=new URLSearchParams(window.location.search).has("dev");return t?`https://${window.location.host}/gh-pages`:e?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function Qt(t){let e=t.generatedTime,n=t.fetchTime||e;return`${t.lighthouseVersion}-${t.finalDisplayedUrl}-${n}`}function Xo(t,e,n){let a=new URL(e).origin;window.addEventListener("message",function o(r){r.origin===a&&i&&r.data.opened&&(i.postMessage(t,a),window.removeEventListener("message",o))});let i=window.open(e,n)}async function ja(t,e,n){let a=new URL(e),i=!!window.CompressionStream;a.hash=await za.toBase64(JSON.stringify(t),{gzip:i}),i&&a.searchParams.set("gzip","1"),window.open(a.toString(),n)}async function Ma(t){let e="viewer-"+Qt(t),n=Yt()+"/viewer/";await ja({lhr:t},n,e)}async function Ha(t){let e="viewer-"+Qt(t),n=Yt()+"/viewer/";Xo({lhr:t},n,e)}function Fa(t){if(!t.audits["script-treemap-data"].details)throw new Error("no script treemap data found");let n={lhr:{mainDocumentUrl:t.mainDocumentUrl,finalUrl:t.finalUrl,finalDisplayedUrl:t.finalDisplayedUrl,audits:{"script-treemap-data":t.audits["script-treemap-data"]},configSettings:{locale:t.configSettings.locale}}},a=Yt()+"/treemap/",i="treemap-"+Qt(t);ja(n,a,i)}var vt=class{constructor(e){this._dom=e,this._toggleEl,this._menuEl,this.onDocumentKeyDown=this.onDocumentKeyDown.bind(this),this.onToggleClick=this.onToggleClick.bind(this),this.onToggleKeydown=this.onToggleKeydown.bind(this),this.onMenuFocusOut=this.onMenuFocusOut.bind(this),this.onMenuKeydown=this.onMenuKeydown.bind(this),this._getNextMenuItem=this._getNextMenuItem.bind(this),this._getNextSelectableNode=this._getNextSelectableNode.bind(this),this._getPreviousMenuItem=this._getPreviousMenuItem.bind(this)}setup(e){this._toggleEl=this._dom.find(".lh-topbar button.lh-tools__button",this._dom.rootEl),this._toggleEl.addEventListener("click",this.onToggleClick),this._toggleEl.addEventListener("keydown",this.onToggleKeydown),this._menuEl=this._dom.find(".lh-topbar div.lh-tools__dropdown",this._dom.rootEl),this._menuEl.addEventListener("keydown",this.onMenuKeydown),this._menuEl.addEventListener("click",e)}close(){this._toggleEl.classList.remove("lh-active"),this._toggleEl.setAttribute("aria-expanded","false"),this._menuEl.contains(this._dom.document().activeElement)&&this._toggleEl.focus(),this._menuEl.removeEventListener("focusout",this.onMenuFocusOut),this._dom.document().removeEventListener("keydown",this.onDocumentKeyDown)}open(e){this._toggleEl.classList.contains("lh-active")?e.focus():this._menuEl.addEventListener("transitionend",()=>{e.focus()},{once:!0}),this._toggleEl.classList.add("lh-active"),this._toggleEl.setAttribute("aria-expanded","true"),this._menuEl.addEventListener("focusout",this.onMenuFocusOut),this._dom.document().addEventListener("keydown",this.onDocumentKeyDown)}onToggleClick(e){e.preventDefault(),e.stopImmediatePropagation(),this._toggleEl.classList.contains("lh-active")?this.close():this.open(this._getNextMenuItem())}onToggleKeydown(e){switch(e.code){case"ArrowUp":e.preventDefault(),this.open(this._getPreviousMenuItem());break;case"ArrowDown":case"Enter":case" ":e.preventDefault(),this.open(this._getNextMenuItem());break;default:}}onMenuKeydown(e){let n=e.target;switch(e.code){case"ArrowUp":e.preventDefault(),this._getPreviousMenuItem(n).focus();break;case"ArrowDown":e.preventDefault(),this._getNextMenuItem(n).focus();break;case"Home":e.preventDefault(),this._getNextMenuItem().focus();break;case"End":e.preventDefault(),this._getPreviousMenuItem().focus();break;default:}}onDocumentKeyDown(e){e.keyCode===27&&this.close()}onMenuFocusOut(e){let n=e.relatedTarget;this._menuEl.contains(n)||this.close()}_getNextSelectableNode(e,n){let a=e.filter(o=>o instanceof HTMLElement).filter(o=>!(o.hasAttribute("disabled")||window.getComputedStyle(o).display==="none")),i=n?a.indexOf(n)+1:0;return i>=a.length&&(i=0),a[i]}_getNextMenuItem(e){let n=Array.from(this._menuEl.childNodes);return this._getNextSelectableNode(n,e)}_getPreviousMenuItem(e){let n=Array.from(this._menuEl.childNodes).reverse();return this._getNextSelectableNode(n,e)}};var bt=class{constructor(e,n){this.lhr,this._reportUIFeatures=e,this._dom=n,this._dropDownMenu=new vt(this._dom),this._copyAttempt=!1,this.topbarEl,this.categoriesEl,this.stickyHeaderEl,this.highlightEl,this.onDropDownMenuClick=this.onDropDownMenuClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onCopy=this.onCopy.bind(this),this.collapseAllDetails=this.collapseAllDetails.bind(this)}enable(e){this.lhr=e,this._dom.rootEl.addEventListener("keyup",this.onKeyUp),this._dom.document().addEventListener("copy",this.onCopy),this._dropDownMenu.setup(this.onDropDownMenuClick),this._setUpCollapseDetailsAfterPrinting(),this._dom.find(".lh-topbar__logo",this._dom.rootEl).addEventListener("click",()=>Ce(this._dom)),this._setupStickyHeader()}onDropDownMenuClick(e){e.preventDefault();let n=e.target;if(!(!n||!n.hasAttribute("data-action"))){switch(n.getAttribute("data-action")){case"copy":this.onCopyButtonClick();break;case"print-summary":this.collapseAllDetails(),this._print();break;case"print-expanded":this.expandAllDetails(),this._print();break;case"save-json":{let a=JSON.stringify(this.lhr,null,2);this._reportUIFeatures._saveFile(new Blob([a],{type:"application/json"}));break}case"save-html":{let a=this._reportUIFeatures.getReportHtml();try{this._reportUIFeatures._saveFile(new Blob([a],{type:"text/html"}))}catch(i){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+i.message})}break}case"open-viewer":{this._dom.isDevTools()?Ma(this.lhr):Ha(this.lhr);break}case"save-gist":{this._reportUIFeatures.saveAsGist();break}case"toggle-dark":{Ce(this._dom);break}case"view-unthrottled-trace":this._reportUIFeatures._opts.onViewTrace?.()}this._dropDownMenu.close()}}onCopy(e){this._copyAttempt&&e.clipboardData&&(e.preventDefault(),e.clipboardData.setData("text/plain",JSON.stringify(this.lhr,null,2)),this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:"Report JSON copied to clipboard"})),this._copyAttempt=!1}onCopyButtonClick(){this._dom.fireEventOn("lh-analytics",this._dom.document(),{name:"copy"});try{this._dom.document().queryCommandSupported("copy")&&(this._copyAttempt=!0,this._dom.document().execCommand("copy")||(this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"warn",msg:"Your browser does not support copy to clipboard."})))}catch(e){this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:e.message})}}onKeyUp(e){(e.ctrlKey||e.metaKey)&&e.keyCode===80&&this._dropDownMenu.close()}expandAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(n=>n.open=!0)}collapseAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(n=>n.open=!1)}_print(){this._reportUIFeatures._opts.onPrintOverride?this._reportUIFeatures._opts.onPrintOverride(this._dom.rootEl):self.print()}resetUIState(){this._dropDownMenu.close()}_getScrollParent(e){let{overflowY:n}=window.getComputedStyle(e);return n!=="visible"&&n!=="hidden"?e:e.parentElement?this._getScrollParent(e.parentElement):document}_setUpCollapseDetailsAfterPrinting(){"onbeforeprint"in self?self.addEventListener("afterprint",this.collapseAllDetails):self.matchMedia("print").addListener(n=>{n.matches?this.expandAllDetails():this.collapseAllDetails()})}_setupStickyHeader(){this.topbarEl=this._dom.find("div.lh-topbar",this._dom.rootEl),this.categoriesEl=this._dom.find("div.lh-categories",this._dom.rootEl),requestAnimationFrame(()=>requestAnimationFrame(()=>{try{this.stickyHeaderEl=this._dom.find("div.lh-sticky-header",this._dom.rootEl)}catch{return}this.highlightEl=this._dom.createChildOf(this.stickyHeaderEl,"div","lh-highlighter");let e=this._getScrollParent(this._dom.find(".lh-container",this._dom.rootEl));e.addEventListener("scroll",()=>this._updateStickyHeader());let n=e instanceof window.Document?document.documentElement:e;new window.ResizeObserver(()=>this._updateStickyHeader()).observe(n)}))}_updateStickyHeader(){if(!this.stickyHeaderEl)return;let e=this.topbarEl.getBoundingClientRect().bottom,n=this.categoriesEl.getBoundingClientRect().top,a=e>=n,o=Array.from(this._dom.rootEl.querySelectorAll(".lh-category")).filter(d=>d.getBoundingClientRect().top-window.innerHeight/2<0),r=o.length>0?o.length-1:0,s=this.stickyHeaderEl.querySelectorAll(".lh-gauge__wrapper, .lh-fraction__wrapper"),p=s[r],l=s[0].getBoundingClientRect().left,m=p.getBoundingClientRect().left-l;this.highlightEl.style.transform=`translate(${m}px)`,this.stickyHeaderEl.classList.toggle("lh-sticky-header--visible",a)}};function Ba(t,e){let n=e?new Date(e):new Date,a=n.toLocaleTimeString("en-US",{hour12:!1}),i=n.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");i.unshift(i.pop());let o=i.join("-");return`${t}_${o}_${a}`.replace(/[/?<>\\:*|"]/g,"-")}function Oa(t){let{hostname:e,pathname:n}=new URL(t.finalDisplayedUrl),a=e+n.replace(/\/$/,"");return Ba(a,t.fetchTime)}function Ga(t){let e=t.steps[0].lhr,n=t.name.replace(/\s/g,"-");return Ba(n,e.fetchTime)}function Yo(t){return Array.from(t.tBodies[0].rows)}var yt=class{constructor(e,n={}){this.json,this._dom=e,this._opts=n,this._topbar=n.omitTopbar?null:new bt(this,e),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(e){this.json=e,this._fullPageScreenshot=N.getFullPageScreenshot(e),this._topbar&&(this._topbar.enable(e),this._topbar.resetUIState()),this._setupMediaQueryListeners(),this._setupThirdPartyFilter(),this._setupElementScreenshotOverlay(this._dom.rootEl);let n=this._dom.isDevTools()||this._opts.disableDarkMode||this._opts.disableAutoDarkModeAndFireworks;!n&&window.matchMedia("(prefers-color-scheme: dark)").matches&&Ce(this._dom,!0);let i=["performance","accessibility","best-practices","seo"].every(p=>{let l=e.categories[p];return l&&l.score===1}),o=this._opts.disableFireworks||this._opts.disableAutoDarkModeAndFireworks;if(i&&!o&&(this._enableFireworks(),n||Ce(this._dom,!0)),e.categories.performance&&e.categories.performance.auditRefs.some(p=>!!(p.group==="metrics"&&e.audits[p.id].errorMessage))){let p=this._dom.find("input.lh-metrics-toggle__input",this._dom.rootEl);p.checked=!0}this.json.audits["script-treemap-data"]&&this.json.audits["script-treemap-data"].details&&this.addButton({text:y.strings.viewTreemapLabel,icon:"treemap",onClick:()=>Fa(this.json)}),this._opts.onViewTrace&&(e.configSettings.throttlingMethod==="simulate"?this._dom.find('a[data-action="view-unthrottled-trace"]',this._dom.rootEl).classList.remove("lh-hidden"):this.addButton({text:y.strings.viewTraceLabel,onClick:()=>this._opts.onViewTrace?.()})),this._opts.getStandaloneReportHTML&&this._dom.find('a[data-action="save-html"]',this._dom.rootEl).classList.remove("lh-hidden");for(let p of this._dom.findAll("[data-i18n]",this._dom.rootEl)){let m=p.getAttribute("data-i18n");p.textContent=y.strings[m]}}addButton(e){let n=this._dom.rootEl.querySelector(".lh-audit-group--metrics");if(!n)return;let a=n.querySelector(".lh-buttons");a||(a=this._dom.createChildOf(n,"div","lh-buttons"));let i=["lh-button"];e.icon&&(i.push("lh-report-icon"),i.push(`lh-report-icon--${e.icon}`));let o=this._dom.createChildOf(a,"button",i.join(" "));return o.textContent=e.text,o.addEventListener("click",e.onClick),o}resetUIState(){this._topbar&&this._topbar.resetUIState()}getReportHtml(){if(!this._opts.getStandaloneReportHTML)throw new Error("`getStandaloneReportHTML` is not set");return this.resetUIState(),this._opts.getStandaloneReportHTML()}saveAsGist(){throw new Error("Cannot save as gist from base report")}_enableFireworks(){this._dom.find(".lh-scores-container",this._dom.rootEl).classList.add("lh-score100")}_setupMediaQueryListeners(){let e=self.matchMedia("(max-width: 500px)");e.addListener(this.onMediaQueryChange),this.onMediaQueryChange(e)}_resetUIState(){this._topbar&&this._topbar.resetUIState()}onMediaQueryChange(e){this._dom.rootEl.classList.toggle("lh-narrow",e.matches)}_setupThirdPartyFilter(){let e=["uses-rel-preconnect","third-party-facades","network-dependency-tree-insight"],n=["legacy-javascript","legacy-javascript-insight"];Array.from(this._dom.rootEl.querySelectorAll("table.lh-table")).filter(o=>o.querySelector("td.lh-table-column--url, td.lh-table-column--source-location")).filter(o=>{let r=o.closest(".lh-audit");if(!r)throw new Error(".lh-table not within audit");return!e.includes(r.id)}).forEach(o=>{let r=Yo(o),s=r.filter(v=>!v.classList.contains("lh-sub-item-row")),p=this._getThirdPartyRows(s,N.getFinalDisplayedUrl(this.json)),l=r.some(v=>v.classList.contains("lh-row--even")),m=this._dom.createComponent("3pFilter"),d=this._dom.find("input",m);d.addEventListener("change",v=>{let g=v.target instanceof HTMLInputElement&&!v.target.checked,f=!0,_=s[0];for(;_;){let w=g&&p.includes(_);do _.classList.toggle("lh-row--hidden",w),l&&(_.classList.toggle("lh-row--even",!w&&f),_.classList.toggle("lh-row--odd",!w&&!f)),_=_.nextElementSibling;while(_&&_.classList.contains("lh-sub-item-row"));w||(f=!f)}});let u=p.filter(v=>!v.classList.contains("lh-row--group")).length;this._dom.find(".lh-3p-filter-count",m).textContent=`${u}`,this._dom.find(".lh-3p-ui-string",m).textContent=y.strings.thirdPartyResourcesLabel;let h=p.length===s.length,b=!p.length;if((h||b)&&(this._dom.find("div.lh-3p-filter",m).hidden=!0),!o.parentNode)return;o.parentNode.insertBefore(m,o);let C=o.closest(".lh-audit");if(!C)throw new Error(".lh-table not within audit");n.includes(C.id)&&!h&&d.click()})}_setupElementScreenshotOverlay(e){this._fullPageScreenshot&&ue.installOverlayFeature({dom:this._dom,rootEl:e,overlayContainerEl:e,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(e,n){let a=N.getEntityFromUrl(n,this.json.entities),i=this.json.entities?.find(r=>r.isFirstParty===!0)?.name,o=[];for(let r of e){if(i){if(!r.dataset.entity||r.dataset.entity===i)continue}else{let s=r.querySelector("div.lh-text__url");if(!s)continue;let p=s.dataset.url;if(!p||!(N.getEntityFromUrl(p,this.json.entities)!==a))continue}o.push(r)}return o}_saveFile(e){let n=e.type.match("json")?".json":".html",a=Oa({finalDisplayedUrl:N.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime})+n;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(e,a):this._dom.saveFile(e,a)}};function Va(t,e={}){let n=document.createElement("article");n.classList.add("lh-root","lh-vars");let a=new le(n.ownerDocument,n);return new ft(a).renderReport(t,n,e),new yt(a,e).initFeatures(t),n}function $a(t,e){let n=new le(document,document.documentElement),a=new _e(n);return new pe(n,a).renderCategoryScore(t,{},e)}function qa(t,e){new le(document,document.documentElement).saveFile(t,e)}function Wa(t){return new le(document,document.documentElement).convertMarkdownCodeSnippets(t)}function Ja(){return new le(document,document.documentElement).createComponent("styles")}var Za=({category:t,href:e,gatherMode:n})=>{let a=re(()=>$a(t,{gatherMode:n,omitLabel:!0,onPageAnchorRendered:i=>i.href=e}),[t,e]);return c("div",{ref:a,"data-testid":"CategoryScore"})};var Ka=({text:t})=>{let e=re(()=>Wa(t),[t]);return c("span",{ref:e})};var Qo=2;function er(t,e){switch(t){case"navigation":return e.navigationReport;case"timespan":return e.timespanReport;case"snapshot":return e.snapshotReport}}function tr(t,e){switch(t){case"pass":return e.ratingPass;case"average":return e.ratingAverage;case"fail":return e.ratingFail;case"error":return e.ratingError}}function Xa(t){return t.weight*(1-t.result.score)}var nr=({audit:t})=>{let e=P.calculateRating(t.result.score,t.result.scoreDisplayMode);return c("div",{className:`SummaryTooltipAudit SummaryTooltipAudit--${e}`,children:c(Ka,{text:t.result.title})})},ar=({category:t})=>{let e=H();function n(i){return i.result.score!==null&&i.group!=="metrics"&&i.group!=="hidden"&&(i.weight>0||i.group==="diagnostics")&&!P.showAsPassed(i.result)}let a=t.auditRefs.filter(n).sort((i,o)=>{let r=Xa(i),s=Xa(o);if(r!==s)return s-r;if(i.result.score!==o.result.score)return i.result.score-o.result.score;let p=i.result.metricSavings?.LCP||0;return(o.result.metricSavings?.LCP||0)-p}).splice(0,Qo);return a.length?c("div",{className:"SummaryTooltipAudits",children:[c("div",{className:"SummaryTooltipAudits__title",children:e.highestImpact}),a.map(i=>c(nr,{audit:i},i.id))]}):null},ir=({category:t,gatherMode:e,url:n})=>{let a=H(),i=ht(),{numPassed:o,numPassableAudits:r,numInformative:s,totalWeight:p}=P.calculateCategoryFraction(t),l=Fe(),m=P.shouldDisplayAsFraction(e,t),d=m?o/r:t.score,u=d===null?"error":P.calculateRating(d);return c("div",{className:"SummaryTooltip",children:[c("div",{className:"SummaryTooltip__title",children:er(e,a)}),c("div",{className:"SummaryTooltip__url",children:n}),c(Z,{}),c("div",{className:"SummaryTooltip__category",children:[c("div",{className:"SummaryTooltip__category-title",children:t.title}),p!==0&&c("div",{className:`SummaryTooltip__rating SummaryTooltip__rating--${u}`,children:[c("span",{children:tr(u,a)}),!m&&t.score!==null&&c(M,{children:[c("span",{children:" · "}),c("span",{children:l.formatter.formatInteger(t.score*100)})]})]})]}),c("div",{className:"SummaryTooltip__fraction",children:[c("span",{children:i(a.passedAuditCount,{numPassed:o})}),c("span",{children:" / "}),c("span",{children:i(a.passableAuditCount,{numPassableAudits:r})})]}),s!==0&&c("div",{className:"SummaryTooltip__informative",children:i(a.informativeAuditCount,{numInformative:s})}),c(ar,{category:t})]})},Ya=({category:t,href:e,gatherMode:n,finalDisplayedUrl:a})=>c("div",{className:"SummaryCategory",children:t?c("div",{className:"SummaryCategory__content",children:[c(Za,{category:t,href:e,gatherMode:n}),c(ir,{category:t,gatherMode:n,url:a})]}):c("div",{className:"SummaryCategory__null","data-testid":"SummaryCategory__null"})});var or=["performance","accessibility","best-practices","seo"],rr=40,sr=({lhr:t})=>{let e=H();return c("div",{className:"SummaryNavigationHeader","data-testid":"SummaryNavigationHeader",children:[c(se,{}),c("div",{className:"SummaryNavigationHeader__url",children:c("a",{rel:"noopener",target:"_blank",href:t.finalDisplayedUrl,children:t.finalDisplayedUrl})}),c("div",{className:"SummaryNavigationHeader__category",children:e.categoryPerformance}),c("div",{className:"SummaryNavigationHeader__category",children:e.categoryAccessibility}),c("div",{className:"SummaryNavigationHeader__category",children:e.categoryBestPractices}),c("div",{className:"SummaryNavigationHeader__category",children:e.categorySeo})]})},lr=({lhr:t,label:e,hashIndex:n})=>{let a=te(()=>P.prepareReportResult(t),[t]),i=H(),o=st(t.gatherMode,i);return c("div",{className:"SummaryFlowStep",children:[t.gatherMode==="navigation"||n===0?c(sr,{lhr:t}):c("div",{className:"SummaryFlowStep__separator",children:[c(se,{}),c(Z,{})]}),c(lt,{lhr:t,width:rr}),c(se,{mode:t.gatherMode}),c("div",{className:"SummaryFlowStep__label",children:[c("div",{className:"SummaryFlowStep__mode",children:o}),c("a",{className:"SummaryFlowStep__link",href:`#index=${n}`,children:e})]}),or.map(r=>c(Ya,{category:a.categories[r],href:`#index=${n}&anchor=${r}`,gatherMode:t.gatherMode,finalDisplayedUrl:t.finalDisplayedUrl},r))]})},pr=()=>{let t=$();return c("div",{className:"SummaryFlow",children:t.steps.map((e,n)=>c(lr,{lhr:e.lhr,label:e.name,hashIndex:n},e.lhr.fetchTime))})},ur=()=>{let t=$(),e=H(),n=ht(),a=0,i=0,o=0;for(let p of t.steps)switch(p.lhr.gatherMode){case"navigation":a++;break;case"timespan":i++;break;case"snapshot":o++;break}let r=[];a&&r.push(n(e.navigationReportCount,{numNavigation:a})),i&&r.push(n(e.timespanReportCount,{numTimespan:i})),o&&r.push(n(e.snapshotReportCount,{numSnapshot:o}));let s=r.join(" · ");return c("div",{className:"SummaryHeader",children:[c("div",{className:"SummaryHeader__title",children:e.summary}),c("div",{className:"SummaryHeader__subtitle",children:s})]})},cr=({children:t})=>c("div",{className:"SummarySectionHeader",children:[c("div",{className:"SummarySectionHeader__content",children:t}),c(Z,{})]}),Qa=()=>{let t=H();return c("div",{className:"Summary","data-testid":"Summary",children:[c(ur,{}),c(Z,{}),c(cr,{children:t.allReports}),c(pr,{})]})};function mr(t,e){let n=t.cloneNode(!0);if(!n.hash)return n;let a=t.hash.substr(1);n.hash=`#index=${e}&anchor=${a}`,n.onclick=i=>{i.preventDefault();let o=document.getElementById(a);o&&o.scrollIntoView()},t.replaceWith(n)}var ei=({hashState:t})=>{let e=re(()=>Va(t.currentLhr,{disableFireworks:!0,disableDarkMode:!0,omitTopbar:!0,omitGlobalStyles:!0,onPageAnchorRendered:n=>mr(n,t.index)}),[t]);return c("div",{ref:e,"data-testid":"Report"})};var en=t=>{let e=H();return c("div",{className:"HelpDialogColumn",children:[c("div",{className:"HelpDialogColumn__legend",children:[c("div",{className:"HelpDialogColumnTimeline",children:[t.icon,c("div",{className:"HelpDialogColumnTimeline__line"})]}),c("div",{className:"HelpDialogColumn__legend-label",children:t.userFriendlyModeLabel})]}),c("div",{className:"HelpDialogColumn__header",children:[c("div",{className:"HelpDialogColumn__header-title",children:t.lighthouseOfficialModeLabel}),c("p",{children:t.modeDescription})]}),c("div",{className:"HelpDialogColumn__use-cases",children:[c("p",{children:t.useCaseInstruction}),c("ul",{children:t.useCases.map((n,a)=>c("li",{children:n},a))})]}),c("div",{className:"HelpDialogColumn__categories",children:[c("p",{children:e.categories}),c("ul",{children:t.availableCategories.map((n,a)=>c("li",{children:n},a))})]})]})},ti=({onClose:t})=>{let e=H();return c("div",{className:"HelpDialog",children:[c("div",{className:"HelpDialog__title",children:[c("div",{children:e.helpDialogTitle}),c("div",{style:{flexGrow:1}}),c("button",{className:"HelpDialog__close",onClick:t,children:c(On,{})})]}),c("div",{className:"HelpDialog__columns",children:[c(en,{icon:c(it,{}),userFriendlyModeLabel:e.navigationDescription,lighthouseOfficialModeLabel:e.navigationReport,modeDescription:e.navigationLongDescription,useCaseInstruction:e.helpUseCaseInstructionNavigation,useCases:[e.helpUseCaseNavigation1,e.helpUseCaseNavigation2,e.helpUseCaseNavigation3],availableCategories:[e.categoryPerformance,e.categoryAccessibility,e.categoryBestPractices,e.categorySeo]}),c(en,{icon:c(ot,{}),userFriendlyModeLabel:e.timespanDescription,lighthouseOfficialModeLabel:e.timespanReport,modeDescription:e.timespanLongDescription,useCaseInstruction:e.helpUseCaseInstructionTimespan,useCases:[e.helpUseCaseTimespan1,e.helpUseCaseTimespan2],availableCategories:[e.categoryPerformance,e.categoryBestPractices]}),c(en,{icon:c(rt,{}),userFriendlyModeLabel:e.snapshotDescription,lighthouseOfficialModeLabel:e.snapshotReport,modeDescription:e.snapshotLongDescription,useCaseInstruction:e.helpUseCaseInstructionSnapshot,useCases:[e.helpUseCaseSnapshot1,e.helpUseCaseSnapshot2],availableCategories:[e.categoryPerformance,e.categoryAccessibility,e.categoryBestPractices,e.categorySeo]})]})]})};function tn(t,e){let n=new Blob([e],{type:"text/html"}),a=Ga(t)+".html";tn.saveFile(n,a)}tn.saveFile=qa;var dr=()=>c("svg",{role:"img",class:"lh-topbar__logo",title:"Lighthouse logo",width:"24",height:"24",fill:"none",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",children:[c("path",{d:"m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z",fill:"#F63"}),c("path",{d:"M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z",fill:"#FFA385"}),c("path",{fill:"#FF3",d:"M20.5 10h7v7h-7z"})]}),_t=({onClick:t,label:e,children:n})=>c("button",{className:"TopbarButton",onClick:t,"aria-label":e,children:n}),ni=({onMenuClick:t})=>{let e=$(),n=H(),[a,i]=oe(!1),{getReportHtml:o,saveAsGist:r}=Xn();return c("div",{className:"Topbar",children:[c(_t,{onClick:t,label:"Button that opens and closes the sidebar",children:c(qn,{})}),c("div",{className:"Topbar__logo",children:c(dr,{})}),c("div",{className:"Topbar__title",children:n.title}),o&&c(_t,{onClick:()=>{let s=o(e);tn(e,s)},label:"Button that saves the report as HTML",children:n.save}),r&&c(_t,{onClick:()=>r(e),label:"Button that saves the report to a gist",children:n.dropdownSaveGist}),c("div",{style:{flexGrow:1}}),c(_t,{onClick:()=>i(s=>!s),label:"Button that toggles the help dialog",children:c("div",{className:"Topbar__help-label",children:[c(Wn,{}),n.helpLabel]})}),a?c(ti,{onClose:()=>i(!1)}):null]})};var hr=80,gr=120,nn=({lhr:t,position:e})=>{let n=e==="main"?gr:hr;return c("div",{className:`HeaderThumbnail HeaderThumbnail--${e}`,children:[c(lt,{lhr:t,height:n}),c("div",{className:"HeaderThumbnail__icon",children:c(Dt,{mode:t.gatherMode})})]})},ai=({hashState:t})=>{let e=$(),{index:n}=t,a=e.steps[n],i=e.steps[n-1],o=e.steps[n+1],r=H(),s=st(a.lhr.gatherMode,r);return c("div",{className:"Header",children:[i&&c(M,{children:[e.steps[n-2]&&c("div",{className:"Header__segment"}),c("div",{className:"Header__prev-thumbnail",children:[c(nn,{lhr:i.lhr,position:"prev"}),c("div",{className:"Header__segment"})]}),c("a",{className:"Header__prev-title",href:`#index=${n-1}`,children:i.name})]}),c("div",{className:"Header__current-thumbnail",children:c(nn,{lhr:a.lhr,position:"main"})}),c("div",{className:"Header__current-title",children:[a.name,c("div",{className:"Header__current-description",children:s})]}),o&&c(M,{children:[c("div",{className:"Header__next-thumbnail",children:[c("div",{className:"Header__segment"}),c(nn,{lhr:o.lhr,position:"next"})]}),c("a",{className:"Header__next-title",href:`#index=${n+1}`,children:o.name}),e.steps[n+2]&&c("div",{className:"Header__segment"})]})]})};var ii=()=>{let t=re(Ja);return c("div",{ref:t})};function fr(t){return!t||!t.anchor?null:document.getElementById(t.anchor)}var vr=()=>{let t=ye(),e=nt(null);return tt(()=>{let n=fr(t);n?n.scrollIntoView():e.current&&(e.current.scrollTop=0)},[t]),c("div",{ref:e,className:"Content",children:t?c(M,{children:[c(ai,{hashState:t}),c(ei,{hashState:t})]}):c(Qa,{})})},oi=({flowResult:t,options:e})=>{let[n,a]=oe(!1),i=te(()=>e||{},[e]);return c(Rt.Provider,{value:i,children:c(Nt.Provider,{value:t,children:c(Ea,{children:[c(ii,{}),c("div",{className:be("App",{"App--collapsed":n}),"data-testid":"App",children:[c(ni,{onMenuClick:()=>a(o=>!o)}),c(Ua,{}),c(vr,{})]})]})})})};function ri(t,e,n){e.classList.add("flow-vars","lh-vars","lh-root"),kn(At(oi,{flowResult:t,options:n}),e)}function br(){let t=document.body.querySelector("main");if(!t)throw Error("Container element not found");ri(window.__LIGHTHOUSE_FLOW_JSON__,t,{getReportHtml:()=>document.documentElement.outerHTML})}window.__initLighthouseFlowReport__=br;window.__initLighthouseFlowReport__();})();
2877
+ `)],["samples-one",y.strings.runtimeSingleLoad,y.strings.runtimeSingleLoadTooltip],["stopwatch",m],["networkspeed",`${a.summary}`,`${y.strings.runtimeSettingsNetworkThrottling}: ${a.networkThrottling}`],["chrome",`Using ${o}`+(r?` with ${r}`:""),`${y.strings.runtimeSettingsUANetwork}: "${e.environment.networkUserAgent}"`]],u=Object.keys(e.categories).filter(b=>P.isPluginCategory(b));for(let b of u){let C=e.environment.credits?.[b];d.push(["plugin",C?`${b} ${C}`:b,void 0,`https://www.npmjs.com/package/${b}`])}let h=this._dom.find(".lh-meta__items",n);for(let[b,C,v,g]of d){let f=this._dom.createChildOf(h,"li","lh-meta__item");if(g){let _=this._dom.createChildOf(f,"a");_.rel="noopener",_.target="_blank",_.textContent=C,this._dom.safelySetHref(_,g)}else f.textContent=C;if(v){f.classList.add("lh-tooltip-boundary");let _=this._dom.createChildOf(f,"div","lh-tooltip");_.textContent=v}f.classList.add("lh-report-icon",`lh-report-icon--${b}`)}}_renderReportWarnings(e){if(!e.runWarnings||e.runWarnings.length===0)return this._dom.createElement("div");let n=this._dom.createComponent("warningsToplevel"),a=this._dom.find(".lh-warnings__msg",n);a.textContent=y.strings.toplevelWarningsMessage;let i=[];for(let o of e.runWarnings){let r=this._dom.createElement("li");r.append(this._dom.convertMarkdownLinkSnippets(o)),i.push(r)}return this._dom.find("ul",n).append(...i),n}_renderScoreGauges(e,n,a){let i=[],o=[];for(let r of Object.values(e.categories)){let p=(a[r.id]||n).renderCategoryScore(r,e.categoryGroups||{},{gatherMode:e.gatherMode}),l=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",p);l&&(this._dom.safelySetHref(l,`#${r.id}`),l.addEventListener("click",m=>{if(!l.matches('[href^="#"]'))return;let d=l.getAttribute("href"),u=this._dom.rootEl;if(!d||!u)return;let h=this._dom.find(d,u);m.preventDefault(),h.scrollIntoView()}),this._opts.onPageAnchorRendered?.(l)),P.isPluginCategory(r.id)?o.push(p):i.push(p)}return[...i,...o]}_renderReport(e){y.apply({providedStrings:e.i18n.rendererFormattedStrings,i18n:new ge(e.configSettings.locale),reportJson:e});let n=new _e(this._dom,{fullPageScreenshot:e.fullPageScreenshot??void 0,entities:e.entities}),a=new pe(this._dom,n),i={performance:new gt(this._dom,n)},o=this._dom.createElement("div");o.append(this._renderReportHeader());let r=this._dom.createElement("div","lh-container"),s=this._dom.createElement("div","lh-report");s.append(this._renderReportWarnings(e));let p;Object.keys(e.categories).length===1?o.classList.add("lh-header--solo-category"):p=this._dom.createElement("div","lh-scores-header");let m=this._dom.createElement("div");if(m.classList.add("lh-scorescale-wrap"),m.append(this._dom.createComponent("scorescale")),p){let b=this._dom.find(".lh-scores-container",o);p.append(...this._renderScoreGauges(e,a,i)),b.append(p,m);let C=this._dom.createElement("div","lh-sticky-header");C.append(...this._renderScoreGauges(e,a,i)),r.append(C)}let d=this._dom.createElement("div","lh-categories");s.append(d);let u={gatherMode:e.gatherMode};for(let b of Object.values(e.categories)){let C=i[b.id]||a;C.dom.createChildOf(d,"div","lh-category-wrapper").append(C.render(b,e.categoryGroups,u))}a.injectFinalScreenshot(d,e.audits,m);let h=this._dom.createFragment();return this._opts.omitGlobalStyles||h.append(this._dom.createComponent("styles")),this._opts.omitTopbar||h.append(this._renderReportTopbar(e)),h.append(r),s.append(this._renderReportFooter(e)),r.append(o,s),e.fullPageScreenshot&&ue.installFullPageScreenshot(this._dom.rootEl,e.fullPageScreenshot.screenshot),h}};function Ce(t,e){let n=t.rootEl;typeof e>"u"?n.classList.toggle("lh-dark"):n.classList.toggle("lh-dark",e)}var Wo=typeof btoa<"u"?btoa:t=>Buffer.from(t).toString("base64"),Jo=typeof atob<"u"?atob:t=>Buffer.from(t,"base64").toString();async function Zo(t,e){let n=new TextEncoder().encode(t);if(e.gzip)if(typeof CompressionStream<"u"){let o=new CompressionStream("gzip"),r=o.writable.getWriter();r.write(n),r.close();let s=await new Response(o.readable).arrayBuffer();n=new Uint8Array(s)}else n=window.pako.gzip(t);let a="",i=5e3;for(let o=0;o<n.length;o+=i)a+=String.fromCharCode(...n.subarray(o,o+i));return Wo(a)}function Ko(t,e){let n=Jo(t),a=Uint8Array.from(n,i=>i.charCodeAt(0));return e.gzip?window.pako.ungzip(a,{toText:!0}):new TextDecoder().decode(a)}var za={toBase64:Zo,fromBase64:Ko};function Yt(){let t=window.location.host.endsWith(".vercel.app"),e=new URLSearchParams(window.location.search).has("dev");return t?`https://${window.location.host}/gh-pages`:e?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function Qt(t){let e=t.generatedTime,n=t.fetchTime||e;return`${t.lighthouseVersion}-${t.finalDisplayedUrl}-${n}`}function Xo(t,e,n){let a=new URL(e).origin;window.addEventListener("message",function o(r){r.origin===a&&i&&r.data.opened&&(i.postMessage(t,a),window.removeEventListener("message",o))});let i=window.open(e,n)}async function ja(t,e,n){let a=new URL(e),i=!!window.CompressionStream;a.hash=await za.toBase64(JSON.stringify(t),{gzip:i}),i&&a.searchParams.set("gzip","1"),window.open(a.toString(),n)}async function Ma(t){let e="viewer-"+Qt(t),n=Yt()+"/viewer/";await ja({lhr:t},n,e)}async function Ha(t){let e="viewer-"+Qt(t),n=Yt()+"/viewer/";Xo({lhr:t},n,e)}function Fa(t){if(!t.audits["script-treemap-data"].details)throw new Error("no script treemap data found");let n={lhr:{mainDocumentUrl:t.mainDocumentUrl,finalUrl:t.finalUrl,finalDisplayedUrl:t.finalDisplayedUrl,audits:{"script-treemap-data":t.audits["script-treemap-data"]},configSettings:{locale:t.configSettings.locale}}},a=Yt()+"/treemap/",i="treemap-"+Qt(t);ja(n,a,i)}var vt=class{constructor(e){this._dom=e,this._toggleEl,this._menuEl,this.onDocumentKeyDown=this.onDocumentKeyDown.bind(this),this.onToggleClick=this.onToggleClick.bind(this),this.onToggleKeydown=this.onToggleKeydown.bind(this),this.onMenuFocusOut=this.onMenuFocusOut.bind(this),this.onMenuKeydown=this.onMenuKeydown.bind(this),this._getNextMenuItem=this._getNextMenuItem.bind(this),this._getNextSelectableNode=this._getNextSelectableNode.bind(this),this._getPreviousMenuItem=this._getPreviousMenuItem.bind(this)}setup(e){this._toggleEl=this._dom.find(".lh-topbar button.lh-tools__button",this._dom.rootEl),this._toggleEl.addEventListener("click",this.onToggleClick),this._toggleEl.addEventListener("keydown",this.onToggleKeydown),this._menuEl=this._dom.find(".lh-topbar div.lh-tools__dropdown",this._dom.rootEl),this._menuEl.addEventListener("keydown",this.onMenuKeydown),this._menuEl.addEventListener("click",e)}close(){this._toggleEl.classList.remove("lh-active"),this._toggleEl.setAttribute("aria-expanded","false"),this._menuEl.contains(this._dom.document().activeElement)&&this._toggleEl.focus(),this._menuEl.removeEventListener("focusout",this.onMenuFocusOut),this._dom.document().removeEventListener("keydown",this.onDocumentKeyDown)}open(e){this._toggleEl.classList.contains("lh-active")?e.focus():this._menuEl.addEventListener("transitionend",()=>{e.focus()},{once:!0}),this._toggleEl.classList.add("lh-active"),this._toggleEl.setAttribute("aria-expanded","true"),this._menuEl.addEventListener("focusout",this.onMenuFocusOut),this._dom.document().addEventListener("keydown",this.onDocumentKeyDown)}onToggleClick(e){e.preventDefault(),e.stopImmediatePropagation(),this._toggleEl.classList.contains("lh-active")?this.close():this.open(this._getNextMenuItem())}onToggleKeydown(e){switch(e.code){case"ArrowUp":e.preventDefault(),this.open(this._getPreviousMenuItem());break;case"ArrowDown":case"Enter":case" ":e.preventDefault(),this.open(this._getNextMenuItem());break;default:}}onMenuKeydown(e){let n=e.target;switch(e.code){case"ArrowUp":e.preventDefault(),this._getPreviousMenuItem(n).focus();break;case"ArrowDown":e.preventDefault(),this._getNextMenuItem(n).focus();break;case"Home":e.preventDefault(),this._getNextMenuItem().focus();break;case"End":e.preventDefault(),this._getPreviousMenuItem().focus();break;default:}}onDocumentKeyDown(e){e.keyCode===27&&this.close()}onMenuFocusOut(e){let n=e.relatedTarget;this._menuEl.contains(n)||this.close()}_getNextSelectableNode(e,n){let a=e.filter(o=>o instanceof HTMLElement).filter(o=>!(o.hasAttribute("disabled")||window.getComputedStyle(o).display==="none")),i=n?a.indexOf(n)+1:0;return i>=a.length&&(i=0),a[i]}_getNextMenuItem(e){let n=Array.from(this._menuEl.childNodes);return this._getNextSelectableNode(n,e)}_getPreviousMenuItem(e){let n=Array.from(this._menuEl.childNodes).reverse();return this._getNextSelectableNode(n,e)}};var bt=class{constructor(e,n){this.lhr,this._reportUIFeatures=e,this._dom=n,this._dropDownMenu=new vt(this._dom),this._copyAttempt=!1,this.topbarEl,this.categoriesEl,this.stickyHeaderEl,this.highlightEl,this.onDropDownMenuClick=this.onDropDownMenuClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onCopy=this.onCopy.bind(this),this.collapseAllDetails=this.collapseAllDetails.bind(this)}enable(e){this.lhr=e,this._dom.rootEl.addEventListener("keyup",this.onKeyUp),this._dom.document().addEventListener("copy",this.onCopy),this._dropDownMenu.setup(this.onDropDownMenuClick),this._setUpCollapseDetailsAfterPrinting(),this._dom.find(".lh-topbar__logo",this._dom.rootEl).addEventListener("click",()=>Ce(this._dom)),this._setupStickyHeader()}onDropDownMenuClick(e){e.preventDefault();let n=e.target;if(!(!n||!n.hasAttribute("data-action"))){switch(n.getAttribute("data-action")){case"copy":this.onCopyButtonClick();break;case"print-summary":this.collapseAllDetails(),this._print();break;case"print-expanded":this.expandAllDetails(),this._print();break;case"save-json":{let a=JSON.stringify(this.lhr,null,2);this._reportUIFeatures._saveFile(new Blob([a],{type:"application/json"}));break}case"save-html":{let a=this._reportUIFeatures.getReportHtml();try{this._reportUIFeatures._saveFile(new Blob([a],{type:"text/html"}))}catch(i){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+i.message})}break}case"open-viewer":{this._dom.isDevTools()?Ma(this.lhr):Ha(this.lhr);break}case"save-gist":{this._reportUIFeatures.saveAsGist();break}case"toggle-dark":{Ce(this._dom);break}case"view-unthrottled-trace":this._reportUIFeatures._opts.onViewTrace?.()}this._dropDownMenu.close()}}onCopy(e){this._copyAttempt&&e.clipboardData&&(e.preventDefault(),e.clipboardData.setData("text/plain",JSON.stringify(this.lhr,null,2)),this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:"Report JSON copied to clipboard"})),this._copyAttempt=!1}onCopyButtonClick(){this._dom.fireEventOn("lh-analytics",this._dom.document(),{name:"copy"});try{this._dom.document().queryCommandSupported("copy")&&(this._copyAttempt=!0,this._dom.document().execCommand("copy")||(this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"warn",msg:"Your browser does not support copy to clipboard."})))}catch(e){this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:e.message})}}onKeyUp(e){(e.ctrlKey||e.metaKey)&&e.keyCode===80&&this._dropDownMenu.close()}expandAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(n=>n.open=!0)}collapseAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(n=>n.open=!1)}_print(){this._reportUIFeatures._opts.onPrintOverride?this._reportUIFeatures._opts.onPrintOverride(this._dom.rootEl):self.print()}resetUIState(){this._dropDownMenu.close()}_getScrollParent(e){let{overflowY:n}=window.getComputedStyle(e);return n!=="visible"&&n!=="hidden"?e:e.parentElement?this._getScrollParent(e.parentElement):document}_setUpCollapseDetailsAfterPrinting(){"onbeforeprint"in self?self.addEventListener("afterprint",this.collapseAllDetails):self.matchMedia("print").addListener(n=>{n.matches?this.expandAllDetails():this.collapseAllDetails()})}_setupStickyHeader(){this.topbarEl=this._dom.find("div.lh-topbar",this._dom.rootEl),this.categoriesEl=this._dom.find("div.lh-categories",this._dom.rootEl),requestAnimationFrame(()=>requestAnimationFrame(()=>{try{this.stickyHeaderEl=this._dom.find("div.lh-sticky-header",this._dom.rootEl)}catch{return}this.highlightEl=this._dom.createChildOf(this.stickyHeaderEl,"div","lh-highlighter");let e=this._getScrollParent(this._dom.find(".lh-container",this._dom.rootEl));e.addEventListener("scroll",()=>this._updateStickyHeader());let n=e instanceof window.Document?document.documentElement:e;new window.ResizeObserver(()=>this._updateStickyHeader()).observe(n)}))}_updateStickyHeader(){if(!this.stickyHeaderEl)return;let e=this.topbarEl.getBoundingClientRect().bottom,n=this.categoriesEl.getBoundingClientRect().top,a=e>=n,o=Array.from(this._dom.rootEl.querySelectorAll(".lh-category")).filter(d=>d.getBoundingClientRect().top-window.innerHeight/2<0),r=o.length>0?o.length-1:0,s=this.stickyHeaderEl.querySelectorAll(".lh-gauge__wrapper, .lh-fraction__wrapper"),p=s[r],l=s[0].getBoundingClientRect().left,m=p.getBoundingClientRect().left-l;this.highlightEl.style.transform=`translate(${m}px)`,this.stickyHeaderEl.classList.toggle("lh-sticky-header--visible",a)}};function Ba(t,e){let n=e?new Date(e):new Date,a=n.toLocaleTimeString("en-US",{hour12:!1}),i=n.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");i.unshift(i.pop());let o=i.join("-");return`${t.slice(0,200)}_${o}_${a}`.replace(/[/?<>\\:*|"]/g,"-")}function Oa(t){let{hostname:e,pathname:n}=new URL(t.finalDisplayedUrl),a=e+n.replace(/\/$/,"");return Ba(a,t.fetchTime)}function Ga(t){let e=t.steps[0].lhr,n=t.name.replace(/\s/g,"-");return Ba(n,e.fetchTime)}function Yo(t){return Array.from(t.tBodies[0].rows)}var yt=class{constructor(e,n={}){this.json,this._dom=e,this._opts=n,this._topbar=n.omitTopbar?null:new bt(this,e),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(e){this.json=e,this._fullPageScreenshot=N.getFullPageScreenshot(e),this._topbar&&(this._topbar.enable(e),this._topbar.resetUIState()),this._setupMediaQueryListeners(),this._setupThirdPartyFilter(),this._setupElementScreenshotOverlay(this._dom.rootEl);let n=this._dom.isDevTools()||this._opts.disableDarkMode||this._opts.disableAutoDarkModeAndFireworks;!n&&window.matchMedia("(prefers-color-scheme: dark)").matches&&Ce(this._dom,!0);let i=["performance","accessibility","best-practices","seo"].every(p=>{let l=e.categories[p];return l&&l.score===1}),o=this._opts.disableFireworks||this._opts.disableAutoDarkModeAndFireworks;if(i&&!o&&(this._enableFireworks(),n||Ce(this._dom,!0)),e.categories.performance&&e.categories.performance.auditRefs.some(p=>!!(p.group==="metrics"&&e.audits[p.id].errorMessage))){let p=this._dom.find("input.lh-metrics-toggle__input",this._dom.rootEl);p.checked=!0}this.json.audits["script-treemap-data"]&&this.json.audits["script-treemap-data"].details&&this.addButton({text:y.strings.viewTreemapLabel,icon:"treemap",onClick:()=>Fa(this.json)}),this._opts.onViewTrace&&(e.configSettings.throttlingMethod==="simulate"?this._dom.find('a[data-action="view-unthrottled-trace"]',this._dom.rootEl).classList.remove("lh-hidden"):this.addButton({text:y.strings.viewTraceLabel,onClick:()=>this._opts.onViewTrace?.()})),this._opts.getStandaloneReportHTML&&this._dom.find('a[data-action="save-html"]',this._dom.rootEl).classList.remove("lh-hidden");for(let p of this._dom.findAll("[data-i18n]",this._dom.rootEl)){let m=p.getAttribute("data-i18n");p.textContent=y.strings[m]}}addButton(e){let n=this._dom.rootEl.querySelector(".lh-audit-group--metrics");if(!n)return;let a=n.querySelector(".lh-buttons");a||(a=this._dom.createChildOf(n,"div","lh-buttons"));let i=["lh-button"];e.icon&&(i.push("lh-report-icon"),i.push(`lh-report-icon--${e.icon}`));let o=this._dom.createChildOf(a,"button",i.join(" "));return o.textContent=e.text,o.addEventListener("click",e.onClick),o}resetUIState(){this._topbar&&this._topbar.resetUIState()}getReportHtml(){if(!this._opts.getStandaloneReportHTML)throw new Error("`getStandaloneReportHTML` is not set");return this.resetUIState(),this._opts.getStandaloneReportHTML()}saveAsGist(){throw new Error("Cannot save as gist from base report")}_enableFireworks(){this._dom.find(".lh-scores-container",this._dom.rootEl).classList.add("lh-score100")}_setupMediaQueryListeners(){let e=self.matchMedia("(max-width: 500px)");e.addListener(this.onMediaQueryChange),this.onMediaQueryChange(e)}_resetUIState(){this._topbar&&this._topbar.resetUIState()}onMediaQueryChange(e){this._dom.rootEl.classList.toggle("lh-narrow",e.matches)}_setupThirdPartyFilter(){let e=["uses-rel-preconnect","third-party-facades","network-dependency-tree-insight"],n=["legacy-javascript","legacy-javascript-insight"];Array.from(this._dom.rootEl.querySelectorAll("table.lh-table")).filter(o=>o.querySelector("td.lh-table-column--url, td.lh-table-column--source-location")).filter(o=>{let r=o.closest(".lh-audit");if(!r)throw new Error(".lh-table not within audit");return!e.includes(r.id)}).forEach(o=>{let r=Yo(o),s=r.filter(v=>!v.classList.contains("lh-sub-item-row")),p=this._getThirdPartyRows(s,N.getFinalDisplayedUrl(this.json)),l=r.some(v=>v.classList.contains("lh-row--even")),m=this._dom.createComponent("3pFilter"),d=this._dom.find("input",m);d.addEventListener("change",v=>{let g=v.target instanceof HTMLInputElement&&!v.target.checked,f=!0,_=s[0];for(;_;){let w=g&&p.includes(_);do _.classList.toggle("lh-row--hidden",w),l&&(_.classList.toggle("lh-row--even",!w&&f),_.classList.toggle("lh-row--odd",!w&&!f)),_=_.nextElementSibling;while(_&&_.classList.contains("lh-sub-item-row"));w||(f=!f)}});let u=p.filter(v=>!v.classList.contains("lh-row--group")).length;this._dom.find(".lh-3p-filter-count",m).textContent=`${u}`,this._dom.find(".lh-3p-ui-string",m).textContent=y.strings.thirdPartyResourcesLabel;let h=p.length===s.length,b=!p.length;if((h||b)&&(this._dom.find("div.lh-3p-filter",m).hidden=!0),!o.parentNode)return;o.parentNode.insertBefore(m,o);let C=o.closest(".lh-audit");if(!C)throw new Error(".lh-table not within audit");n.includes(C.id)&&!h&&d.click()})}_setupElementScreenshotOverlay(e){this._fullPageScreenshot&&ue.installOverlayFeature({dom:this._dom,rootEl:e,overlayContainerEl:e,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(e,n){let a=N.getEntityFromUrl(n,this.json.entities),i=this.json.entities?.find(r=>r.isFirstParty===!0)?.name,o=[];for(let r of e){if(i){if(!r.dataset.entity||r.dataset.entity===i)continue}else{let s=r.querySelector("div.lh-text__url");if(!s)continue;let p=s.dataset.url;if(!p||!(N.getEntityFromUrl(p,this.json.entities)!==a))continue}o.push(r)}return o}_saveFile(e){let n=e.type.match("json")?".json":".html",a=Oa({finalDisplayedUrl:N.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime})+n;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(e,a):this._dom.saveFile(e,a)}};function Va(t,e={}){let n=document.createElement("article");n.classList.add("lh-root","lh-vars");let a=new le(n.ownerDocument,n);return new ft(a).renderReport(t,n,e),new yt(a,e).initFeatures(t),n}function $a(t,e){let n=new le(document,document.documentElement),a=new _e(n);return new pe(n,a).renderCategoryScore(t,{},e)}function qa(t,e){new le(document,document.documentElement).saveFile(t,e)}function Wa(t){return new le(document,document.documentElement).convertMarkdownCodeSnippets(t)}function Ja(){return new le(document,document.documentElement).createComponent("styles")}var Za=({category:t,href:e,gatherMode:n})=>{let a=re(()=>$a(t,{gatherMode:n,omitLabel:!0,onPageAnchorRendered:i=>i.href=e}),[t,e]);return c("div",{ref:a,"data-testid":"CategoryScore"})};var Ka=({text:t})=>{let e=re(()=>Wa(t),[t]);return c("span",{ref:e})};var Qo=2;function er(t,e){switch(t){case"navigation":return e.navigationReport;case"timespan":return e.timespanReport;case"snapshot":return e.snapshotReport}}function tr(t,e){switch(t){case"pass":return e.ratingPass;case"average":return e.ratingAverage;case"fail":return e.ratingFail;case"error":return e.ratingError}}function Xa(t){return t.weight*(1-t.result.score)}var nr=({audit:t})=>{let e=P.calculateRating(t.result.score,t.result.scoreDisplayMode);return c("div",{className:`SummaryTooltipAudit SummaryTooltipAudit--${e}`,children:c(Ka,{text:t.result.title})})},ar=({category:t})=>{let e=H();function n(i){return i.result.score!==null&&i.group!=="metrics"&&i.group!=="hidden"&&(i.weight>0||i.group==="diagnostics")&&!P.showAsPassed(i.result)}let a=t.auditRefs.filter(n).sort((i,o)=>{let r=Xa(i),s=Xa(o);if(r!==s)return s-r;if(i.result.score!==o.result.score)return i.result.score-o.result.score;let p=i.result.metricSavings?.LCP||0;return(o.result.metricSavings?.LCP||0)-p}).splice(0,Qo);return a.length?c("div",{className:"SummaryTooltipAudits",children:[c("div",{className:"SummaryTooltipAudits__title",children:e.highestImpact}),a.map(i=>c(nr,{audit:i},i.id))]}):null},ir=({category:t,gatherMode:e,url:n})=>{let a=H(),i=ht(),{numPassed:o,numPassableAudits:r,numInformative:s,totalWeight:p}=P.calculateCategoryFraction(t),l=Fe(),m=P.shouldDisplayAsFraction(e,t),d=m?o/r:t.score,u=d===null?"error":P.calculateRating(d);return c("div",{className:"SummaryTooltip",children:[c("div",{className:"SummaryTooltip__title",children:er(e,a)}),c("div",{className:"SummaryTooltip__url",children:n}),c(Z,{}),c("div",{className:"SummaryTooltip__category",children:[c("div",{className:"SummaryTooltip__category-title",children:t.title}),p!==0&&c("div",{className:`SummaryTooltip__rating SummaryTooltip__rating--${u}`,children:[c("span",{children:tr(u,a)}),!m&&t.score!==null&&c(M,{children:[c("span",{children:" · "}),c("span",{children:l.formatter.formatInteger(t.score*100)})]})]})]}),c("div",{className:"SummaryTooltip__fraction",children:[c("span",{children:i(a.passedAuditCount,{numPassed:o})}),c("span",{children:" / "}),c("span",{children:i(a.passableAuditCount,{numPassableAudits:r})})]}),s!==0&&c("div",{className:"SummaryTooltip__informative",children:i(a.informativeAuditCount,{numInformative:s})}),c(ar,{category:t})]})},Ya=({category:t,href:e,gatherMode:n,finalDisplayedUrl:a})=>c("div",{className:"SummaryCategory",children:t?c("div",{className:"SummaryCategory__content",children:[c(Za,{category:t,href:e,gatherMode:n}),c(ir,{category:t,gatherMode:n,url:a})]}):c("div",{className:"SummaryCategory__null","data-testid":"SummaryCategory__null"})});var or=["performance","accessibility","best-practices","seo"],rr=40,sr=({lhr:t})=>{let e=H();return c("div",{className:"SummaryNavigationHeader","data-testid":"SummaryNavigationHeader",children:[c(se,{}),c("div",{className:"SummaryNavigationHeader__url",children:c("a",{rel:"noopener",target:"_blank",href:t.finalDisplayedUrl,children:t.finalDisplayedUrl})}),c("div",{className:"SummaryNavigationHeader__category",children:e.categoryPerformance}),c("div",{className:"SummaryNavigationHeader__category",children:e.categoryAccessibility}),c("div",{className:"SummaryNavigationHeader__category",children:e.categoryBestPractices}),c("div",{className:"SummaryNavigationHeader__category",children:e.categorySeo})]})},lr=({lhr:t,label:e,hashIndex:n})=>{let a=te(()=>P.prepareReportResult(t),[t]),i=H(),o=st(t.gatherMode,i);return c("div",{className:"SummaryFlowStep",children:[t.gatherMode==="navigation"||n===0?c(sr,{lhr:t}):c("div",{className:"SummaryFlowStep__separator",children:[c(se,{}),c(Z,{})]}),c(lt,{lhr:t,width:rr}),c(se,{mode:t.gatherMode}),c("div",{className:"SummaryFlowStep__label",children:[c("div",{className:"SummaryFlowStep__mode",children:o}),c("a",{className:"SummaryFlowStep__link",href:`#index=${n}`,children:e})]}),or.map(r=>c(Ya,{category:a.categories[r],href:`#index=${n}&anchor=${r}`,gatherMode:t.gatherMode,finalDisplayedUrl:t.finalDisplayedUrl},r))]})},pr=()=>{let t=$();return c("div",{className:"SummaryFlow",children:t.steps.map((e,n)=>c(lr,{lhr:e.lhr,label:e.name,hashIndex:n},e.lhr.fetchTime))})},ur=()=>{let t=$(),e=H(),n=ht(),a=0,i=0,o=0;for(let p of t.steps)switch(p.lhr.gatherMode){case"navigation":a++;break;case"timespan":i++;break;case"snapshot":o++;break}let r=[];a&&r.push(n(e.navigationReportCount,{numNavigation:a})),i&&r.push(n(e.timespanReportCount,{numTimespan:i})),o&&r.push(n(e.snapshotReportCount,{numSnapshot:o}));let s=r.join(" · ");return c("div",{className:"SummaryHeader",children:[c("div",{className:"SummaryHeader__title",children:e.summary}),c("div",{className:"SummaryHeader__subtitle",children:s})]})},cr=({children:t})=>c("div",{className:"SummarySectionHeader",children:[c("div",{className:"SummarySectionHeader__content",children:t}),c(Z,{})]}),Qa=()=>{let t=H();return c("div",{className:"Summary","data-testid":"Summary",children:[c(ur,{}),c(Z,{}),c(cr,{children:t.allReports}),c(pr,{})]})};function mr(t,e){let n=t.cloneNode(!0);if(!n.hash)return n;let a=t.hash.substr(1);n.hash=`#index=${e}&anchor=${a}`,n.onclick=i=>{i.preventDefault();let o=document.getElementById(a);o&&o.scrollIntoView()},t.replaceWith(n)}var ei=({hashState:t})=>{let e=re(()=>Va(t.currentLhr,{disableFireworks:!0,disableDarkMode:!0,omitTopbar:!0,omitGlobalStyles:!0,onPageAnchorRendered:n=>mr(n,t.index)}),[t]);return c("div",{ref:e,"data-testid":"Report"})};var en=t=>{let e=H();return c("div",{className:"HelpDialogColumn",children:[c("div",{className:"HelpDialogColumn__legend",children:[c("div",{className:"HelpDialogColumnTimeline",children:[t.icon,c("div",{className:"HelpDialogColumnTimeline__line"})]}),c("div",{className:"HelpDialogColumn__legend-label",children:t.userFriendlyModeLabel})]}),c("div",{className:"HelpDialogColumn__header",children:[c("div",{className:"HelpDialogColumn__header-title",children:t.lighthouseOfficialModeLabel}),c("p",{children:t.modeDescription})]}),c("div",{className:"HelpDialogColumn__use-cases",children:[c("p",{children:t.useCaseInstruction}),c("ul",{children:t.useCases.map((n,a)=>c("li",{children:n},a))})]}),c("div",{className:"HelpDialogColumn__categories",children:[c("p",{children:e.categories}),c("ul",{children:t.availableCategories.map((n,a)=>c("li",{children:n},a))})]})]})},ti=({onClose:t})=>{let e=H();return c("div",{className:"HelpDialog",children:[c("div",{className:"HelpDialog__title",children:[c("div",{children:e.helpDialogTitle}),c("div",{style:{flexGrow:1}}),c("button",{className:"HelpDialog__close",onClick:t,children:c(On,{})})]}),c("div",{className:"HelpDialog__columns",children:[c(en,{icon:c(it,{}),userFriendlyModeLabel:e.navigationDescription,lighthouseOfficialModeLabel:e.navigationReport,modeDescription:e.navigationLongDescription,useCaseInstruction:e.helpUseCaseInstructionNavigation,useCases:[e.helpUseCaseNavigation1,e.helpUseCaseNavigation2,e.helpUseCaseNavigation3],availableCategories:[e.categoryPerformance,e.categoryAccessibility,e.categoryBestPractices,e.categorySeo]}),c(en,{icon:c(ot,{}),userFriendlyModeLabel:e.timespanDescription,lighthouseOfficialModeLabel:e.timespanReport,modeDescription:e.timespanLongDescription,useCaseInstruction:e.helpUseCaseInstructionTimespan,useCases:[e.helpUseCaseTimespan1,e.helpUseCaseTimespan2],availableCategories:[e.categoryPerformance,e.categoryBestPractices]}),c(en,{icon:c(rt,{}),userFriendlyModeLabel:e.snapshotDescription,lighthouseOfficialModeLabel:e.snapshotReport,modeDescription:e.snapshotLongDescription,useCaseInstruction:e.helpUseCaseInstructionSnapshot,useCases:[e.helpUseCaseSnapshot1,e.helpUseCaseSnapshot2],availableCategories:[e.categoryPerformance,e.categoryAccessibility,e.categoryBestPractices,e.categorySeo]})]})]})};function tn(t,e){let n=new Blob([e],{type:"text/html"}),a=Ga(t)+".html";tn.saveFile(n,a)}tn.saveFile=qa;var dr=()=>c("svg",{role:"img",class:"lh-topbar__logo",title:"Lighthouse logo",width:"24",height:"24",fill:"none",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",children:[c("path",{d:"m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z",fill:"#F63"}),c("path",{d:"M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z",fill:"#FFA385"}),c("path",{fill:"#FF3",d:"M20.5 10h7v7h-7z"})]}),_t=({onClick:t,label:e,children:n})=>c("button",{className:"TopbarButton",onClick:t,"aria-label":e,children:n}),ni=({onMenuClick:t})=>{let e=$(),n=H(),[a,i]=oe(!1),{getReportHtml:o,saveAsGist:r}=Xn();return c("div",{className:"Topbar",children:[c(_t,{onClick:t,label:"Button that opens and closes the sidebar",children:c(qn,{})}),c("div",{className:"Topbar__logo",children:c(dr,{})}),c("div",{className:"Topbar__title",children:n.title}),o&&c(_t,{onClick:()=>{let s=o(e);tn(e,s)},label:"Button that saves the report as HTML",children:n.save}),r&&c(_t,{onClick:()=>r(e),label:"Button that saves the report to a gist",children:n.dropdownSaveGist}),c("div",{style:{flexGrow:1}}),c(_t,{onClick:()=>i(s=>!s),label:"Button that toggles the help dialog",children:c("div",{className:"Topbar__help-label",children:[c(Wn,{}),n.helpLabel]})}),a?c(ti,{onClose:()=>i(!1)}):null]})};var hr=80,gr=120,nn=({lhr:t,position:e})=>{let n=e==="main"?gr:hr;return c("div",{className:`HeaderThumbnail HeaderThumbnail--${e}`,children:[c(lt,{lhr:t,height:n}),c("div",{className:"HeaderThumbnail__icon",children:c(Dt,{mode:t.gatherMode})})]})},ai=({hashState:t})=>{let e=$(),{index:n}=t,a=e.steps[n],i=e.steps[n-1],o=e.steps[n+1],r=H(),s=st(a.lhr.gatherMode,r);return c("div",{className:"Header",children:[i&&c(M,{children:[e.steps[n-2]&&c("div",{className:"Header__segment"}),c("div",{className:"Header__prev-thumbnail",children:[c(nn,{lhr:i.lhr,position:"prev"}),c("div",{className:"Header__segment"})]}),c("a",{className:"Header__prev-title",href:`#index=${n-1}`,children:i.name})]}),c("div",{className:"Header__current-thumbnail",children:c(nn,{lhr:a.lhr,position:"main"})}),c("div",{className:"Header__current-title",children:[a.name,c("div",{className:"Header__current-description",children:s})]}),o&&c(M,{children:[c("div",{className:"Header__next-thumbnail",children:[c("div",{className:"Header__segment"}),c(nn,{lhr:o.lhr,position:"next"})]}),c("a",{className:"Header__next-title",href:`#index=${n+1}`,children:o.name}),e.steps[n+2]&&c("div",{className:"Header__segment"})]})]})};var ii=()=>{let t=re(Ja);return c("div",{ref:t})};function fr(t){return!t||!t.anchor?null:document.getElementById(t.anchor)}var vr=()=>{let t=ye(),e=nt(null);return tt(()=>{let n=fr(t);n?n.scrollIntoView():e.current&&(e.current.scrollTop=0)},[t]),c("div",{ref:e,className:"Content",children:t?c(M,{children:[c(ai,{hashState:t}),c(ei,{hashState:t})]}):c(Qa,{})})},oi=({flowResult:t,options:e})=>{let[n,a]=oe(!1),i=te(()=>e||{},[e]);return c(Rt.Provider,{value:i,children:c(Nt.Provider,{value:t,children:c(Ea,{children:[c(ii,{}),c("div",{className:be("App",{"App--collapsed":n}),"data-testid":"App",children:[c(ni,{onMenuClick:()=>a(o=>!o)}),c(Ua,{}),c(vr,{})]})]})})})};function ri(t,e,n){e.classList.add("flow-vars","lh-vars","lh-root"),kn(At(oi,{flowResult:t,options:n}),e)}function br(){let t=document.body.querySelector("main");if(!t)throw Error("Container element not found");ri(window.__LIGHTHOUSE_FLOW_JSON__,t,{getReportHtml:()=>document.documentElement.outerHTML})}window.__initLighthouseFlowReport__=br;window.__initLighthouseFlowReport__();})();
2878
2878
  /**
2879
2879
  * @license
2880
2880
  * Copyright 2017 Google LLC