lighthouse 11.0.0-dev.20230827 → 11.0.0-dev.20230828
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.
- package/core/gather/timespan-runner.d.ts +3 -0
- package/core/gather/timespan-runner.js +23 -0
- package/dist/report/bundle.esm.js +3 -1
- package/dist/report/flow.js +3 -1
- package/dist/report/standalone.js +3 -1
- package/package.json +1 -1
- package/readme.md +2 -1
- package/report/assets/templates.html +2 -0
- package/report/renderer/components.js +1 -1
- package/report/renderer/i18n-formatter.js +1 -1
- package/shared/localization/locales/en-US.json +3 -0
- package/shared/localization/locales/en-XL.json +3 -0
- package/dependabot.yml +0 -10
|
@@ -9,4 +9,7 @@ export function startTimespanGather(page: LH.Puppeteer.Page, options?: {
|
|
|
9
9
|
} | undefined): Promise<{
|
|
10
10
|
endTimespanGather(): Promise<LH.Gatherer.GatherResult>;
|
|
11
11
|
}>;
|
|
12
|
+
export namespace UIStrings {
|
|
13
|
+
const warningNavigationDetected: string;
|
|
14
|
+
}
|
|
12
15
|
//# sourceMappingURL=timespan-runner.d.ts.map
|
|
@@ -12,6 +12,16 @@ import {getEmptyArtifactState, collectPhaseArtifacts, awaitArtifacts} from './ru
|
|
|
12
12
|
import {enableAsyncStacks, prepareTargetForTimespanMode} from './driver/prepare.js';
|
|
13
13
|
import {initializeConfig} from '../config/config.js';
|
|
14
14
|
import {getBaseArtifacts, finalizeArtifacts} from './base-artifacts.js';
|
|
15
|
+
import * as i18n from '../lib/i18n/i18n.js';
|
|
16
|
+
|
|
17
|
+
/* eslint-disable max-len */
|
|
18
|
+
const UIStrings = {
|
|
19
|
+
/** A warning that indicates page navigations should be audited using navigation mode, as opposed to timespan mode. "navigation mode" refers to a Lighthouse mode that analyzes a page navigation. "timespan mode" refers to a Lighthouse mode that analyzes user interactions over an arbitrary period of time. */
|
|
20
|
+
warningNavigationDetected: 'A page navigation was detected during the run. Using timespan mode to audit page navigations is not recommended. Use navigation mode to audit page navigations for better third-party attribution and main thread detection.',
|
|
21
|
+
};
|
|
22
|
+
/* eslint-enable max-len */
|
|
23
|
+
|
|
24
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
15
25
|
|
|
16
26
|
/**
|
|
17
27
|
* @param {LH.Puppeteer.Page} page
|
|
@@ -45,6 +55,13 @@ async function startTimespanGather(page, options = {}) {
|
|
|
45
55
|
|
|
46
56
|
await prepareTargetForTimespanMode(driver, resolvedConfig.settings);
|
|
47
57
|
|
|
58
|
+
let pageNavigationDetected = false;
|
|
59
|
+
function onFrameNavigated() {
|
|
60
|
+
pageNavigationDetected = true;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
driver.defaultSession.on('Page.frameNavigated', onFrameNavigated);
|
|
64
|
+
|
|
48
65
|
const disableAsyncStacks = await enableAsyncStacks(driver.defaultSession);
|
|
49
66
|
|
|
50
67
|
await collectPhaseArtifacts({phase: 'startInstrumentation', ...phaseOptions});
|
|
@@ -67,6 +84,11 @@ async function startTimespanGather(page, options = {}) {
|
|
|
67
84
|
// We should disable our `Page.frameNavigated` handlers before that.
|
|
68
85
|
await disableAsyncStacks();
|
|
69
86
|
|
|
87
|
+
driver.defaultSession.off('Page.frameNavigated', onFrameNavigated);
|
|
88
|
+
if (pageNavigationDetected) {
|
|
89
|
+
baseArtifacts.LighthouseRunWarnings.push(str_(UIStrings.warningNavigationDetected));
|
|
90
|
+
}
|
|
91
|
+
|
|
70
92
|
await collectPhaseArtifacts({phase: 'getArtifact', ...phaseOptions});
|
|
71
93
|
await driver.disconnect();
|
|
72
94
|
|
|
@@ -82,4 +104,5 @@ async function startTimespanGather(page, options = {}) {
|
|
|
82
104
|
|
|
83
105
|
export {
|
|
84
106
|
startTimespanGather,
|
|
107
|
+
UIStrings,
|
|
85
108
|
};
|
|
@@ -242,6 +242,8 @@ var D="\u2026",de="\xA0";var pe={PASS:{label:"pass",minScore:.9},AVERAGE:{label:
|
|
|
242
242
|
position: absolute;
|
|
243
243
|
grid-column: 1;
|
|
244
244
|
bottom: -1px;
|
|
245
|
+
left: 0px;
|
|
246
|
+
right: 0px;
|
|
245
247
|
}
|
|
246
248
|
|
|
247
249
|
.lh-gauge__wrapper:first-of-type {
|
|
@@ -2476,7 +2478,7 @@ details[open] .lh-clump-toggletext--hide { display: block;}
|
|
|
2476
2478
|
display: none;
|
|
2477
2479
|
}
|
|
2478
2480
|
}
|
|
2479
|
-
`),e.append(t);let n=o.createElement("div","lh-topbar"),r=o.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");r.setAttribute("role","img"),r.setAttribute("title","Lighthouse logo"),r.setAttribute("fill","none"),r.setAttribute("xmlns","http://www.w3.org/2000/svg"),r.setAttribute("viewBox","0 0 48 48");let i=o.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=o.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=o.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("fill","#FF3"),l.setAttribute("d","M20.5 10h7v7h-7z"),r.append(" ",i," ",a," ",l," ");let s=o.createElement("a","lh-topbar__url");s.setAttribute("href",""),s.setAttribute("target","_blank"),s.setAttribute("rel","noopener");let c=o.createElement("div","lh-tools"),d=o.createElement("div","lh-tools-locale lh-hidden"),p=o.createElement("button","lh-button lh-tool-locale__button");p.setAttribute("id","lh-button__swap-locales"),p.setAttribute("title","Show Language Picker"),p.setAttribute("aria-label","Toggle language picker"),p.setAttribute("aria-haspopup","menu"),p.setAttribute("aria-expanded","false"),p.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");let h=o.createElementNS("http://www.w3.org/2000/svg","svg");h.setAttribute("width","20px"),h.setAttribute("height","20px"),h.setAttribute("viewBox","0 0 24 24"),h.setAttribute("fill","currentColor");let u=o.createElementNS("http://www.w3.org/2000/svg","path");u.setAttribute("d","M0 0h24v24H0V0z"),u.setAttribute("fill","none");let f=o.createElementNS("http://www.w3.org/2000/svg","path");f.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"),h.append(u,f),p.append(" ",h," ");let b=o.createElement("div","lh-tools-locale__selector-wrapper");b.setAttribute("id","lh-tools-locale__selector-wrapper"),b.setAttribute("role","menu"),b.setAttribute("aria-labelledby","lh-button__swap-locales"),b.setAttribute("aria-hidden","true"),b.append(" "," "),d.append(" ",p," ",b," ");let _=o.createElement("button","lh-tools__button");_.setAttribute("id","lh-tools-button"),_.setAttribute("title","Tools menu"),_.setAttribute("aria-label","Toggle report tools menu"),_.setAttribute("aria-haspopup","menu"),_.setAttribute("aria-expanded","false"),_.setAttribute("aria-controls","lh-tools-dropdown");let m=o.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("width","100%"),m.setAttribute("height","100%"),m.setAttribute("viewBox","0 0 24 24");let w=o.createElementNS("http://www.w3.org/2000/svg","path");w.setAttribute("d","M0 0h24v24H0z"),w.setAttribute("fill","none");let v=o.createElementNS("http://www.w3.org/2000/svg","path");v.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"),m.append(" ",w," ",v," "),_.append(" ",m," ");let x=o.createElement("div","lh-tools__dropdown");x.setAttribute("id","lh-tools-dropdown"),x.setAttribute("role","menu"),x.setAttribute("aria-labelledby","lh-tools-button");let E=o.createElement("a","lh-report-icon lh-report-icon--print");E.setAttribute("role","menuitem"),E.setAttribute("tabindex","-1"),E.setAttribute("href","#"),E.setAttribute("data-i18n","dropdownPrintSummary"),E.setAttribute("data-action","print-summary");let A=o.createElement("a","lh-report-icon lh-report-icon--print");A.setAttribute("role","menuitem"),A.setAttribute("tabindex","-1"),A.setAttribute("href","#"),A.setAttribute("data-i18n","dropdownPrintExpanded"),A.setAttribute("data-action","print-expanded");let C=o.createElement("a","lh-report-icon lh-report-icon--copy");C.setAttribute("role","menuitem"),C.setAttribute("tabindex","-1"),C.setAttribute("href","#"),C.setAttribute("data-i18n","dropdownCopyJSON"),C.setAttribute("data-action","copy");let L=o.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");L.setAttribute("role","menuitem"),L.setAttribute("tabindex","-1"),L.setAttribute("href","#"),L.setAttribute("data-i18n","dropdownSaveHTML"),L.setAttribute("data-action","save-html");let S=o.createElement("a","lh-report-icon lh-report-icon--download");S.setAttribute("role","menuitem"),S.setAttribute("tabindex","-1"),S.setAttribute("href","#"),S.setAttribute("data-i18n","dropdownSaveJSON"),S.setAttribute("data-action","save-json");let z=o.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 M=o.createElement("a","lh-report-icon lh-report-icon--open");M.setAttribute("role","menuitem"),M.setAttribute("tabindex","-1"),M.setAttribute("href","#"),M.setAttribute("data-i18n","dropdownSaveGist"),M.setAttribute("data-action","save-gist");let T=o.createElement("a","lh-report-icon lh-report-icon--open lh-hidden");T.setAttribute("role","menuitem"),T.setAttribute("tabindex","-1"),T.setAttribute("href","#"),T.setAttribute("data-i18n","dropdownViewUnthrottledTrace"),T.setAttribute("data-action","view-unthrottled-trace");let F=o.createElement("a","lh-report-icon lh-report-icon--dark");return F.setAttribute("role","menuitem"),F.setAttribute("tabindex","-1"),F.setAttribute("href","#"),F.setAttribute("data-i18n","dropdownDarkTheme"),F.setAttribute("data-action","toggle-dark"),x.append(" ",E," ",A," ",C," "," ",L," ",S," ",z," ",M," "," ",T," ",F," "),c.append(" ",d," ",_," ",x," "),n.append(" "," ",r," ",s," ",c," "),e.append(n),e}function He(o){let e=o.createFragment(),t=o.createElement("div","lh-warnings lh-warnings--toplevel"),n=o.createElement("p","lh-warnings__msg"),r=o.createElement("ul");return t.append(" ",n," ",r," "),e.append(t),e}function Y(o,e){switch(e){case"3pFilter":return ue(o);case"audit":return ge(o);case"categoryHeader":return me(o);case"chevron":return fe(o);case"clump":return be(o);case"crc":return ve(o);case"crcChain":return _e(o);case"elementScreenshot":return we(o);case"footer":return ye(o);case"fraction":return xe(o);case"gauge":return Ee(o);case"gaugePwa":return ke(o);case"heading":return Ae(o);case"metric":return Se(o);case"opportunity":return Ce(o);case"opportunityHeader":return ze(o);case"scorescale":return Le(o);case"scoresWrapper":return Me(o);case"snippet":return Te(o);case"snippetContent":return Fe(o);case"snippetHeader":return De(o);case"snippetLine":return Re(o);case"styles":return Ne(o);case"topbar":return Pe(o);case"warningsToplevel":return He(o)}throw new Error("unexpected component: "+e)}var I=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 r of t.split(/\s+/))r&&n.classList.add(r);return n}createElementNS(e,t,n){let r=this._document.createElementNS(e,t);if(n)for(let i of n.split(/\s+/))i&&r.classList.add(i);return r}createFragment(){return this._document.createDocumentFragment()}createTextNode(e){return this._document.createTextNode(e)}createChildOf(e,t,n){let r=this.createElement(t,n);return e.append(r),r}createComponent(e){let t=this._componentCache.get(e);if(t){let r=t.cloneNode(!0);return this.findAll("style",r).forEach(i=>i.remove()),r}return t=Y(this,e),this._componentCache.set(e,t),t.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(e,t={}){let n=this.createElement("span");for(let r of k.splitMarkdownLink(e)){let i=r.text.includes("`")?this.convertMarkdownCodeSnippets(r.text):r.text;if(!r.isLink){n.append(i);continue}let a=new URL(r.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:"],r;try{r=new URL(t)}catch{}r&&n.includes(r.protocol)&&(e.href=r.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 k.splitMarkdownCodeSpans(e))if(n.isCode){let r=this.createElement("code");r.textContent=n.text,t.append(r)}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){let n=t.querySelector(e);if(n===null)throw new Error(`query ${e} not found`);return n}findAll(e,t){return Array.from(t.querySelectorAll(e))}fireEventOn(e,t=this._document,n){let r=new CustomEvent(e,n?{detail:n}:void 0);t.dispatchEvent(r)}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 X=0,g=class o{static i18n=null;static strings={};static reportJson=null;static apply(e){o.strings={...ee,...e.providedStrings},o.i18n=e.i18n,o.reportJson=e.reportJson}static getUniqueSuffix(){return X++}static resetUniqueSuffix(){X=0}};var te="data:image/jpeg;base64,";function ne(o){o.configSettings.locale||(o.configSettings.locale="en"),o.configSettings.formFactor||(o.configSettings.formFactor=o.configSettings.emulatedFormFactor),o.finalDisplayedUrl=k.getFinalDisplayedUrl(o),o.mainDocumentUrl=k.getMainDocumentUrl(o);for(let n of Object.values(o.audits))if((n.scoreDisplayMode==="not_applicable"||n.scoreDisplayMode==="not-applicable")&&(n.scoreDisplayMode="notApplicable"),n.details){if((n.details.type===void 0||n.details.type==="diagnostic")&&(n.details.type="debugdata"),n.details.type==="filmstrip")for(let r of n.details.items)r.data.startsWith(te)||(r.data=te+r.data);if(n.details.type==="table")for(let r of n.details.headings){let{itemType:i,text:a}=r;i!==void 0&&(r.valueType=i,delete r.itemType),a!==void 0&&(r.label=a,delete r.text);let l=r.subItemsHeading?.itemType;r.subItemsHeading&&l!==void 0&&(r.subItemsHeading.valueType=l,delete r.subItemsHeading.itemType)}if(n.id==="third-party-summary"&&(n.details.type==="opportunity"||n.details.type==="table")){let{headings:r,items:i}=n.details;if(r[0].valueType==="link"){r[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]=o.lighthouseVersion.split(".").map(Number),t=o.categories.performance;if(e<9&&t){o.categoryGroups||(o.categoryGroups={}),o.categoryGroups.hidden={title:""};for(let n of t.auditRefs)n.group?["load-opportunities","diagnostics"].includes(n.group)&&delete n.group:n.group="hidden"}if(o.environment||(o.environment={benchmarkIndex:0,networkUserAgent:o.userAgent,hostUserAgent:o.userAgent}),o.configSettings.screenEmulation||(o.configSettings.screenEmulation={width:-1,height:-1,deviceScaleFactor:-1,mobile:/mobile/i.test(o.environment.hostUserAgent),disabled:!1}),o.i18n||(o.i18n={}),o.audits["full-page-screenshot"]){let n=o.audits["full-page-screenshot"].details;n?o.fullPageScreenshot={screenshot:n.screenshot,nodes:n.nodes}:o.fullPageScreenshot=null,delete o.audits["full-page-screenshot"]}}var R=k.RATINGS,y=class o{static prepareReportResult(e){let t=JSON.parse(JSON.stringify(e));ne(t);for(let r of Object.values(t.audits))r.details&&(r.details.type==="opportunity"||r.details.type==="table")&&!r.details.isEntityGrouped&&t.entities&&o.classifyEntities(t.entities,r.details);if(typeof t.categories!="object")throw new Error("No categories provided.");let n=new Map;for(let r of Object.values(t.categories))r.auditRefs.forEach(i=>{i.relevantAudits&&i.relevantAudits.forEach(a=>{let l=n.get(a)||[];l.push(i),n.set(a,l)})}),r.auditRefs.forEach(i=>{let a=t.audits[i.id];i.result=a,n.has(i.id)&&(i.relevantMetrics=n.get(i.id)),t.stackPacks&&t.stackPacks.forEach(l=>{l.descriptions[i.id]&&(i.stackPacks=i.stackPacks||[],i.stackPacks.push({title:l.title,iconDataURL:l.iconDataURL,description:l.descriptions[i.id]}))})});return t}static getUrlLocatorFn(e){let t=e.find(r=>r.valueType==="url")?.key;if(t&&typeof t=="string")return r=>{let i=r[t];if(typeof i=="string")return i};let n=e.find(r=>r.valueType==="source-location")?.key;if(n)return r=>{let i=r[n];if(typeof i=="object"&&i.type==="source-location")return i.url}}static classifyEntities(e,t){let{items:n,headings:r}=t;if(!n.length||n.some(a=>a.entity))return;let i=o.getUrlLocatorFn(r);if(i)for(let a of n){let l=i(a);if(!l)continue;let s="";try{s=k.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 r of e){let i=t[r],a=n[r];if((typeof i!=typeof a||!["number","string"].includes(typeof i))&&console.warn(`Warning: Attempting to sort unsupported value type: ${r}.`),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,r,i=e.throttling,a=g.i18n,l=g.strings;switch(e.throttlingMethod){case"provided":r=n=t=l.throttlingProvided;break;case"devtools":{let{cpuSlowdownMultiplier:h,requestLatencyMs:u}=i;t=`${a.formatNumber(h)}x slowdown (DevTools)`,n=`${a.formatMilliseconds(u)} HTTP RTT, ${a.formatKbps(i.downloadThroughputKbps)} down, ${a.formatKbps(i.uploadThroughputKbps)} up (DevTools)`,r=(()=>u===150*3.75&&i.downloadThroughputKbps===1.6*1024*.9&&i.uploadThroughputKbps===750*.9)()?l.runtimeSlow4g:l.runtimeCustom;break}case"simulate":{let{cpuSlowdownMultiplier:h,rttMs:u,throughputKbps:f}=i;t=`${a.formatNumber(h)}x slowdown (Simulated)`,n=`${a.formatMilliseconds(u)} TCP RTT, ${a.formatKbps(f)} throughput (Simulated)`,r=(()=>u===150&&f===1.6*1024)()?l.runtimeSlow4g:l.runtimeCustom;break}default:r=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 p=s?void 0:`${e.screenEmulation.width}x${e.screenEmulation.height}, DPR ${e.screenEmulation.deviceScaleFactor}`;return{deviceEmulation:d,screenEmulation:p,cpuThrottling:t,networkThrottling:n,summary:r}}static showAsPassed(e){switch(e.scoreDisplayMode){case"manual":case"notApplicable":return!0;case"error":case"informative":return!1;case"numeric":case"binary":default:return Number(e.score)>=R.PASS.minScore}}static calculateRating(e,t){if(t==="manual"||t==="notApplicable")return R.PASS.label;if(t==="error")return R.ERROR.label;if(e===null)return R.FAIL.label;let n=R.FAIL.label;return e>=R.PASS.minScore?n=R.PASS.label:e>=R.AVERAGE.minScore&&(n=R.AVERAGE.label),n}static calculateCategoryFraction(e){let t=0,n=0,r=0,i=0;for(let a of e.auditRefs){let l=o.showAsPassed(a.result);if(!(a.group==="hidden"||a.result.scoreDisplayMode==="manual"||a.result.scoreDisplayMode==="notApplicable")){if(a.result.scoreDisplayMode==="informative"){l||++r;continue}++t,i+=a.weight,l&&n++}}return{numPassed:n,numPassableAudits:t,numInformative:r,totalWeight:i}}static isPluginCategory(e){return e.startsWith("lighthouse-plugin-")}static shouldDisplayAsFraction(e){return e==="timespan"||e==="snapshot"}},ee={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 load",runtimeAnalysisWindow:"Initial page load",runtimeSingleLoadTooltip:"This data is taken from a single page load, 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"};var N=class{constructor(e,t){this.dom=e,this.detailsRenderer=t}get _clumpTitles(){return{warning:g.strings.warningAuditsGroupTitle,manual:g.strings.manualAuditsGroupTitle,passed:g.strings.passedAuditsGroupTitle,notApplicable:g.strings.notApplicableAuditsGroupTitle}}renderAudit(e){let t=this.dom.createComponent("audit");return this.populateAuditValues(e,t)}populateAuditValues(e,t){let n=g.strings,r=this.dom.find(".lh-audit",t);r.id=e.result.id;let i=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",r).textContent=e.result.displayValue);let a=this.dom.find(".lh-audit__title",r);a.append(this.dom.convertMarkdownCodeSnippets(e.result.title));let l=this.dom.find(".lh-audit__description",r);l.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(let h of e.relevantMetrics||[]){let u=this.dom.createChildOf(l,"span","lh-audit__adorn");u.title=`Relevant to ${h.result.title}`,u.textContent=h.acronym||h.id}e.stackPacks&&e.stackPacks.forEach(h=>{let u=this.dom.createElement("img","lh-audit__stackpack__img");u.src=h.iconDataURL,u.alt=h.title;let f=this.dom.convertMarkdownLinkSnippets(h.description,{alwaysAppendUtmSource:!0}),b=this.dom.createElement("div","lh-audit__stackpack");b.append(u,f),this.dom.find(".lh-audit__stackpacks",r).append(b)});let s=this.dom.find("details",r);if(e.result.details){let h=this.detailsRenderer.render(e.result.details);h&&(h.classList.add("lh-details"),s.append(h))}if(this.dom.find(".lh-chevron-container",r).append(this._createChevron()),this._setRatingClass(r,e.result.score,i),e.result.scoreDisplayMode==="error"){r.classList.add("lh-audit--error");let h=this.dom.find(".lh-audit__display-text",r);h.textContent=n.errorLabel,h.classList.add("lh-tooltip-boundary");let u=this.dom.createChildOf(h,"div","lh-tooltip lh-tooltip--error");u.textContent=e.result.errorMessage||n.errorMissingAuditInfo}else if(e.result.explanation){let h=this.dom.createChildOf(a,"div","lh-audit-explanation");h.textContent=e.result.explanation}let c=e.result.warnings;if(!c||c.length===0)return r;let d=this.dom.find("summary",s),p=this.dom.createChildOf(d,"div","lh-warnings");if(this.dom.createChildOf(p,"span").textContent=n.warningHeader,c.length===1)p.append(this.dom.createTextNode(c.join("")));else{let h=this.dom.createChildOf(p,"ul");for(let u of c){let f=this.dom.createChildOf(h,"li");f.textContent=u}}return r}injectFinalScreenshot(e,t,n){let r=t["final-screenshot"];if(!r||r.scoreDisplayMode==="error"||!r.details||r.details.type!=="screenshot")return null;let i=this.dom.createElement("img","lh-final-ss-image"),a=r.details.data;i.src=a,i.alt=r.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 r=y.calculateRating(t,n);return e.classList.add(`lh-audit--${n.toLowerCase()}`),n!=="informative"&&e.classList.add(`lh-audit--${r}`),e}renderCategoryHeader(e,t,n){let r=this.dom.createComponent("categoryHeader"),i=this.dom.find(".lh-score__gauge",r),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",r).append(l)}return r}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 r=null;return e.description&&(r=this.dom.convertMarkdownLinkSnippets(e.description),r.classList.add("lh-audit-group__description","lh-audit-group__footer"),t.append(r)),[t,r]}_renderGroupedAudits(e,t){let n=new Map,r="NotAGroup";n.set(r,[]);for(let a of e){let l=a.group||r;if(l==="hidden")continue;let s=n.get(l)||[];s.push(a),n.set(l,s)}let i=[];for(let[a,l]of n){if(a===r){for(let p of l)i.push(this.renderAudit(p));continue}let s=t[a],[c,d]=this.renderAuditGroup(s);for(let p of l)c.insertBefore(this.renderAudit(p),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,{auditRefs:t,description:n,openByDefault:r}){let i=this.dom.createComponent("clump"),a=this.dom.find(".lh-clump",i);r&&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(this.renderAudit.bind(this));a.append(...d);let p=this.dom.find(".lh-audit-group",i);if(n){let h=this.dom.convertMarkdownLinkSnippets(n);h.classList.add("lh-audit-group__description","lh-audit-group__footer"),p.append(h)}return this.dom.find(".lh-clump-toggletext--show",p).textContent=g.strings.show,this.dom.find(".lh-clump-toggletext--hide",p).textContent=g.strings.hide,a.classList.add(`lh-clump--${e.toLowerCase()}`),p}renderCategoryScore(e,t,n){let r;if(n&&y.shouldDisplayAsFraction(n.gatherMode)?r=this.renderCategoryFraction(e):r=this.renderScoreGauge(e,t),n?.omitLabel&&this.dom.find(".lh-gauge__label,.lh-fraction__label",r).remove(),n?.onPageAnchorRendered){let i=this.dom.find("a",r);n.onPageAnchorRendered(i)}return r}renderScoreGauge(e,t){let n=this.dom.createComponent("gauge"),r=this.dom.find("a.lh-gauge__wrapper",n);y.isPluginCategory(e.id)&&r.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=g.strings.errorLabel),e.auditRefs.length===0||this.hasApplicableAudits(e)?r.classList.add(`lh-gauge__wrapper--${y.calculateRating(e.score)}`):(r.classList.add("lh-gauge__wrapper--not-applicable"),c.textContent="-",c.title=g.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:r,numPassableAudits:i,totalWeight:a}=y.calculateCategoryFraction(e),l=r/i,s=this.dom.find(".lh-fraction__content",t),c=this.dom.createElement("span");c.textContent=`${r}/${i}`,s.append(c);let d=y.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")),r=Number(e.getAttribute("stroke-width")),i=.25*r/n;e.style.transform=`rotate(${-90+i*360}deg)`;let a=t*n-r/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:y.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,t={},n){let r=this.dom.createElement("div","lh-category");r.id=e.id,r.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){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 h=this.renderUnexpandableClump(s,t);h.classList.add("lh-clump--failed"),r.append(h);continue}let c=l==="manual"?e.manualDescription:void 0,d=l==="warning"||l==="manual"&&a===0,p=this.renderClump(l,{auditRefs:s,description:c,openByDefault:d});r.append(p)}return r}};var O=class{static initTree(e){let t=0,n=Object.keys(e);return n.length>0&&(t=e[n[0]].request.startTime),{tree:e,startTime:t,transferSize:0}}static createSegment(e,t,n,r,i,a){let l=e[t],s=Object.keys(e),c=s.indexOf(t)===s.length-1,d=!!l.children&&Object.keys(l.children).length>0,p=Array.isArray(i)?i.slice(0):[];return typeof a<"u"&&p.push(!a),{node:l,isLastChild:c,hasChildren:d,startTime:n,transferSize:r+l.request.transferSize,treeMarkers:p}}static createChainNode(e,t,n){let r=e.createComponent("crcChain");e.find(".lh-crc-node",r).setAttribute("title",t.node.request.url);let i=e.find(".lh-crc-node__tree-marker",r);t.treeMarkers.forEach(p=>{let h=p?"lh-tree-marker lh-vert":"lh-tree-marker";i.append(e.createElement("span",h),e.createElement("span","lh-tree-marker"))});let a=t.isLastChild?"lh-tree-marker lh-up-right":"lh-tree-marker lh-vert-right",l=t.hasChildren?"lh-tree-marker lh-horiz-down":"lh-tree-marker lh-right";i.append(e.createElement("span",a),e.createElement("span","lh-tree-marker lh-right"),e.createElement("span",l));let s=t.node.request.url,c=n.renderTextURL(s),d=e.find(".lh-crc-node__tree-value",r);if(d.append(c),!t.hasChildren){let{startTime:p,endTime:h,transferSize:u}=t.node.request,f=e.createElement("span","lh-crc-node__chain-duration");f.textContent=" - "+g.i18n.formatMilliseconds((h-p)*1e3)+", ";let b=e.createElement("span","lh-crc-node__chain-duration");b.textContent=g.i18n.formatBytesToKiB(u,.01),d.append(f,b)}return r}static buildTree(e,t,n,r,i,a){if(r.append(H.createChainNode(e,n,a)),n.node.children)for(let l of Object.keys(n.node.children)){let s=H.createSegment(n.node.children,l,n.startTime,n.transferSize,n.treeMarkers,n.isLastChild);H.buildTree(e,t,s,r,i,a)}}static render(e,t,n){let r=e.createComponent("crc"),i=e.find(".lh-crc",r);e.find(".lh-crc-initial-nav",r).textContent=g.strings.crcInitialNavigation,e.find(".lh-crc__longest_duration_label",r).textContent=g.strings.crcLongestDurationLabel,e.find(".lh-crc__longest_duration",r).textContent=g.i18n.formatMilliseconds(t.longestChain.duration);let a=H.initTree(t.chains);for(let l of Object.keys(a.tree)){let s=H.createSegment(a.tree,l,a.startTime,a.transferSize);H.buildTree(e,r,s,i,t,n)}return e.find(".lh-crc-container",r)}},H=O;function Ue(o,e){return e.left<=o.width&&0<=e.right&&e.top<=o.height&&0<=e.bottom}function re(o,e,t){return o<e?e:o>t?t:o}function Ie(o){return{x:o.left+o.width/2,y:o.top+o.height/2}}var P=class o{static getScreenshotPositions(e,t,n){let r=Ie(e),i=re(r.x-t.width/2,0,n.width-t.width),a=re(r.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,r,i){let a=e.find("clipPath",t),l=`clip-${g.getUniqueSuffix()}`;a.id=l,t.style.clipPath=`url(#${l})`;let s=n.top/i.height,c=s+r.height/i.height,d=n.left/i.width,p=d+r.width/i.width,h=[`0,0 1,0 1,${s} 0,${s}`,`0,${c} 1,${c} 1,1 0,1`,`0,${s} ${d},${s} ${d},${c} 0,${c}`,`${p},${s} 1,${s} 1,${c} ${p},${c}`];for(let u of h){let f=e.createElementNS("http://www.w3.org/2000/svg","polygon");f.setAttribute("points",u),a.append(f)}}static installFullPageScreenshot(e,t){e.style.setProperty("--element-screenshot-url",`url('${t.data}')`)}static installOverlayFeature(e){let{dom:t,rootEl:n,overlayContainerEl:r,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");r.append(d);let p={width:d.clientWidth*.95,height:d.clientHeight*.8},h={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)},u=o.render(t,i.screenshot,h,p);if(!u){d.remove();return}d.append(u),d.addEventListener("click",()=>d.remove())}))}static _computeZoomFactor(e,t){let r={x:t.width/e.width,y:t.height/e.height},i=.75*Math.min(r.x,r.y);return Math.min(1,i)}static render(e,t,n,r){if(!Ue(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,r),s={width:r.width/l,height:r.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=o.getScreenshotPositions(n,s,{width:t.width,height:t.height}),p=e.find("div.lh-element-screenshot__image",a);p.style.width=c.width+"px",p.style.height=c.height+"px",p.style.backgroundPositionY=-(d.screenshot.top*l)+"px",p.style.backgroundPositionX=-(d.screenshot.left*l)+"px",p.style.backgroundSize=`${t.width*l}px ${t.height*l}px`;let h=e.find("div.lh-element-screenshot__element-marker",a);h.style.width=n.width*l+"px",h.style.height=n.height*l+"px",h.style.left=d.clip.left*l+"px",h.style.top=d.clip.top*l+"px";let u=e.find("div.lh-element-screenshot__mask",a);return u.style.width=c.width+"px",u.style.height=c.height+"px",o.renderClipPathInScreenshot(e,u,d.clip,n,s),a}};var Oe=["http://","https://","data:"],Ve=["bytes","numeric","ms","timespanMs"],V=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"table":case"opportunity":return this._renderTable(e);case"criticalrequestchain":return O.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=g.i18n.formatBytesToKiB(e.value,e.granularity||.1),n=this._renderText(t);return n.title=g.i18n.formatBytes(e.value),n}_renderMilliseconds(e){let t;return e.displayUnit==="duration"?t=g.i18n.formatDuration(e.value):t=g.i18n.formatMilliseconds(e.value,e.granularity||10),this._renderText(t)}renderTextURL(e){let t=e,n,r,i;try{let l=k.parseURL(t);n=l.file==="/"?l.origin:l.file,r=l.file==="/"||l.hostname===""?"":`(${l.hostname})`,i=t}catch{n=t}let a=this._dom.createElement("div","lh-text__url");if(a.append(this._renderLink({text:n,url:t})),r){let l=this._renderText(r);l.classList.add("lh-text__url-host"),a.append(l)}return i&&(a.title=t,a.dataset.url=t),a}_renderLink(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}_renderNumeric(e){let t=g.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"source-location":return this.renderSourceLocation(e);case"url":return this.renderTextURL(e.value);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 Oe.some(r=>n.startsWith(r))?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 r of t){if(!r||!r.key){this._dom.createChildOf(n,"td","lh-table-column--empty");continue}let i=e[r.key],a;if(i!=null&&(a=this._renderTableValue(i,r)),a){let l=`lh-table-column--${r.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 r=t.map(this._getDerivedSubItemsHeading);if(!r.some(Boolean))return n;for(let i of e.subItems.items){let a=this._renderTableRow(i,r);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 r=this._dom.find("td",e);if(n.category){let i=this._dom.createElement("span");i.classList.add("lh-audit__adorn"),i.textContent=n.category,r.append(" ",i)}if(n.isFirstParty){let i=this._dom.createElement("span");i.classList.add("lh-audit__adorn","lh-audit__adorn1p"),i.textContent=g.strings.firstPartyChipLabel,r.append(" ",i)}if(n.homepage){let i=this._dom.createElement("a");i.href=n.homepage,i.target="_blank",i.title=g.strings.openInANewTabTooltip,i.classList.add("lh-report-icon--external"),r.append(" ",i)}}_renderEntityGroupRow(e,t){let n={...t[0]};n.valueType="text";let r=[n,...t.slice(1)],i=this._dom.createFragment();return i.append(this._renderTableRow(e,r)),this._dom.find("tr",i).classList.add("lh-row--group"),i}_getEntityGroupItems(e){let{items:t,headings:n,sortedBy:r}=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)||Ve.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 p=typeof d.entity=="string"?d.entity:void 0,h=s.get(p)||{[l]:p||g.strings.unattributable,entity:p};for(let u of a)h[u]=Number(h[u]||0)+Number(d[u]||0);s.set(p,h)}let c=[...s.values()];return r&&c.sort(y.getTableItemSortComparator(r)),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"),r=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(r,"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 p of e.items.filter(h=>h.entity===s))c.append(this._renderTableRowsFromItem(p,e.headings));let d=this._dom.findAll("tr",c);s&&d.length&&(d.forEach(p=>p.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),p=d[0];if(typeof s.entity=="string"&&(p.dataset.entity=s.entity),e.isEntityGrouped&&s.entity)p.classList.add("lh-row--group"),this._adornEntityGroupRow(p);else for(let h of d)h.classList.add(l?"lh-row--even":"lh-row--odd");l=!l,a.append(c)}}return t}_renderList(e){let t=this._dom.createElement("div","lh-list");return e.items.forEach(n=>{let r=this.render(n);r&&t.append(r)}),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 r={width:147,height:100},i=P.render(this._dom,this._fullPageScreenshot.screenshot,n,r);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 r;if(e.urlProvider==="network"&&n)r=this._renderLink({url:e.url,text:n}),r.title=`maps to generated location ${t}`;else if(e.urlProvider==="network"&&!n)r=this.renderTextURL(e.url),this._dom.find(".lh-link",r).textContent+=`:${e.line+1}:${e.column}`;else if(e.urlProvider==="comment"&&n)r=this._renderText(`${n} (from source map)`),r.title=`${t} (from sourceURL)`;else if(e.urlProvider==="comment"&&!n)r=this._renderText(`${t} (from sourceURL)`);else return null;return r.classList.add("lh-source-location"),r.setAttribute("data-source-url",e.url),r.setAttribute("data-source-line",String(e.line)),r.setAttribute("data-source-column",String(e.column)),r}_renderFilmstrip(e){let t=this._dom.createElement("div","lh-filmstrip");for(let n of e.items){let r=this._dom.createChildOf(t,"div","lh-filmstrip__frame"),i=this._dom.createChildOf(r,"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 J="\xA0";var G=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 r,i=[n.minimumFractionDigits,n.maximumFractionDigits,n.style,n.unit,n.unitDisplay,this._locale].join("");return r=this._cachedNumberFormatters.get(i),r||(r=new Intl.NumberFormat(this._locale,n),this._cachedNumberFormatters.set(i,r)),r.format(e).replace(" ",J)}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)+`${J}KiB`}formatBytesToMiB(e,t=void 0){return this._formatNumberWithGranularity(e/1048576,t)+`${J}MiB`}formatBytes(e,t=1){return this._formatNumberWithGranularity(e,t,{style:"unit",unit:"byte",unitDisplay:"long"})}formatBytesWithBestUnit(e,t=void 0){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=[],r={day:60*60*24,hour:60*60,minute:60,second:1};return Object.keys(r).forEach(i=>{let a=r[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(" ")}};var W=class extends N{_renderMetric(e){let t=this.dom.createComponent("metric"),n=this.dom.find(".lh-metric",t);n.id=e.result.id;let r=y.calculateRating(e.result.score,e.result.scoreDisplayMode);n.classList.add(`lh-metric--${r}`);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}_renderOpportunity(e,t){let n=this.dom.createComponent("opportunity"),r=this.populateAuditValues(e,n);if(r.id=e.result.id,!e.result.details||e.result.scoreDisplayMode==="error")return r;let i=e.result.details;if(i.overallSavingsMs===void 0)return r;let a=this.dom.find("span.lh-audit__display-text, div.lh-audit__display-text",r),l=`${i.overallSavingsMs/t*100}%`;if(this.dom.find("div.lh-sparkline__bar",r).style.width=l,a.textContent=g.i18n.formatSeconds(i.overallSavingsMs,.01),e.result.displayValue){let s=e.result.displayValue;this.dom.find("div.lh-load-opportunity__sparkline",r).title=s,a.title=s}return r}_getWastedMs(e){if(e.result.details){let t=e.result.details;if(typeof t.overallSavingsMs!="number")throw new Error("non-opportunity details passed to _getWastedMs");return t.overallSavingsMs}else return Number.MIN_VALUE}_getScoringCalculatorHref(e){let t=e.filter(p=>p.group==="metrics"),n=e.find(p=>p.id==="interactive"),r=e.find(p=>p.id==="first-cpu-idle"),i=e.find(p=>p.id==="first-meaningful-paint");n&&t.push(n),r&&t.push(r),i&&t.push(i);let a=p=>Math.round(p*100)/100,s=[...t.map(p=>{let h;return typeof p.result.numericValue=="number"?(h=p.id==="cumulative-layout-shift"?a(p.result.numericValue):Math.round(p.result.numericValue),h=h.toString()):h="null",[p.acronym||p.id,h]})];g.reportJson&&(s.push(["device",g.reportJson.configSettings.formFactor]),s.push(["version",g.reportJson.lighthouseVersion]));let c=new URLSearchParams(s),d=new URL("https://googlechrome.github.io/lighthouse/scorecalc/");return d.hash=c.toString(),d.href}_classifyPerformanceAudit(e){return e.group?null:e.result.details?.overallSavingsMs!==void 0?"load-opportunity":"diagnostic"}render(e,t,n){let r=g.strings,i=this.dom.createElement("div","lh-category");i.id=e.id,i.append(this.renderCategoryHeader(e,t,n));let a=e.auditRefs.filter(m=>m.group==="metrics");if(a.length){let[m,w]=this.renderAuditGroup(t.metrics),v=this.dom.createElement("input","lh-metrics-toggle__input"),x=`lh-metrics-toggle${g.getUniqueSuffix()}`;v.setAttribute("aria-label","Toggle the display of metric descriptions"),v.type="checkbox",v.id=x,m.prepend(v);let E=this.dom.find(".lh-audit-group__header",m),A=this.dom.createChildOf(E,"label","lh-metrics-toggle__label");A.htmlFor=x;let C=this.dom.createChildOf(A,"span","lh-metrics-toggle__labeltext--show"),L=this.dom.createChildOf(A,"span","lh-metrics-toggle__labeltext--hide");C.textContent=g.strings.expandView,L.textContent=g.strings.collapseView;let S=this.dom.createElement("div","lh-metrics-container");if(m.insertBefore(S,w),a.forEach(z=>{S.append(this._renderMetric(z))}),i.querySelector(".lh-gauge__wrapper")){let z=this.dom.find(".lh-category-header__description",i),M=this.dom.createChildOf(z,"div","lh-metrics__disclaimer"),T=this.dom.convertMarkdownLinkSnippets(r.varianceDisclaimer);M.append(T);let F=this.dom.createChildOf(M,"a","lh-calclink");F.target="_blank",F.textContent=r.calculatorLink,this.dom.safelySetHref(F,this._getScoringCalculatorHref(e.auditRefs))}m.classList.add("lh-audit-group--metrics"),i.append(m)}let l=this.dom.createChildOf(i,"div","lh-filmstrip-container"),c=e.auditRefs.find(m=>m.id==="screenshot-thumbnails")?.result;if(c?.details){l.id=c.id;let m=this.detailsRenderer.render(c.details);m&&l.append(m)}let d=e.auditRefs.filter(m=>this._classifyPerformanceAudit(m)==="load-opportunity").filter(m=>!y.showAsPassed(m.result)).sort((m,w)=>this._getWastedMs(w)-this._getWastedMs(m)),p=a.filter(m=>!!m.relevantAudits);if(p.length&&this.renderMetricAuditFilter(p,i),d.length){let w=d.map(S=>this._getWastedMs(S)),v=Math.max(...w),x=Math.max(Math.ceil(v/1e3)*1e3,2e3),[E,A]=this.renderAuditGroup(t["load-opportunities"]),C=this.dom.createComponent("opportunityHeader");this.dom.find(".lh-load-opportunity__col--one",C).textContent=r.opportunityResourceColumnLabel,this.dom.find(".lh-load-opportunity__col--two",C).textContent=r.opportunitySavingsColumnLabel;let L=this.dom.find(".lh-load-opportunity__header",C);E.insertBefore(L,A),d.forEach(S=>E.insertBefore(this._renderOpportunity(S,x),A)),E.classList.add("lh-audit-group--load-opportunities"),i.append(E)}let h=e.auditRefs.filter(m=>this._classifyPerformanceAudit(m)==="diagnostic").filter(m=>!y.showAsPassed(m.result)).sort((m,w)=>{let v=m.result.scoreDisplayMode==="informative"?100:Number(m.result.score),x=w.result.scoreDisplayMode==="informative"?100:Number(w.result.score);return v-x});if(h.length){let[m,w]=this.renderAuditGroup(t.diagnostics);h.forEach(v=>m.insertBefore(this.renderAudit(v),w)),m.classList.add("lh-audit-group--diagnostics"),i.append(m)}let u=e.auditRefs.filter(m=>this._classifyPerformanceAudit(m)&&y.showAsPassed(m.result));if(!u.length)return i;let f={auditRefs:u,groupDefinitions:t},b=this.renderClump("passed",f);i.append(b);let _=[];if(["performance-budget","timing-budget"].forEach(m=>{let w=e.auditRefs.find(v=>v.id===m);if(w?.result.details){let v=this.detailsRenderer.render(w.result.details);v&&(v.id=m,v.classList.add("lh-details","lh-details--budget","lh-audit"),_.push(v))}}),_.length>0){let[m,w]=this.renderAuditGroup(t.budgets);_.forEach(v=>m.insertBefore(v,w)),m.classList.add("lh-audit-group--budgets"),i.append(m)}return i}renderMetricAuditFilter(e,t){let n=this.dom.createElement("div","lh-metricfilter"),r=this.dom.createChildOf(n,"span","lh-metricfilter__text");r.textContent=g.strings.showRelevantAudits;let i=[{acronym:"All"},...e],a=g.getUniqueSuffix();for(let l of i){let s=`metric-${l.acronym}-${a}`,c=this.dom.createChildOf(n,"input","lh-metricfilter__radio");c.type="radio",c.name=`metricsfilter-${a}`,c.id=s;let d=this.dom.createChildOf(n,"label","lh-metricfilter__label");d.htmlFor=s,d.title=l.result?.title,d.textContent=l.acronym||l.id,l.acronym==="All"&&(c.checked=!0,d.classList.add("lh-metricfilter__label--active")),t.append(n),c.addEventListener("input",p=>{for(let u of t.querySelectorAll("label.lh-metricfilter__label"))u.classList.toggle("lh-metricfilter__label--active",u.htmlFor===s);t.classList.toggle("lh-category--filtered",l.acronym!=="All");for(let u of t.querySelectorAll("div.lh-audit")){if(l.acronym==="All"){u.hidden=!1;continue}u.hidden=!0,l.relevantAudits&&l.relevantAudits.includes(u.id)&&(u.hidden=!1)}let h=t.querySelectorAll("div.lh-audit-group, details.lh-audit-group");for(let u of h){u.hidden=!1;let f=Array.from(u.querySelectorAll("div.lh-audit")),b=!!f.length&&f.every(_=>_.hidden);u.hidden=b}})}}};var j=class o extends N{render(e,t={}){let n=this.dom.createElement("div","lh-category");n.id=e.id,n.append(this.renderCategoryHeader(e,t));let r=e.auditRefs,i=r.filter(c=>c.result.scoreDisplayMode!=="manual"),a=this._renderAudits(i,t);n.append(a);let l=r.filter(c=>c.result.scoreDisplayMode==="manual"),s=this.renderClump("manual",{auditRefs:l,description:e.manualDescription,openByDefault:!0});return n.append(s),n}renderCategoryScore(e,t){if(e.score===null)return super.renderScoreGauge(e,t);let n=this.dom.createComponent("gaugePwa"),r=this.dom.find("a.lh-gauge--pwa__wrapper",n),i=n.querySelector("svg");if(!i)throw new Error("no SVG element found in PWA score gauge template");o._makeSvgReferencesUnique(i);let a=this._getGroupIds(e.auditRefs),l=this._getPassingGroupIds(e.auditRefs);if(l.size===a.size)r.classList.add("lh-badged--all");else for(let s of l)r.classList.add(`lh-badged--${s}`);return this.dom.find(".lh-gauge__label",n).textContent=e.title,r.title=this._getGaugeTooltip(e.auditRefs,t),n}_getGroupIds(e){let t=e.map(n=>n.group).filter(n=>!!n);return new Set(t)}_getPassingGroupIds(e){let t=this._getGroupIds(e);for(let n of e)!y.showAsPassed(n.result)&&n.group&&t.delete(n.group);return t}_getGaugeTooltip(e,t){let n=this._getGroupIds(e),r=[];for(let i of n){let a=e.filter(d=>d.group===i),l=a.length,s=a.filter(d=>y.showAsPassed(d.result)).length,c=t[i].title;r.push(`${c}: ${s}/${l}`)}return r.join(", ")}_renderAudits(e,t){let n=this.renderUnexpandableClump(e,t),r=this._getPassingGroupIds(e);for(let i of r)this.dom.find(`.lh-audit-group--${i}`,n).classList.add("lh-badged");return n}static _makeSvgReferencesUnique(e){let t=e.querySelector("defs");if(!t)return;let n=g.getUniqueSuffix(),r=t.querySelectorAll("[id]");for(let i of r){let a=i.id,l=`${a}-${n}`;i.id=l;let s=e.querySelectorAll(`use[href="#${a}"]`);for(let d of s)d.setAttribute("href",`#${l}`);let c=e.querySelectorAll(`[fill="url(#${a})"]`);for(let d of c)d.setAttribute("fill",`url(#${l})`)}}};var $=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 r=y.prepareReportResult(e);return this._dom.rootEl.textContent="",this._dom.rootEl.append(this._renderReport(r)),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=g.strings.footerIssue,this._dom.find(".lh-footer__version",t).textContent=e.lighthouseVersion,t}_renderMetaBlock(e,t){let n=y.getEmulationDescriptions(e.configSettings||{}),r=e.userAgent.match(/(\w*Chrome\/[\d.]+)/),i=Array.isArray(r)?r[1].replace("/"," ").replace("Chrome","Chromium"):"Chromium",a=e.configSettings.channel,l=e.environment.benchmarkIndex.toFixed(0),s=e.environment.credits?.["axe-core"],c=[`${g.strings.runtimeSettingsBenchmark}: ${l}`,`${g.strings.runtimeSettingsCPUThrottling}: ${n.cpuThrottling}`];n.screenEmulation&&c.push(`${g.strings.runtimeSettingsScreenEmulation}: ${n.screenEmulation}`),s&&c.push(`${g.strings.runtimeSettingsAxeVersion}: ${s}`);let d=[["date",`Captured at ${g.i18n.formatDateTime(e.fetchTime)}`],["devices",`${n.deviceEmulation} with Lighthouse ${e.lighthouseVersion}`,c.join(`
|
|
2481
|
+
`),e.append(t);let n=o.createElement("div","lh-topbar"),r=o.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");r.setAttribute("role","img"),r.setAttribute("title","Lighthouse logo"),r.setAttribute("fill","none"),r.setAttribute("xmlns","http://www.w3.org/2000/svg"),r.setAttribute("viewBox","0 0 48 48");let i=o.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=o.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=o.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("fill","#FF3"),l.setAttribute("d","M20.5 10h7v7h-7z"),r.append(" ",i," ",a," ",l," ");let s=o.createElement("a","lh-topbar__url");s.setAttribute("href",""),s.setAttribute("target","_blank"),s.setAttribute("rel","noopener");let c=o.createElement("div","lh-tools"),d=o.createElement("div","lh-tools-locale lh-hidden"),p=o.createElement("button","lh-button lh-tool-locale__button");p.setAttribute("id","lh-button__swap-locales"),p.setAttribute("title","Show Language Picker"),p.setAttribute("aria-label","Toggle language picker"),p.setAttribute("aria-haspopup","menu"),p.setAttribute("aria-expanded","false"),p.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");let h=o.createElementNS("http://www.w3.org/2000/svg","svg");h.setAttribute("width","20px"),h.setAttribute("height","20px"),h.setAttribute("viewBox","0 0 24 24"),h.setAttribute("fill","currentColor");let u=o.createElementNS("http://www.w3.org/2000/svg","path");u.setAttribute("d","M0 0h24v24H0V0z"),u.setAttribute("fill","none");let f=o.createElementNS("http://www.w3.org/2000/svg","path");f.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"),h.append(u,f),p.append(" ",h," ");let b=o.createElement("div","lh-tools-locale__selector-wrapper");b.setAttribute("id","lh-tools-locale__selector-wrapper"),b.setAttribute("role","menu"),b.setAttribute("aria-labelledby","lh-button__swap-locales"),b.setAttribute("aria-hidden","true"),b.append(" "," "),d.append(" ",p," ",b," ");let _=o.createElement("button","lh-tools__button");_.setAttribute("id","lh-tools-button"),_.setAttribute("title","Tools menu"),_.setAttribute("aria-label","Toggle report tools menu"),_.setAttribute("aria-haspopup","menu"),_.setAttribute("aria-expanded","false"),_.setAttribute("aria-controls","lh-tools-dropdown");let m=o.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("width","100%"),m.setAttribute("height","100%"),m.setAttribute("viewBox","0 0 24 24");let w=o.createElementNS("http://www.w3.org/2000/svg","path");w.setAttribute("d","M0 0h24v24H0z"),w.setAttribute("fill","none");let v=o.createElementNS("http://www.w3.org/2000/svg","path");v.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"),m.append(" ",w," ",v," "),_.append(" ",m," ");let x=o.createElement("div","lh-tools__dropdown");x.setAttribute("id","lh-tools-dropdown"),x.setAttribute("role","menu"),x.setAttribute("aria-labelledby","lh-tools-button");let E=o.createElement("a","lh-report-icon lh-report-icon--print");E.setAttribute("role","menuitem"),E.setAttribute("tabindex","-1"),E.setAttribute("href","#"),E.setAttribute("data-i18n","dropdownPrintSummary"),E.setAttribute("data-action","print-summary");let A=o.createElement("a","lh-report-icon lh-report-icon--print");A.setAttribute("role","menuitem"),A.setAttribute("tabindex","-1"),A.setAttribute("href","#"),A.setAttribute("data-i18n","dropdownPrintExpanded"),A.setAttribute("data-action","print-expanded");let C=o.createElement("a","lh-report-icon lh-report-icon--copy");C.setAttribute("role","menuitem"),C.setAttribute("tabindex","-1"),C.setAttribute("href","#"),C.setAttribute("data-i18n","dropdownCopyJSON"),C.setAttribute("data-action","copy");let L=o.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");L.setAttribute("role","menuitem"),L.setAttribute("tabindex","-1"),L.setAttribute("href","#"),L.setAttribute("data-i18n","dropdownSaveHTML"),L.setAttribute("data-action","save-html");let S=o.createElement("a","lh-report-icon lh-report-icon--download");S.setAttribute("role","menuitem"),S.setAttribute("tabindex","-1"),S.setAttribute("href","#"),S.setAttribute("data-i18n","dropdownSaveJSON"),S.setAttribute("data-action","save-json");let z=o.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 M=o.createElement("a","lh-report-icon lh-report-icon--open");M.setAttribute("role","menuitem"),M.setAttribute("tabindex","-1"),M.setAttribute("href","#"),M.setAttribute("data-i18n","dropdownSaveGist"),M.setAttribute("data-action","save-gist");let T=o.createElement("a","lh-report-icon lh-report-icon--open lh-hidden");T.setAttribute("role","menuitem"),T.setAttribute("tabindex","-1"),T.setAttribute("href","#"),T.setAttribute("data-i18n","dropdownViewUnthrottledTrace"),T.setAttribute("data-action","view-unthrottled-trace");let F=o.createElement("a","lh-report-icon lh-report-icon--dark");return F.setAttribute("role","menuitem"),F.setAttribute("tabindex","-1"),F.setAttribute("href","#"),F.setAttribute("data-i18n","dropdownDarkTheme"),F.setAttribute("data-action","toggle-dark"),x.append(" ",E," ",A," ",C," "," ",L," ",S," ",z," ",M," "," ",T," ",F," "),c.append(" ",d," ",_," ",x," "),n.append(" "," ",r," ",s," ",c," "),e.append(n),e}function He(o){let e=o.createFragment(),t=o.createElement("div","lh-warnings lh-warnings--toplevel"),n=o.createElement("p","lh-warnings__msg"),r=o.createElement("ul");return t.append(" ",n," ",r," "),e.append(t),e}function Y(o,e){switch(e){case"3pFilter":return ue(o);case"audit":return ge(o);case"categoryHeader":return me(o);case"chevron":return fe(o);case"clump":return be(o);case"crc":return ve(o);case"crcChain":return _e(o);case"elementScreenshot":return we(o);case"footer":return ye(o);case"fraction":return xe(o);case"gauge":return Ee(o);case"gaugePwa":return ke(o);case"heading":return Ae(o);case"metric":return Se(o);case"opportunity":return Ce(o);case"opportunityHeader":return ze(o);case"scorescale":return Le(o);case"scoresWrapper":return Me(o);case"snippet":return Te(o);case"snippetContent":return Fe(o);case"snippetHeader":return De(o);case"snippetLine":return Re(o);case"styles":return Ne(o);case"topbar":return Pe(o);case"warningsToplevel":return He(o)}throw new Error("unexpected component: "+e)}var I=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 r of t.split(/\s+/))r&&n.classList.add(r);return n}createElementNS(e,t,n){let r=this._document.createElementNS(e,t);if(n)for(let i of n.split(/\s+/))i&&r.classList.add(i);return r}createFragment(){return this._document.createDocumentFragment()}createTextNode(e){return this._document.createTextNode(e)}createChildOf(e,t,n){let r=this.createElement(t,n);return e.append(r),r}createComponent(e){let t=this._componentCache.get(e);if(t){let r=t.cloneNode(!0);return this.findAll("style",r).forEach(i=>i.remove()),r}return t=Y(this,e),this._componentCache.set(e,t),t.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(e,t={}){let n=this.createElement("span");for(let r of k.splitMarkdownLink(e)){let i=r.text.includes("`")?this.convertMarkdownCodeSnippets(r.text):r.text;if(!r.isLink){n.append(i);continue}let a=new URL(r.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:"],r;try{r=new URL(t)}catch{}r&&n.includes(r.protocol)&&(e.href=r.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 k.splitMarkdownCodeSpans(e))if(n.isCode){let r=this.createElement("code");r.textContent=n.text,t.append(r)}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){let n=t.querySelector(e);if(n===null)throw new Error(`query ${e} not found`);return n}findAll(e,t){return Array.from(t.querySelectorAll(e))}fireEventOn(e,t=this._document,n){let r=new CustomEvent(e,n?{detail:n}:void 0);t.dispatchEvent(r)}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 X=0,g=class o{static i18n=null;static strings={};static reportJson=null;static apply(e){o.strings={...ee,...e.providedStrings},o.i18n=e.i18n,o.reportJson=e.reportJson}static getUniqueSuffix(){return X++}static resetUniqueSuffix(){X=0}};var te="data:image/jpeg;base64,";function ne(o){o.configSettings.locale||(o.configSettings.locale="en"),o.configSettings.formFactor||(o.configSettings.formFactor=o.configSettings.emulatedFormFactor),o.finalDisplayedUrl=k.getFinalDisplayedUrl(o),o.mainDocumentUrl=k.getMainDocumentUrl(o);for(let n of Object.values(o.audits))if((n.scoreDisplayMode==="not_applicable"||n.scoreDisplayMode==="not-applicable")&&(n.scoreDisplayMode="notApplicable"),n.details){if((n.details.type===void 0||n.details.type==="diagnostic")&&(n.details.type="debugdata"),n.details.type==="filmstrip")for(let r of n.details.items)r.data.startsWith(te)||(r.data=te+r.data);if(n.details.type==="table")for(let r of n.details.headings){let{itemType:i,text:a}=r;i!==void 0&&(r.valueType=i,delete r.itemType),a!==void 0&&(r.label=a,delete r.text);let l=r.subItemsHeading?.itemType;r.subItemsHeading&&l!==void 0&&(r.subItemsHeading.valueType=l,delete r.subItemsHeading.itemType)}if(n.id==="third-party-summary"&&(n.details.type==="opportunity"||n.details.type==="table")){let{headings:r,items:i}=n.details;if(r[0].valueType==="link"){r[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]=o.lighthouseVersion.split(".").map(Number),t=o.categories.performance;if(e<9&&t){o.categoryGroups||(o.categoryGroups={}),o.categoryGroups.hidden={title:""};for(let n of t.auditRefs)n.group?["load-opportunities","diagnostics"].includes(n.group)&&delete n.group:n.group="hidden"}if(o.environment||(o.environment={benchmarkIndex:0,networkUserAgent:o.userAgent,hostUserAgent:o.userAgent}),o.configSettings.screenEmulation||(o.configSettings.screenEmulation={width:-1,height:-1,deviceScaleFactor:-1,mobile:/mobile/i.test(o.environment.hostUserAgent),disabled:!1}),o.i18n||(o.i18n={}),o.audits["full-page-screenshot"]){let n=o.audits["full-page-screenshot"].details;n?o.fullPageScreenshot={screenshot:n.screenshot,nodes:n.nodes}:o.fullPageScreenshot=null,delete o.audits["full-page-screenshot"]}}var R=k.RATINGS,y=class o{static prepareReportResult(e){let t=JSON.parse(JSON.stringify(e));ne(t);for(let r of Object.values(t.audits))r.details&&(r.details.type==="opportunity"||r.details.type==="table")&&!r.details.isEntityGrouped&&t.entities&&o.classifyEntities(t.entities,r.details);if(typeof t.categories!="object")throw new Error("No categories provided.");let n=new Map;for(let r of Object.values(t.categories))r.auditRefs.forEach(i=>{i.relevantAudits&&i.relevantAudits.forEach(a=>{let l=n.get(a)||[];l.push(i),n.set(a,l)})}),r.auditRefs.forEach(i=>{let a=t.audits[i.id];i.result=a,n.has(i.id)&&(i.relevantMetrics=n.get(i.id)),t.stackPacks&&t.stackPacks.forEach(l=>{l.descriptions[i.id]&&(i.stackPacks=i.stackPacks||[],i.stackPacks.push({title:l.title,iconDataURL:l.iconDataURL,description:l.descriptions[i.id]}))})});return t}static getUrlLocatorFn(e){let t=e.find(r=>r.valueType==="url")?.key;if(t&&typeof t=="string")return r=>{let i=r[t];if(typeof i=="string")return i};let n=e.find(r=>r.valueType==="source-location")?.key;if(n)return r=>{let i=r[n];if(typeof i=="object"&&i.type==="source-location")return i.url}}static classifyEntities(e,t){let{items:n,headings:r}=t;if(!n.length||n.some(a=>a.entity))return;let i=o.getUrlLocatorFn(r);if(i)for(let a of n){let l=i(a);if(!l)continue;let s="";try{s=k.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 r of e){let i=t[r],a=n[r];if((typeof i!=typeof a||!["number","string"].includes(typeof i))&&console.warn(`Warning: Attempting to sort unsupported value type: ${r}.`),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,r,i=e.throttling,a=g.i18n,l=g.strings;switch(e.throttlingMethod){case"provided":r=n=t=l.throttlingProvided;break;case"devtools":{let{cpuSlowdownMultiplier:h,requestLatencyMs:u}=i;t=`${a.formatNumber(h)}x slowdown (DevTools)`,n=`${a.formatMilliseconds(u)} HTTP RTT, ${a.formatKbps(i.downloadThroughputKbps)} down, ${a.formatKbps(i.uploadThroughputKbps)} up (DevTools)`,r=(()=>u===150*3.75&&i.downloadThroughputKbps===1.6*1024*.9&&i.uploadThroughputKbps===750*.9)()?l.runtimeSlow4g:l.runtimeCustom;break}case"simulate":{let{cpuSlowdownMultiplier:h,rttMs:u,throughputKbps:f}=i;t=`${a.formatNumber(h)}x slowdown (Simulated)`,n=`${a.formatMilliseconds(u)} TCP RTT, ${a.formatKbps(f)} throughput (Simulated)`,r=(()=>u===150&&f===1.6*1024)()?l.runtimeSlow4g:l.runtimeCustom;break}default:r=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 p=s?void 0:`${e.screenEmulation.width}x${e.screenEmulation.height}, DPR ${e.screenEmulation.deviceScaleFactor}`;return{deviceEmulation:d,screenEmulation:p,cpuThrottling:t,networkThrottling:n,summary:r}}static showAsPassed(e){switch(e.scoreDisplayMode){case"manual":case"notApplicable":return!0;case"error":case"informative":return!1;case"numeric":case"binary":default:return Number(e.score)>=R.PASS.minScore}}static calculateRating(e,t){if(t==="manual"||t==="notApplicable")return R.PASS.label;if(t==="error")return R.ERROR.label;if(e===null)return R.FAIL.label;let n=R.FAIL.label;return e>=R.PASS.minScore?n=R.PASS.label:e>=R.AVERAGE.minScore&&(n=R.AVERAGE.label),n}static calculateCategoryFraction(e){let t=0,n=0,r=0,i=0;for(let a of e.auditRefs){let l=o.showAsPassed(a.result);if(!(a.group==="hidden"||a.result.scoreDisplayMode==="manual"||a.result.scoreDisplayMode==="notApplicable")){if(a.result.scoreDisplayMode==="informative"){l||++r;continue}++t,i+=a.weight,l&&n++}}return{numPassed:n,numPassableAudits:t,numInformative:r,totalWeight:i}}static isPluginCategory(e){return e.startsWith("lighthouse-plugin-")}static shouldDisplayAsFraction(e){return e==="timespan"||e==="snapshot"}},ee={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 load",runtimeAnalysisWindow:"Initial page load",runtimeSingleLoadTooltip:"This data is taken from a single page load, 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"};var N=class{constructor(e,t){this.dom=e,this.detailsRenderer=t}get _clumpTitles(){return{warning:g.strings.warningAuditsGroupTitle,manual:g.strings.manualAuditsGroupTitle,passed:g.strings.passedAuditsGroupTitle,notApplicable:g.strings.notApplicableAuditsGroupTitle}}renderAudit(e){let t=this.dom.createComponent("audit");return this.populateAuditValues(e,t)}populateAuditValues(e,t){let n=g.strings,r=this.dom.find(".lh-audit",t);r.id=e.result.id;let i=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",r).textContent=e.result.displayValue);let a=this.dom.find(".lh-audit__title",r);a.append(this.dom.convertMarkdownCodeSnippets(e.result.title));let l=this.dom.find(".lh-audit__description",r);l.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(let h of e.relevantMetrics||[]){let u=this.dom.createChildOf(l,"span","lh-audit__adorn");u.title=`Relevant to ${h.result.title}`,u.textContent=h.acronym||h.id}e.stackPacks&&e.stackPacks.forEach(h=>{let u=this.dom.createElement("img","lh-audit__stackpack__img");u.src=h.iconDataURL,u.alt=h.title;let f=this.dom.convertMarkdownLinkSnippets(h.description,{alwaysAppendUtmSource:!0}),b=this.dom.createElement("div","lh-audit__stackpack");b.append(u,f),this.dom.find(".lh-audit__stackpacks",r).append(b)});let s=this.dom.find("details",r);if(e.result.details){let h=this.detailsRenderer.render(e.result.details);h&&(h.classList.add("lh-details"),s.append(h))}if(this.dom.find(".lh-chevron-container",r).append(this._createChevron()),this._setRatingClass(r,e.result.score,i),e.result.scoreDisplayMode==="error"){r.classList.add("lh-audit--error");let h=this.dom.find(".lh-audit__display-text",r);h.textContent=n.errorLabel,h.classList.add("lh-tooltip-boundary");let u=this.dom.createChildOf(h,"div","lh-tooltip lh-tooltip--error");u.textContent=e.result.errorMessage||n.errorMissingAuditInfo}else if(e.result.explanation){let h=this.dom.createChildOf(a,"div","lh-audit-explanation");h.textContent=e.result.explanation}let c=e.result.warnings;if(!c||c.length===0)return r;let d=this.dom.find("summary",s),p=this.dom.createChildOf(d,"div","lh-warnings");if(this.dom.createChildOf(p,"span").textContent=n.warningHeader,c.length===1)p.append(this.dom.createTextNode(c.join("")));else{let h=this.dom.createChildOf(p,"ul");for(let u of c){let f=this.dom.createChildOf(h,"li");f.textContent=u}}return r}injectFinalScreenshot(e,t,n){let r=t["final-screenshot"];if(!r||r.scoreDisplayMode==="error"||!r.details||r.details.type!=="screenshot")return null;let i=this.dom.createElement("img","lh-final-ss-image"),a=r.details.data;i.src=a,i.alt=r.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 r=y.calculateRating(t,n);return e.classList.add(`lh-audit--${n.toLowerCase()}`),n!=="informative"&&e.classList.add(`lh-audit--${r}`),e}renderCategoryHeader(e,t,n){let r=this.dom.createComponent("categoryHeader"),i=this.dom.find(".lh-score__gauge",r),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",r).append(l)}return r}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 r=null;return e.description&&(r=this.dom.convertMarkdownLinkSnippets(e.description),r.classList.add("lh-audit-group__description","lh-audit-group__footer"),t.append(r)),[t,r]}_renderGroupedAudits(e,t){let n=new Map,r="NotAGroup";n.set(r,[]);for(let a of e){let l=a.group||r;if(l==="hidden")continue;let s=n.get(l)||[];s.push(a),n.set(l,s)}let i=[];for(let[a,l]of n){if(a===r){for(let p of l)i.push(this.renderAudit(p));continue}let s=t[a],[c,d]=this.renderAuditGroup(s);for(let p of l)c.insertBefore(this.renderAudit(p),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,{auditRefs:t,description:n,openByDefault:r}){let i=this.dom.createComponent("clump"),a=this.dom.find(".lh-clump",i);r&&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(this.renderAudit.bind(this));a.append(...d);let p=this.dom.find(".lh-audit-group",i);if(n){let h=this.dom.convertMarkdownLinkSnippets(n);h.classList.add("lh-audit-group__description","lh-audit-group__footer"),p.append(h)}return this.dom.find(".lh-clump-toggletext--show",p).textContent=g.strings.show,this.dom.find(".lh-clump-toggletext--hide",p).textContent=g.strings.hide,a.classList.add(`lh-clump--${e.toLowerCase()}`),p}renderCategoryScore(e,t,n){let r;if(n&&y.shouldDisplayAsFraction(n.gatherMode)?r=this.renderCategoryFraction(e):r=this.renderScoreGauge(e,t),n?.omitLabel&&this.dom.find(".lh-gauge__label,.lh-fraction__label",r).remove(),n?.onPageAnchorRendered){let i=this.dom.find("a",r);n.onPageAnchorRendered(i)}return r}renderScoreGauge(e,t){let n=this.dom.createComponent("gauge"),r=this.dom.find("a.lh-gauge__wrapper",n);y.isPluginCategory(e.id)&&r.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=g.strings.errorLabel),e.auditRefs.length===0||this.hasApplicableAudits(e)?r.classList.add(`lh-gauge__wrapper--${y.calculateRating(e.score)}`):(r.classList.add("lh-gauge__wrapper--not-applicable"),c.textContent="-",c.title=g.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:r,numPassableAudits:i,totalWeight:a}=y.calculateCategoryFraction(e),l=r/i,s=this.dom.find(".lh-fraction__content",t),c=this.dom.createElement("span");c.textContent=`${r}/${i}`,s.append(c);let d=y.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")),r=Number(e.getAttribute("stroke-width")),i=.25*r/n;e.style.transform=`rotate(${-90+i*360}deg)`;let a=t*n-r/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:y.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,t={},n){let r=this.dom.createElement("div","lh-category");r.id=e.id,r.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){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 h=this.renderUnexpandableClump(s,t);h.classList.add("lh-clump--failed"),r.append(h);continue}let c=l==="manual"?e.manualDescription:void 0,d=l==="warning"||l==="manual"&&a===0,p=this.renderClump(l,{auditRefs:s,description:c,openByDefault:d});r.append(p)}return r}};var O=class{static initTree(e){let t=0,n=Object.keys(e);return n.length>0&&(t=e[n[0]].request.startTime),{tree:e,startTime:t,transferSize:0}}static createSegment(e,t,n,r,i,a){let l=e[t],s=Object.keys(e),c=s.indexOf(t)===s.length-1,d=!!l.children&&Object.keys(l.children).length>0,p=Array.isArray(i)?i.slice(0):[];return typeof a<"u"&&p.push(!a),{node:l,isLastChild:c,hasChildren:d,startTime:n,transferSize:r+l.request.transferSize,treeMarkers:p}}static createChainNode(e,t,n){let r=e.createComponent("crcChain");e.find(".lh-crc-node",r).setAttribute("title",t.node.request.url);let i=e.find(".lh-crc-node__tree-marker",r);t.treeMarkers.forEach(p=>{let h=p?"lh-tree-marker lh-vert":"lh-tree-marker";i.append(e.createElement("span",h),e.createElement("span","lh-tree-marker"))});let a=t.isLastChild?"lh-tree-marker lh-up-right":"lh-tree-marker lh-vert-right",l=t.hasChildren?"lh-tree-marker lh-horiz-down":"lh-tree-marker lh-right";i.append(e.createElement("span",a),e.createElement("span","lh-tree-marker lh-right"),e.createElement("span",l));let s=t.node.request.url,c=n.renderTextURL(s),d=e.find(".lh-crc-node__tree-value",r);if(d.append(c),!t.hasChildren){let{startTime:p,endTime:h,transferSize:u}=t.node.request,f=e.createElement("span","lh-crc-node__chain-duration");f.textContent=" - "+g.i18n.formatMilliseconds((h-p)*1e3)+", ";let b=e.createElement("span","lh-crc-node__chain-duration");b.textContent=g.i18n.formatBytesToKiB(u,.01),d.append(f,b)}return r}static buildTree(e,t,n,r,i,a){if(r.append(H.createChainNode(e,n,a)),n.node.children)for(let l of Object.keys(n.node.children)){let s=H.createSegment(n.node.children,l,n.startTime,n.transferSize,n.treeMarkers,n.isLastChild);H.buildTree(e,t,s,r,i,a)}}static render(e,t,n){let r=e.createComponent("crc"),i=e.find(".lh-crc",r);e.find(".lh-crc-initial-nav",r).textContent=g.strings.crcInitialNavigation,e.find(".lh-crc__longest_duration_label",r).textContent=g.strings.crcLongestDurationLabel,e.find(".lh-crc__longest_duration",r).textContent=g.i18n.formatMilliseconds(t.longestChain.duration);let a=H.initTree(t.chains);for(let l of Object.keys(a.tree)){let s=H.createSegment(a.tree,l,a.startTime,a.transferSize);H.buildTree(e,r,s,i,t,n)}return e.find(".lh-crc-container",r)}},H=O;function Ue(o,e){return e.left<=o.width&&0<=e.right&&e.top<=o.height&&0<=e.bottom}function re(o,e,t){return o<e?e:o>t?t:o}function Ie(o){return{x:o.left+o.width/2,y:o.top+o.height/2}}var P=class o{static getScreenshotPositions(e,t,n){let r=Ie(e),i=re(r.x-t.width/2,0,n.width-t.width),a=re(r.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,r,i){let a=e.find("clipPath",t),l=`clip-${g.getUniqueSuffix()}`;a.id=l,t.style.clipPath=`url(#${l})`;let s=n.top/i.height,c=s+r.height/i.height,d=n.left/i.width,p=d+r.width/i.width,h=[`0,0 1,0 1,${s} 0,${s}`,`0,${c} 1,${c} 1,1 0,1`,`0,${s} ${d},${s} ${d},${c} 0,${c}`,`${p},${s} 1,${s} 1,${c} ${p},${c}`];for(let u of h){let f=e.createElementNS("http://www.w3.org/2000/svg","polygon");f.setAttribute("points",u),a.append(f)}}static installFullPageScreenshot(e,t){e.style.setProperty("--element-screenshot-url",`url('${t.data}')`)}static installOverlayFeature(e){let{dom:t,rootEl:n,overlayContainerEl:r,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");r.append(d);let p={width:d.clientWidth*.95,height:d.clientHeight*.8},h={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)},u=o.render(t,i.screenshot,h,p);if(!u){d.remove();return}d.append(u),d.addEventListener("click",()=>d.remove())}))}static _computeZoomFactor(e,t){let r={x:t.width/e.width,y:t.height/e.height},i=.75*Math.min(r.x,r.y);return Math.min(1,i)}static render(e,t,n,r){if(!Ue(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,r),s={width:r.width/l,height:r.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=o.getScreenshotPositions(n,s,{width:t.width,height:t.height}),p=e.find("div.lh-element-screenshot__image",a);p.style.width=c.width+"px",p.style.height=c.height+"px",p.style.backgroundPositionY=-(d.screenshot.top*l)+"px",p.style.backgroundPositionX=-(d.screenshot.left*l)+"px",p.style.backgroundSize=`${t.width*l}px ${t.height*l}px`;let h=e.find("div.lh-element-screenshot__element-marker",a);h.style.width=n.width*l+"px",h.style.height=n.height*l+"px",h.style.left=d.clip.left*l+"px",h.style.top=d.clip.top*l+"px";let u=e.find("div.lh-element-screenshot__mask",a);return u.style.width=c.width+"px",u.style.height=c.height+"px",o.renderClipPathInScreenshot(e,u,d.clip,n,s),a}};var Oe=["http://","https://","data:"],Ve=["bytes","numeric","ms","timespanMs"],V=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"table":case"opportunity":return this._renderTable(e);case"criticalrequestchain":return O.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=g.i18n.formatBytesToKiB(e.value,e.granularity||.1),n=this._renderText(t);return n.title=g.i18n.formatBytes(e.value),n}_renderMilliseconds(e){let t;return e.displayUnit==="duration"?t=g.i18n.formatDuration(e.value):t=g.i18n.formatMilliseconds(e.value,e.granularity||10),this._renderText(t)}renderTextURL(e){let t=e,n,r,i;try{let l=k.parseURL(t);n=l.file==="/"?l.origin:l.file,r=l.file==="/"||l.hostname===""?"":`(${l.hostname})`,i=t}catch{n=t}let a=this._dom.createElement("div","lh-text__url");if(a.append(this._renderLink({text:n,url:t})),r){let l=this._renderText(r);l.classList.add("lh-text__url-host"),a.append(l)}return i&&(a.title=t,a.dataset.url=t),a}_renderLink(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}_renderNumeric(e){let t=g.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"source-location":return this.renderSourceLocation(e);case"url":return this.renderTextURL(e.value);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 Oe.some(r=>n.startsWith(r))?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 r of t){if(!r||!r.key){this._dom.createChildOf(n,"td","lh-table-column--empty");continue}let i=e[r.key],a;if(i!=null&&(a=this._renderTableValue(i,r)),a){let l=`lh-table-column--${r.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 r=t.map(this._getDerivedSubItemsHeading);if(!r.some(Boolean))return n;for(let i of e.subItems.items){let a=this._renderTableRow(i,r);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 r=this._dom.find("td",e);if(n.category){let i=this._dom.createElement("span");i.classList.add("lh-audit__adorn"),i.textContent=n.category,r.append(" ",i)}if(n.isFirstParty){let i=this._dom.createElement("span");i.classList.add("lh-audit__adorn","lh-audit__adorn1p"),i.textContent=g.strings.firstPartyChipLabel,r.append(" ",i)}if(n.homepage){let i=this._dom.createElement("a");i.href=n.homepage,i.target="_blank",i.title=g.strings.openInANewTabTooltip,i.classList.add("lh-report-icon--external"),r.append(" ",i)}}_renderEntityGroupRow(e,t){let n={...t[0]};n.valueType="text";let r=[n,...t.slice(1)],i=this._dom.createFragment();return i.append(this._renderTableRow(e,r)),this._dom.find("tr",i).classList.add("lh-row--group"),i}_getEntityGroupItems(e){let{items:t,headings:n,sortedBy:r}=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)||Ve.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 p=typeof d.entity=="string"?d.entity:void 0,h=s.get(p)||{[l]:p||g.strings.unattributable,entity:p};for(let u of a)h[u]=Number(h[u]||0)+Number(d[u]||0);s.set(p,h)}let c=[...s.values()];return r&&c.sort(y.getTableItemSortComparator(r)),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"),r=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(r,"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 p of e.items.filter(h=>h.entity===s))c.append(this._renderTableRowsFromItem(p,e.headings));let d=this._dom.findAll("tr",c);s&&d.length&&(d.forEach(p=>p.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),p=d[0];if(typeof s.entity=="string"&&(p.dataset.entity=s.entity),e.isEntityGrouped&&s.entity)p.classList.add("lh-row--group"),this._adornEntityGroupRow(p);else for(let h of d)h.classList.add(l?"lh-row--even":"lh-row--odd");l=!l,a.append(c)}}return t}_renderList(e){let t=this._dom.createElement("div","lh-list");return e.items.forEach(n=>{let r=this.render(n);r&&t.append(r)}),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 r={width:147,height:100},i=P.render(this._dom,this._fullPageScreenshot.screenshot,n,r);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 r;if(e.urlProvider==="network"&&n)r=this._renderLink({url:e.url,text:n}),r.title=`maps to generated location ${t}`;else if(e.urlProvider==="network"&&!n)r=this.renderTextURL(e.url),this._dom.find(".lh-link",r).textContent+=`:${e.line+1}:${e.column}`;else if(e.urlProvider==="comment"&&n)r=this._renderText(`${n} (from source map)`),r.title=`${t} (from sourceURL)`;else if(e.urlProvider==="comment"&&!n)r=this._renderText(`${t} (from sourceURL)`);else return null;return r.classList.add("lh-source-location"),r.setAttribute("data-source-url",e.url),r.setAttribute("data-source-line",String(e.line)),r.setAttribute("data-source-column",String(e.column)),r}_renderFilmstrip(e){let t=this._dom.createElement("div","lh-filmstrip");for(let n of e.items){let r=this._dom.createChildOf(t,"div","lh-filmstrip__frame"),i=this._dom.createChildOf(r,"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 J="\xA0";var G=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 r,i=[n.minimumFractionDigits,n.maximumFractionDigits,n.style,n.unit,n.unitDisplay,this._locale].join("");return r=this._cachedNumberFormatters.get(i),r||(r=new Intl.NumberFormat(this._locale,n),this._cachedNumberFormatters.set(i,r)),r.format(e).replace(" ",J)}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)+`${J}KiB`}formatBytesToMiB(e,t=void 0){return this._formatNumberWithGranularity(e/1048576,t)+`${J}MiB`}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=[],r={day:60*60*24,hour:60*60,minute:60,second:1};return Object.keys(r).forEach(i=>{let a=r[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(" ")}};var W=class extends N{_renderMetric(e){let t=this.dom.createComponent("metric"),n=this.dom.find(".lh-metric",t);n.id=e.result.id;let r=y.calculateRating(e.result.score,e.result.scoreDisplayMode);n.classList.add(`lh-metric--${r}`);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}_renderOpportunity(e,t){let n=this.dom.createComponent("opportunity"),r=this.populateAuditValues(e,n);if(r.id=e.result.id,!e.result.details||e.result.scoreDisplayMode==="error")return r;let i=e.result.details;if(i.overallSavingsMs===void 0)return r;let a=this.dom.find("span.lh-audit__display-text, div.lh-audit__display-text",r),l=`${i.overallSavingsMs/t*100}%`;if(this.dom.find("div.lh-sparkline__bar",r).style.width=l,a.textContent=g.i18n.formatSeconds(i.overallSavingsMs,.01),e.result.displayValue){let s=e.result.displayValue;this.dom.find("div.lh-load-opportunity__sparkline",r).title=s,a.title=s}return r}_getWastedMs(e){if(e.result.details){let t=e.result.details;if(typeof t.overallSavingsMs!="number")throw new Error("non-opportunity details passed to _getWastedMs");return t.overallSavingsMs}else return Number.MIN_VALUE}_getScoringCalculatorHref(e){let t=e.filter(p=>p.group==="metrics"),n=e.find(p=>p.id==="interactive"),r=e.find(p=>p.id==="first-cpu-idle"),i=e.find(p=>p.id==="first-meaningful-paint");n&&t.push(n),r&&t.push(r),i&&t.push(i);let a=p=>Math.round(p*100)/100,s=[...t.map(p=>{let h;return typeof p.result.numericValue=="number"?(h=p.id==="cumulative-layout-shift"?a(p.result.numericValue):Math.round(p.result.numericValue),h=h.toString()):h="null",[p.acronym||p.id,h]})];g.reportJson&&(s.push(["device",g.reportJson.configSettings.formFactor]),s.push(["version",g.reportJson.lighthouseVersion]));let c=new URLSearchParams(s),d=new URL("https://googlechrome.github.io/lighthouse/scorecalc/");return d.hash=c.toString(),d.href}_classifyPerformanceAudit(e){return e.group?null:e.result.details?.overallSavingsMs!==void 0?"load-opportunity":"diagnostic"}render(e,t,n){let r=g.strings,i=this.dom.createElement("div","lh-category");i.id=e.id,i.append(this.renderCategoryHeader(e,t,n));let a=e.auditRefs.filter(m=>m.group==="metrics");if(a.length){let[m,w]=this.renderAuditGroup(t.metrics),v=this.dom.createElement("input","lh-metrics-toggle__input"),x=`lh-metrics-toggle${g.getUniqueSuffix()}`;v.setAttribute("aria-label","Toggle the display of metric descriptions"),v.type="checkbox",v.id=x,m.prepend(v);let E=this.dom.find(".lh-audit-group__header",m),A=this.dom.createChildOf(E,"label","lh-metrics-toggle__label");A.htmlFor=x;let C=this.dom.createChildOf(A,"span","lh-metrics-toggle__labeltext--show"),L=this.dom.createChildOf(A,"span","lh-metrics-toggle__labeltext--hide");C.textContent=g.strings.expandView,L.textContent=g.strings.collapseView;let S=this.dom.createElement("div","lh-metrics-container");if(m.insertBefore(S,w),a.forEach(z=>{S.append(this._renderMetric(z))}),i.querySelector(".lh-gauge__wrapper")){let z=this.dom.find(".lh-category-header__description",i),M=this.dom.createChildOf(z,"div","lh-metrics__disclaimer"),T=this.dom.convertMarkdownLinkSnippets(r.varianceDisclaimer);M.append(T);let F=this.dom.createChildOf(M,"a","lh-calclink");F.target="_blank",F.textContent=r.calculatorLink,this.dom.safelySetHref(F,this._getScoringCalculatorHref(e.auditRefs))}m.classList.add("lh-audit-group--metrics"),i.append(m)}let l=this.dom.createChildOf(i,"div","lh-filmstrip-container"),c=e.auditRefs.find(m=>m.id==="screenshot-thumbnails")?.result;if(c?.details){l.id=c.id;let m=this.detailsRenderer.render(c.details);m&&l.append(m)}let d=e.auditRefs.filter(m=>this._classifyPerformanceAudit(m)==="load-opportunity").filter(m=>!y.showAsPassed(m.result)).sort((m,w)=>this._getWastedMs(w)-this._getWastedMs(m)),p=a.filter(m=>!!m.relevantAudits);if(p.length&&this.renderMetricAuditFilter(p,i),d.length){let w=d.map(S=>this._getWastedMs(S)),v=Math.max(...w),x=Math.max(Math.ceil(v/1e3)*1e3,2e3),[E,A]=this.renderAuditGroup(t["load-opportunities"]),C=this.dom.createComponent("opportunityHeader");this.dom.find(".lh-load-opportunity__col--one",C).textContent=r.opportunityResourceColumnLabel,this.dom.find(".lh-load-opportunity__col--two",C).textContent=r.opportunitySavingsColumnLabel;let L=this.dom.find(".lh-load-opportunity__header",C);E.insertBefore(L,A),d.forEach(S=>E.insertBefore(this._renderOpportunity(S,x),A)),E.classList.add("lh-audit-group--load-opportunities"),i.append(E)}let h=e.auditRefs.filter(m=>this._classifyPerformanceAudit(m)==="diagnostic").filter(m=>!y.showAsPassed(m.result)).sort((m,w)=>{let v=m.result.scoreDisplayMode==="informative"?100:Number(m.result.score),x=w.result.scoreDisplayMode==="informative"?100:Number(w.result.score);return v-x});if(h.length){let[m,w]=this.renderAuditGroup(t.diagnostics);h.forEach(v=>m.insertBefore(this.renderAudit(v),w)),m.classList.add("lh-audit-group--diagnostics"),i.append(m)}let u=e.auditRefs.filter(m=>this._classifyPerformanceAudit(m)&&y.showAsPassed(m.result));if(!u.length)return i;let f={auditRefs:u,groupDefinitions:t},b=this.renderClump("passed",f);i.append(b);let _=[];if(["performance-budget","timing-budget"].forEach(m=>{let w=e.auditRefs.find(v=>v.id===m);if(w?.result.details){let v=this.detailsRenderer.render(w.result.details);v&&(v.id=m,v.classList.add("lh-details","lh-details--budget","lh-audit"),_.push(v))}}),_.length>0){let[m,w]=this.renderAuditGroup(t.budgets);_.forEach(v=>m.insertBefore(v,w)),m.classList.add("lh-audit-group--budgets"),i.append(m)}return i}renderMetricAuditFilter(e,t){let n=this.dom.createElement("div","lh-metricfilter"),r=this.dom.createChildOf(n,"span","lh-metricfilter__text");r.textContent=g.strings.showRelevantAudits;let i=[{acronym:"All"},...e],a=g.getUniqueSuffix();for(let l of i){let s=`metric-${l.acronym}-${a}`,c=this.dom.createChildOf(n,"input","lh-metricfilter__radio");c.type="radio",c.name=`metricsfilter-${a}`,c.id=s;let d=this.dom.createChildOf(n,"label","lh-metricfilter__label");d.htmlFor=s,d.title=l.result?.title,d.textContent=l.acronym||l.id,l.acronym==="All"&&(c.checked=!0,d.classList.add("lh-metricfilter__label--active")),t.append(n),c.addEventListener("input",p=>{for(let u of t.querySelectorAll("label.lh-metricfilter__label"))u.classList.toggle("lh-metricfilter__label--active",u.htmlFor===s);t.classList.toggle("lh-category--filtered",l.acronym!=="All");for(let u of t.querySelectorAll("div.lh-audit")){if(l.acronym==="All"){u.hidden=!1;continue}u.hidden=!0,l.relevantAudits&&l.relevantAudits.includes(u.id)&&(u.hidden=!1)}let h=t.querySelectorAll("div.lh-audit-group, details.lh-audit-group");for(let u of h){u.hidden=!1;let f=Array.from(u.querySelectorAll("div.lh-audit")),b=!!f.length&&f.every(_=>_.hidden);u.hidden=b}})}}};var j=class o extends N{render(e,t={}){let n=this.dom.createElement("div","lh-category");n.id=e.id,n.append(this.renderCategoryHeader(e,t));let r=e.auditRefs,i=r.filter(c=>c.result.scoreDisplayMode!=="manual"),a=this._renderAudits(i,t);n.append(a);let l=r.filter(c=>c.result.scoreDisplayMode==="manual"),s=this.renderClump("manual",{auditRefs:l,description:e.manualDescription,openByDefault:!0});return n.append(s),n}renderCategoryScore(e,t){if(e.score===null)return super.renderScoreGauge(e,t);let n=this.dom.createComponent("gaugePwa"),r=this.dom.find("a.lh-gauge--pwa__wrapper",n),i=n.querySelector("svg");if(!i)throw new Error("no SVG element found in PWA score gauge template");o._makeSvgReferencesUnique(i);let a=this._getGroupIds(e.auditRefs),l=this._getPassingGroupIds(e.auditRefs);if(l.size===a.size)r.classList.add("lh-badged--all");else for(let s of l)r.classList.add(`lh-badged--${s}`);return this.dom.find(".lh-gauge__label",n).textContent=e.title,r.title=this._getGaugeTooltip(e.auditRefs,t),n}_getGroupIds(e){let t=e.map(n=>n.group).filter(n=>!!n);return new Set(t)}_getPassingGroupIds(e){let t=this._getGroupIds(e);for(let n of e)!y.showAsPassed(n.result)&&n.group&&t.delete(n.group);return t}_getGaugeTooltip(e,t){let n=this._getGroupIds(e),r=[];for(let i of n){let a=e.filter(d=>d.group===i),l=a.length,s=a.filter(d=>y.showAsPassed(d.result)).length,c=t[i].title;r.push(`${c}: ${s}/${l}`)}return r.join(", ")}_renderAudits(e,t){let n=this.renderUnexpandableClump(e,t),r=this._getPassingGroupIds(e);for(let i of r)this.dom.find(`.lh-audit-group--${i}`,n).classList.add("lh-badged");return n}static _makeSvgReferencesUnique(e){let t=e.querySelector("defs");if(!t)return;let n=g.getUniqueSuffix(),r=t.querySelectorAll("[id]");for(let i of r){let a=i.id,l=`${a}-${n}`;i.id=l;let s=e.querySelectorAll(`use[href="#${a}"]`);for(let d of s)d.setAttribute("href",`#${l}`);let c=e.querySelectorAll(`[fill="url(#${a})"]`);for(let d of c)d.setAttribute("fill",`url(#${l})`)}}};var $=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 r=y.prepareReportResult(e);return this._dom.rootEl.textContent="",this._dom.rootEl.append(this._renderReport(r)),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=g.strings.footerIssue,this._dom.find(".lh-footer__version",t).textContent=e.lighthouseVersion,t}_renderMetaBlock(e,t){let n=y.getEmulationDescriptions(e.configSettings||{}),r=e.userAgent.match(/(\w*Chrome\/[\d.]+)/),i=Array.isArray(r)?r[1].replace("/"," ").replace("Chrome","Chromium"):"Chromium",a=e.configSettings.channel,l=e.environment.benchmarkIndex.toFixed(0),s=e.environment.credits?.["axe-core"],c=[`${g.strings.runtimeSettingsBenchmark}: ${l}`,`${g.strings.runtimeSettingsCPUThrottling}: ${n.cpuThrottling}`];n.screenEmulation&&c.push(`${g.strings.runtimeSettingsScreenEmulation}: ${n.screenEmulation}`),s&&c.push(`${g.strings.runtimeSettingsAxeVersion}: ${s}`);let d=[["date",`Captured at ${g.i18n.formatDateTime(e.fetchTime)}`],["devices",`${n.deviceEmulation} with Lighthouse ${e.lighthouseVersion}`,c.join(`
|
|
2480
2482
|
`)],["samples-one",g.strings.runtimeSingleLoad,g.strings.runtimeSingleLoadTooltip],["stopwatch",g.strings.runtimeAnalysisWindow],["networkspeed",`${n.summary}`,`${g.strings.runtimeSettingsNetworkThrottling}: ${n.networkThrottling}`],["chrome",`Using ${i}`+(a?` with ${a}`:""),`${g.strings.runtimeSettingsUANetwork}: "${e.environment.networkUserAgent}"`]],p=this._dom.find(".lh-meta__items",t);for(let[h,u,f]of d){let b=this._dom.createChildOf(p,"li","lh-meta__item");if(b.textContent=u,f){b.classList.add("lh-tooltip-boundary");let _=this._dom.createChildOf(b,"div","lh-tooltip");_.textContent=f}b.classList.add("lh-report-icon",`lh-report-icon--${h}`)}}_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=g.strings.toplevelWarningsMessage;let r=[];for(let i of e.runWarnings){let a=this._dom.createElement("li");a.append(this._dom.convertMarkdownLinkSnippets(i)),r.push(a)}return this._dom.find("ul",t).append(...r),t}_renderScoreGauges(e,t,n){let r=[],i=[],a=[];for(let l of Object.values(e.categories)){let s=n[l.id]||t,c=s.renderCategoryScore(l,e.categoryGroups||{},{gatherMode:e.gatherMode}),d=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",c);d&&(this._dom.safelySetHref(d,`#${l.id}`),d.addEventListener("click",p=>{if(!d.matches('[href^="#"]'))return;let h=d.getAttribute("href"),u=this._dom.rootEl;if(!h||!u)return;let f=this._dom.find(h,u);p.preventDefault(),f.scrollIntoView()}),this._opts.onPageAnchorRendered?.(d)),y.isPluginCategory(l.id)?a.push(c):s.renderCategoryScore===t.renderCategoryScore?r.push(c):i.push(c)}return[...r,...i,...a]}_renderReport(e){g.apply({providedStrings:e.i18n.rendererFormattedStrings,i18n:new G(e.configSettings.locale),reportJson:e});let t=new V(this._dom,{fullPageScreenshot:e.fullPageScreenshot??void 0,entities:e.entities}),n=new N(this._dom,t),r={performance:new W(this._dom,t),pwa:new j(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 f=this._dom.find(".lh-scores-container",i);s.append(...this._renderScoreGauges(e,n,r)),f.append(s,d);let b=this._dom.createElement("div","lh-sticky-header");b.append(...this._renderScoreGauges(e,n,r)),a.append(b)}let p=this._dom.createElement("div","lh-categories");l.append(p);let h={gatherMode:e.gatherMode};for(let f of Object.values(e.categories)){let b=r[f.id]||n;b.dom.createChildOf(p,"div","lh-category-wrapper").append(b.render(f,e.categoryGroups,h))}n.injectFinalScreenshot(p,e.audits,d);let u=this._dom.createFragment();return this._opts.omitGlobalStyles||u.append(this._dom.createComponent("styles")),this._opts.omitTopbar||u.append(this._renderReportTopbar(e)),u.append(a),l.append(this._renderReportFooter(e)),a.append(i,l),e.fullPageScreenshot&&P.installFullPageScreenshot(this._dom.rootEl,e.fullPageScreenshot.screenshot),u}};function U(o,e){let t=o.rootEl;typeof e>"u"?t.classList.toggle("lh-dark"):t.classList.toggle("lh-dark",e)}var $e=typeof btoa<"u"?btoa:o=>Buffer.from(o).toString("base64"),Be=typeof atob<"u"?atob:o=>Buffer.from(o,"base64").toString();async function Ge(o,e){let t=new TextEncoder().encode(o);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(o);let n="",r=5e3;for(let i=0;i<t.length;i+=r)n+=String.fromCharCode(...t.subarray(i,i+r));return $e(n)}function We(o,e){let t=Be(o),n=Uint8Array.from(t,r=>r.charCodeAt(0));return e.gzip?window.pako.ungzip(n,{to:"string"}):new TextDecoder().decode(n)}var oe={toBase64:Ge,fromBase64:We};function Z(){let o=window.location.host.endsWith(".vercel.app"),e=new URLSearchParams(window.location.search).has("dev");return o?`https://${window.location.host}/gh-pages`:e?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function Q(o){let e=o.generatedTime,t=o.fetchTime||e;return`${o.lighthouseVersion}-${o.finalDisplayedUrl}-${t}`}function je(o,e,t){let n=new URL(e).origin;window.addEventListener("message",function i(a){a.origin===n&&r&&a.data.opened&&(r.postMessage(o,n),window.removeEventListener("message",i))});let r=window.open(e,t)}async function ie(o,e,t){let n=new URL(e),r=!!window.CompressionStream;n.hash=await oe.toBase64(JSON.stringify(o),{gzip:r}),r&&n.searchParams.set("gzip","1"),window.open(n.toString(),t)}async function ae(o){let e="viewer-"+Q(o),t=Z()+"/viewer/";await ie({lhr:o},t,e)}async function le(o){let e="viewer-"+Q(o),t=Z()+"/viewer/";je({lhr:o},t,e)}function se(o){if(!o.audits["script-treemap-data"].details)throw new Error("no script treemap data found");let t={lhr:{mainDocumentUrl:o.mainDocumentUrl,finalUrl:o.finalUrl,finalDisplayedUrl:o.finalDisplayedUrl,audits:{"script-treemap-data":o.audits["script-treemap-data"]},configSettings:{locale:o.configSettings.locale}}},n=Z()+"/treemap/",r="treemap-"+Q(o);ie(t,n,r)}var q=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)||i.hasAttribute("disabled")||window.getComputedStyle(i).display==="none")),r=t?n.indexOf(t)+1:0;return r>=n.length&&(r=0),n[r]}_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 K=class{constructor(e,t){this.lhr,this._reportUIFeatures=e,this._dom=t,this._dropDownMenu=new q(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",()=>U(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(r){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+r.message})}break}case"open-viewer":{this._dom.isDevTools()?ae(this.lhr):le(this.lhr);break}case"save-gist":{this._reportUIFeatures.saveAsGist();break}case"toggle-dark":{U(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(),{cmd:"send",fields:{hitType:"event",eventCategory:"report",eventAction:"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),window.requestAnimationFrame(()=>window.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(p=>p.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 qe(o,e){let t=e?new Date(e):new Date,n=t.toLocaleTimeString("en-US",{hour12:!1}),r=t.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");r.unshift(r.pop());let i=r.join("-");return`${o}_${i}_${n}`.replace(/[/?<>\\:*|"]/g,"-")}function ce(o){let e=new URL(o.finalDisplayedUrl).hostname;return qe(e,o.fetchTime)}function Ke(o){return Array.from(o.tBodies[0].rows)}var B=class{constructor(e,t={}){this.json,this._dom=e,this._opts=t,this._topbar=t.omitTopbar?null:new K(this,e),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(e){this.json=e,this._fullPageScreenshot=k.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&&U(this._dom,!0);let r=["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(r&&!i&&(this._enableFireworks(),t||U(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:g.strings.viewTreemapLabel,icon:"treemap",onClick:()=>se(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:g.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=g.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 r=["lh-button"];e.icon&&(r.push("lh-report-icon"),r.push(`lh-report-icon--${e.icon}`));let i=this._dom.createChildOf(n,"button",r.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"],t=["legacy-javascript"];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=Ke(i),l=a.filter(_=>!_.classList.contains("lh-sub-item-row")),s=this._getThirdPartyRows(l,k.getFinalDisplayedUrl(this.json)),c=a.some(_=>_.classList.contains("lh-row--even")),d=this._dom.createComponent("3pFilter"),p=this._dom.find("input",d);p.addEventListener("change",_=>{let m=_.target instanceof HTMLInputElement&&!_.target.checked,w=!0,v=l[0];for(;v;){let x=m&&s.includes(v);do v.classList.toggle("lh-row--hidden",x),c&&(v.classList.toggle("lh-row--even",!x&&w),v.classList.toggle("lh-row--odd",!x&&!w)),v=v.nextElementSibling;while(v&&v.classList.contains("lh-sub-item-row"));x||(w=!w)}});let h=s.filter(_=>!_.classList.contains("lh-row--group")).length;this._dom.find(".lh-3p-filter-count",d).textContent=`${h}`,this._dom.find(".lh-3p-ui-string",d).textContent=g.strings.thirdPartyResourcesLabel;let u=s.length===l.length,f=!s.length;if((u||f)&&(this._dom.find("div.lh-3p-filter",d).hidden=!0),!i.parentNode)return;i.parentNode.insertBefore(d,i);let b=i.closest(".lh-audit");if(!b)throw new Error(".lh-table not within audit");t.includes(b.id)&&!u&&p.click()})}_setupElementScreenshotOverlay(e){this._fullPageScreenshot&&P.installOverlayFeature({dom:this._dom,rootEl:e,overlayContainerEl:e,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(e,t){let n=k.getRootDomain(t),r=this.json.entities?.find(a=>a.isFirstParty===!0)?.name,i=[];for(let a of e){if(r){if(!a.dataset.entity||a.dataset.entity===r)continue}else{let l=a.querySelector("div.lh-text__url");if(!l)continue;let s=l.dataset.url;if(!s||!(k.getRootDomain(s)!==n))continue}i.push(a)}return i}_saveFile(e){let t=e.type.match("json")?".json":".html",n=ce({finalDisplayedUrl:k.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime})+t;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(e,n):this._dom.saveFile(e,n)}};function Je(o,e={}){let t=document.createElement("article");t.classList.add("lh-root","lh-vars");let n=new I(t.ownerDocument,t);return new $(n).renderReport(o,t,e),new B(n,e).initFeatures(o),t}function Ze(o,e){return{lhr:o,missingIcuMessageIds:[]}}function Qe(o,e){}function Ye(o){return!1}var Xe={registerLocaleData:Qe,hasLocale:Ye};export{I as DOM,$ as ReportRenderer,B as ReportUIFeatures,Xe as format,Je as renderReport,Ze as swapLocale};
|
|
2481
2483
|
/**
|
|
2482
2484
|
* @license
|
package/dist/report/flow.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";(()=>{var Oe,x,tt,ki,we,at,Yn,it,Fe={},ot=[],Si=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function re(t,e){for(var n in e)t[n]=e[n];return t}function rt(t){var e=t.parentNode;e&&e.removeChild(t)}function gn(t,e,n){var a,o,i,r={};for(i in e)i=="key"?a=e[i]:i=="ref"?o=e[i]:r[i]=e[i];if(arguments.length>2&&(r.children=arguments.length>3?Oe.call(arguments,2):n),typeof t=="function"&&t.defaultProps!=null)for(i in t.defaultProps)r[i]===void 0&&(r[i]=t.defaultProps[i]);return De(t,r,a,o,null)}function De(t,e,n,a,o){var i={type:t,props:e,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:o??++tt};return o==null&&x.vnode!=null&&x.vnode(i),i}function G(t){return t.children}function je(t,e){this.props=t,this.context=e}function ge(t,e){if(e==null)return t.__?ge(t.__,t.__.__k.indexOf(t)+1):null;for(var n;e<t.__k.length;e++)if((n=t.__k[e])!=null&&n.__e!=null)return n.__e;return typeof t.type=="function"?ge(t):null}function st(t){var e,n;if((t=t.__)!=null&&t.__c!=null){for(t.__e=t.__c.base=null,e=0;e<t.__k.length;e++)if((n=t.__k[e])!=null&&n.__e!=null){t.__e=t.__c.base=n.__e;break}return st(t)}}function mn(t){(!t.__d&&(t.__d=!0)&&we.push(t)&&!Me.__r++||Yn!==x.debounceRendering)&&((Yn=x.debounceRendering)||at)(Me)}function Me(){for(var t;Me.__r=we.length;)t=we.sort(function(e,n){return e.__v.__b-n.__v.__b}),we=[],t.some(function(e){var n,a,o,i,r,l;e.__d&&(r=(i=(n=e).__v).__e,(l=n.__P)&&(a=[],(o=re({},i)).__v=i.__v+1,hn(l,i,o,n.__n,l.ownerSVGElement!==void 0,i.__h!=null?[r]:null,a,r??ge(i),i.__h),ct(a,i),i.__e!=r&&st(i)))})}function lt(t,e,n,a,o,i,r,l,c,g){var u,v,h,f,y,S,k,C=a&&a.__k||ot,I=C.length;for(n.__k=[],u=0;u<e.length;u++)if((f=n.__k[u]=(f=e[u])==null||typeof f=="boolean"?null:typeof f=="string"||typeof f=="number"||typeof f=="bigint"?De(null,f,null,null,f):Array.isArray(f)?De(G,{children:f},null,null,null):f.__b>0?De(f.type,f.props,f.key,null,f.__v):f)!=null){if(f.__=n,f.__b=n.__b+1,(h=C[u])===null||h&&f.key==h.key&&f.type===h.type)C[u]=void 0;else for(v=0;v<I;v++){if((h=C[v])&&f.key==h.key&&f.type===h.type){C[v]=void 0;break}h=null}hn(t,f,h=h||Fe,o,i,r,l,c,g),y=f.__e,(v=f.ref)&&h.ref!=v&&(k||(k=[]),h.ref&&k.push(h.ref,null,f),k.push(v,f.__c||y,f)),y!=null?(S==null&&(S=y),typeof f.type=="function"&&f.__k===h.__k?f.__d=c=pt(f,c,t):c=ut(t,f,h,C,y,c),typeof n.type=="function"&&(n.__d=c)):c&&h.__e==c&&c.parentNode!=t&&(c=ge(h))}for(n.__e=S,u=I;u--;)C[u]!=null&&(typeof n.type=="function"&&C[u].__e!=null&&C[u].__e==n.__d&&(n.__d=ge(a,u+1)),mt(C[u],C[u]));if(k)for(u=0;u<k.length;u++)dt(k[u],k[++u],k[++u])}function pt(t,e,n){for(var a,o=t.__k,i=0;o&&i<o.length;i++)(a=o[i])&&(a.__=t,e=typeof a.type=="function"?pt(a,e,n):ut(n,a,a,o,a.__e,e));return e}function ut(t,e,n,a,o,i){var r,l,c;if(e.__d!==void 0)r=e.__d,e.__d=void 0;else if(n==null||o!=i||o.parentNode==null)e:if(i==null||i.parentNode!==t)t.appendChild(o),r=null;else{for(l=i,c=0;(l=l.nextSibling)&&c<a.length;c+=2)if(l==o)break e;t.insertBefore(o,i),r=i}return r!==void 0?r:o.nextSibling}function Ai(t,e,n,a,o){var i;for(i in n)i==="children"||i==="key"||i in e||He(t,i,null,n[i],a);for(i in e)o&&typeof e[i]!="function"||i==="children"||i==="key"||i==="value"||i==="checked"||n[i]===e[i]||He(t,i,e[i],n[i],a)}function Qn(t,e,n){e[0]==="-"?t.setProperty(e,n):t[e]=n==null?"":typeof n!="number"||Si.test(e)?n:n+"px"}function He(t,e,n,a,o){var i;e:if(e==="style")if(typeof n=="string")t.style.cssText=n;else{if(typeof a=="string"&&(t.style.cssText=a=""),a)for(e in a)n&&e in n||Qn(t.style,e,"");if(n)for(e in n)a&&n[e]===a[e]||Qn(t.style,e,n[e])}else if(e[0]==="o"&&e[1]==="n")i=e!==(e=e.replace(/Capture$/,"")),e=e.toLowerCase()in t?e.toLowerCase().slice(2):e.slice(2),t.l||(t.l={}),t.l[e+i]=n,n?a||t.addEventListener(e,i?nt:et,i):t.removeEventListener(e,i?nt:et,i);else if(e!=="dangerouslySetInnerHTML"){if(o)e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!=="href"&&e!=="list"&&e!=="form"&&e!=="tabIndex"&&e!=="download"&&e in t)try{t[e]=n??"";break e}catch{}typeof n=="function"||(n!=null&&(n!==!1||e[0]==="a"&&e[1]==="r")?t.setAttribute(e,n):t.removeAttribute(e))}}function et(t){this.l[t.type+!1](x.event?x.event(t):t)}function nt(t){this.l[t.type+!0](x.event?x.event(t):t)}function hn(t,e,n,a,o,i,r,l,c){var g,u,v,h,f,y,S,k,C,I,L,T=e.type;if(e.constructor!==void 0)return null;n.__h!=null&&(c=n.__h,l=e.__e=n.__e,e.__h=null,i=[l]),(g=x.__b)&&g(e);try{e:if(typeof T=="function"){if(k=e.props,C=(g=T.contextType)&&a[g.__c],I=g?C?C.props.value:g.__:a,n.__c?S=(u=e.__c=n.__c).__=u.__E:("prototype"in T&&T.prototype.render?e.__c=u=new T(k,I):(e.__c=u=new je(k,I),u.constructor=T,u.render=xi),C&&C.sub(u),u.props=k,u.state||(u.state={}),u.context=I,u.__n=a,v=u.__d=!0,u.__h=[]),u.__s==null&&(u.__s=u.state),T.getDerivedStateFromProps!=null&&(u.__s==u.state&&(u.__s=re({},u.__s)),re(u.__s,T.getDerivedStateFromProps(k,u.__s))),h=u.props,f=u.state,v)T.getDerivedStateFromProps==null&&u.componentWillMount!=null&&u.componentWillMount(),u.componentDidMount!=null&&u.__h.push(u.componentDidMount);else{if(T.getDerivedStateFromProps==null&&k!==h&&u.componentWillReceiveProps!=null&&u.componentWillReceiveProps(k,I),!u.__e&&u.shouldComponentUpdate!=null&&u.shouldComponentUpdate(k,u.__s,I)===!1||e.__v===n.__v){u.props=k,u.state=u.__s,e.__v!==n.__v&&(u.__d=!1),u.__v=e,e.__e=n.__e,e.__k=n.__k,e.__k.forEach(function(N){N&&(N.__=e)}),u.__h.length&&r.push(u);break e}u.componentWillUpdate!=null&&u.componentWillUpdate(k,u.__s,I),u.componentDidUpdate!=null&&u.__h.push(function(){u.componentDidUpdate(h,f,y)})}u.context=I,u.props=k,u.state=u.__s,(g=x.__r)&&g(e),u.__d=!1,u.__v=e,u.__P=t,g=u.render(u.props,u.state,u.context),u.state=u.__s,u.getChildContext!=null&&(a=re(re({},a),u.getChildContext())),v||u.getSnapshotBeforeUpdate==null||(y=u.getSnapshotBeforeUpdate(h,f)),L=g!=null&&g.type===G&&g.key==null?g.props.children:g,lt(t,Array.isArray(L)?L:[L],e,n,a,o,i,r,l,c),u.base=e.__e,e.__h=null,u.__h.length&&r.push(u),S&&(u.__E=u.__=null),u.__e=!1}else i==null&&e.__v===n.__v?(e.__k=n.__k,e.__e=n.__e):e.__e=Pi(n.__e,e,n,a,o,i,r,c);(g=x.diffed)&&g(e)}catch(N){e.__v=null,(c||i!=null)&&(e.__e=l,e.__h=!!c,i[i.indexOf(l)]=null),x.__e(N,e,n)}}function ct(t,e){x.__c&&x.__c(e,t),t.some(function(n){try{t=n.__h,n.__h=[],t.some(function(a){a.call(n)})}catch(a){x.__e(a,n.__v)}})}function Pi(t,e,n,a,o,i,r,l){var c,g,u,v=n.props,h=e.props,f=e.type,y=0;if(f==="svg"&&(o=!0),i!=null){for(;y<i.length;y++)if((c=i[y])&&"setAttribute"in c==!!f&&(f?c.localName===f:c.nodeType===3)){t=c,i[y]=null;break}}if(t==null){if(f===null)return document.createTextNode(h);t=o?document.createElementNS("http://www.w3.org/2000/svg",f):document.createElement(f,h.is&&h),i=null,l=!1}if(f===null)v===h||l&&t.data===h||(t.data=h);else{if(i=i&&Oe.call(t.childNodes),g=(v=n.props||Fe).dangerouslySetInnerHTML,u=h.dangerouslySetInnerHTML,!l){if(i!=null)for(v={},y=0;y<t.attributes.length;y++)v[t.attributes[y].name]=t.attributes[y].value;(u||g)&&(u&&(g&&u.__html==g.__html||u.__html===t.innerHTML)||(t.innerHTML=u&&u.__html||""))}if(Ai(t,h,v,o,l),u)e.__k=[];else if(y=e.props.children,lt(t,Array.isArray(y)?y:[y],e,n,a,o&&f!=="foreignObject",i,r,i?i[0]:n.__k&&ge(n,0),l),i!=null)for(y=i.length;y--;)i[y]!=null&&rt(i[y]);l||("value"in h&&(y=h.value)!==void 0&&(y!==t.value||f==="progress"&&!y||f==="option"&&y!==v.value)&&He(t,"value",y,v.value,!1),"checked"in h&&(y=h.checked)!==void 0&&y!==t.checked&&He(t,"checked",y,v.checked,!1))}return t}function dt(t,e,n){try{typeof t=="function"?t(e):t.current=e}catch(a){x.__e(a,n)}}function mt(t,e,n){var a,o;if(x.unmount&&x.unmount(t),(a=t.ref)&&(a.current&&a.current!==t.__e||dt(a,null,e)),(a=t.__c)!=null){if(a.componentWillUnmount)try{a.componentWillUnmount()}catch(i){x.__e(i,e)}a.base=a.__P=null}if(a=t.__k)for(o=0;o<a.length;o++)a[o]&&mt(a[o],e,typeof t.type!="function");n||t.__e==null||rt(t.__e),t.__e=t.__d=void 0}function xi(t,e,n){return this.constructor(t,n)}function gt(t,e,n){var a,o,i;x.__&&x.__(t,e),o=(a=typeof n=="function")?null:n&&n.__k||e.__k,i=[],hn(e,t=(!a&&n||e).__k=gn(G,null,[t]),o||Fe,Fe,e.ownerSVGElement!==void 0,!a&&n?[n]:o?null:e.firstChild?Oe.call(e.childNodes):null,i,!a&&n?n:o?o.__e:e.firstChild,a),ct(i,t)}function ke(t,e){var n={__c:e="__cC"+it++,__:t,Consumer:function(a,o){return a.children(o)},Provider:function(a){var o,i;return this.getChildContext||(o=[],(i={})[e]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(r){this.props.value!==r.value&&o.some(mn)},this.sub=function(r){o.push(r);var l=r.componentWillUnmount;r.componentWillUnmount=function(){o.splice(o.indexOf(r),1),l&&l.call(r)}}),a.children}};return n.Provider.__=n.Consumer.contextType=n}Oe=ot.slice,x={__e:function(t,e,n,a){for(var o,i,r;e=e.__;)if((o=e.__c)&&!o.__)try{if((i=o.constructor)&&i.getDerivedStateFromError!=null&&(o.setState(i.getDerivedStateFromError(t)),r=o.__d),o.componentDidCatch!=null&&(o.componentDidCatch(t,a||{}),r=o.__d),r)return o.__E=o}catch(l){t=l}throw t}},tt=0,ki=function(t){return t!=null&&t.constructor===void 0},je.prototype.setState=function(t,e){var n;n=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=re({},this.state),typeof t=="function"&&(t=t(re({},n),this.props)),t&&re(n,t),t!=null&&this.__v&&(e&&this.__h.push(e),mn(this))},je.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),mn(this))},je.prototype.render=G,we=[],at=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Me.__r=0,it=0;var he,q,ht,$e=0,wt=[],ft=x.__b,vt=x.__r,bt=x.diffed,yt=x.__c,_t=x.unmount;function Se(t,e){x.__h&&x.__h(q,t,$e||e),$e=0;var n=q.__H||(q.__H={__:[],__h:[]});return t>=n.__.length&&n.__.push({}),n.__[t]}function se(t){return $e=1,Ui(kt,t)}function Ui(t,e,n){var a=Se(he++,2);return a.t=t,a.__c||(a.__=[n?n(e):kt(void 0,e),function(o){var i=a.t(a.__[0],o);a.__[0]!==i&&(a.__=[i,a.__[1]],a.__c.setState({}))}],a.__c=q),a.__}function Ge(t,e){var n=Se(he++,3);!x.__s&&vn(n.__H,e)&&(n.__=t,n.__H=e,q.__H.__h.push(n))}function We(t,e){var n=Se(he++,4);!x.__s&&vn(n.__H,e)&&(n.__=t,n.__H=e,q.__h.push(n))}function Ve(t){return $e=5,ae(function(){return{current:t}},[])}function ae(t,e){var n=Se(he++,7);return vn(n.__H,e)&&(n.__=t(),n.__H=e,n.__h=t),n.__}function Ae(t){var e=q.context[t.__c],n=Se(he++,9);return n.c=t,e?(n.__==null&&(n.__=!0,e.sub(q)),e.props.value):t.__}function Li(){for(var t;t=wt.shift();)if(t.__P)try{t.__H.__h.forEach(Be),t.__H.__h.forEach(fn),t.__H.__h=[]}catch(e){t.__H.__h=[],x.__e(e,t.__v)}}x.__b=function(t){q=null,ft&&ft(t)},x.__r=function(t){vt&&vt(t),he=0;var e=(q=t.__c).__H;e&&(e.__h.forEach(Be),e.__h.forEach(fn),e.__h=[])},x.diffed=function(t){bt&&bt(t);var e=t.__c;e&&e.__H&&e.__H.__h.length&&(wt.push(e)!==1&&ht===x.requestAnimationFrame||((ht=x.requestAnimationFrame)||function(n){var a,o=function(){clearTimeout(i),Ct&&cancelAnimationFrame(a),setTimeout(n)},i=setTimeout(o,100);Ct&&(a=requestAnimationFrame(o))})(Li)),q=null},x.__c=function(t,e){e.some(function(n){try{n.__h.forEach(Be),n.__h=n.__h.filter(function(a){return!a.__||fn(a)})}catch(a){e.some(function(o){o.__h&&(o.__h=[])}),e=[],x.__e(a,n.__v)}}),yt&&yt(t,e)},x.unmount=function(t){_t&&_t(t);var e,n=t.__c;n&&n.__H&&(n.__H.__.forEach(function(a){try{Be(a)}catch(o){e=o}}),e&&x.__e(e,n.__v))};var Ct=typeof requestAnimationFrame=="function";function Be(t){var e=q,n=t.__c;typeof n=="function"&&(t.__c=void 0,n()),q=e}function fn(t){var e=q;t.__c=t.__(),q=e}function vn(t,e){return!t||t.length!==e.length||e.some(function(n,a){return n!==t[a]})}function kt(t,e){return typeof e=="function"?e(t):e}var ie="…",Ii=" ";var Ei={PASS:{label:"pass",minScore:.9},AVERAGE:{label:"average",minScore:.5},FAIL:{label:"fail"},ERROR:{label:"error"}},Ti=["com","co","gov","edu","ac","org","go","gob","or","net","in","ne","nic","gouv","web","spb","blog","jus","kiev","mil","wi","qc","ca","bel","on"],j=class t{static get RATINGS(){return Ei}static get PASS_THRESHOLD(){return .9}static get MS_DISPLAY_VALUE(){return`%10d${Ii}ms`}static getFinalDisplayedUrl(e){if(e.finalDisplayedUrl)return e.finalDisplayedUrl;if(e.finalUrl)return e.finalUrl;throw new Error("Could not determine final displayed URL")}static getMainDocumentUrl(e){return e.mainDocumentUrl||e.finalUrl}static getFullPageScreenshot(e){return e.fullPageScreenshot?e.fullPageScreenshot:e.audits["full-page-screenshot"]?.details}static splitMarkdownCodeSpans(e){let n=[],a=e.split(/`(.*?)`/g);for(let o=0;o<a.length;o++){let i=a[o];if(!i)continue;let r=o%2!==0;n.push({isCode:r,text:i})}return n}static splitMarkdownLink(e){let n=[],a=e.split(/\[([^\]]+?)\]\((https?:\/\/.*?)\)/g);for(;a.length;){let[o,i,r]=a.splice(0,3);o&&n.push({isLink:!1,text:o}),i&&r&&n.push({isLink:!0,text:i,linkHref:r})}return n}static truncate(e,n,a="…"){if(e.length<=n)return e;let i=new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(e)[Symbol.iterator](),r=0;for(let l=0;l<=n-a.length;l++){let c=i.next();if(c.done)return e;r=c.value.index}for(let l=0;l<a.length;l++)if(i.next().done)return e;return e.slice(0,r)+a}static getURLDisplayName(e,n){n=n||{numPathParts:void 0,preserveQuery:void 0,preserveHost:void 0};let a=n.numPathParts!==void 0?n.numPathParts:2,o=n.preserveQuery!==void 0?n.preserveQuery:!0,i=n.preserveHost||!1,r;if(e.protocol==="about:"||e.protocol==="data:")r=e.href;else{r=e.pathname;let c=r.split("/").filter(g=>g.length);a&&c.length>a&&(r=ie+c.slice(-1*a).join("/")),i&&(r=`${e.host}/${r.replace(/^\//,"")}`),o&&(r=`${r}${e.search}`)}let l=64;if(e.protocol!=="data:"&&(r=r.slice(0,200),r=r.replace(/([a-f0-9]{7})[a-f0-9]{13}[a-f0-9]*/g,`$1${ie}`),r=r.replace(/([a-zA-Z0-9-_]{9})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9-_]{10,}/g,`$1${ie}`),r=r.replace(/(\d{3})\d{6,}/g,`$1${ie}`),r=r.replace(/\u2026+/g,ie),r.length>l&&r.includes("?")&&(r=r.replace(/\?([^=]*)(=)?.*/,`?$1$2${ie}`),r.length>l&&(r=r.replace(/\?.*/,`?${ie}`)))),r.length>l){let c=r.lastIndexOf(".");c>=0?r=r.slice(0,l-1-(r.length-c))+`${ie}${r.slice(c)}`:r=r.slice(0,l-1)+ie}return r}static getChromeExtensionOrigin(e){let n=new URL(e);return n.protocol+"//"+n.host}static parseURL(e){let n=new URL(e);return{file:t.getURLDisplayName(n),hostname:n.hostname,origin:n.protocol==="chrome-extension:"?t.getChromeExtensionOrigin(e):n.origin}}static createOrReturnURL(e){return e instanceof URL?e:new URL(e)}static getTld(e){let n=e.split(".").slice(-2);return Ti.includes(n[0])?`.${n.join(".")}`:`.${n[n.length-1]}`}static getRootDomain(e){let n=t.createOrReturnURL(e).hostname,o=t.getTld(n).split(".");return n.split(".").slice(-o.length).join(".")}static filterRelevantLines(e,n,a){if(n.length===0)return e.slice(0,a*2+1);let o=3,i=new Set;return n=n.sort((r,l)=>(r.lineNumber||0)-(l.lineNumber||0)),n.forEach(({lineNumber:r})=>{let l=r-a,c=r+a;for(;l<1;)l++,c++;i.has(l-o-1)&&(l-=o);for(let g=l;g<=c;g++){let u=g;i.add(u)}}),e.filter(r=>i.has(r.lineNumber))}};var St=0,w=class t{static i18n=null;static strings={};static reportJson=null;static apply(e){t.strings={...Je,...e.providedStrings},t.i18n=e.i18n,t.reportJson=e.reportJson}static getUniqueSuffix(){return St++}static resetUniqueSuffix(){St=0}};var At="data:image/jpeg;base64,";function Pt(t){t.configSettings.locale||(t.configSettings.locale="en"),t.configSettings.formFactor||(t.configSettings.formFactor=t.configSettings.emulatedFormFactor),t.finalDisplayedUrl=j.getFinalDisplayedUrl(t),t.mainDocumentUrl=j.getMainDocumentUrl(t);for(let a of Object.values(t.audits))if((a.scoreDisplayMode==="not_applicable"||a.scoreDisplayMode==="not-applicable")&&(a.scoreDisplayMode="notApplicable"),a.details){if((a.details.type===void 0||a.details.type==="diagnostic")&&(a.details.type="debugdata"),a.details.type==="filmstrip")for(let o of a.details.items)o.data.startsWith(At)||(o.data=At+o.data);if(a.details.type==="table")for(let o of a.details.headings){let{itemType:i,text:r}=o;i!==void 0&&(o.valueType=i,delete o.itemType),r!==void 0&&(o.label=r,delete o.text);let l=o.subItemsHeading?.itemType;o.subItemsHeading&&l!==void 0&&(o.subItemsHeading.valueType=l,delete o.subItemsHeading.itemType)}if(a.id==="third-party-summary"&&(a.details.type==="opportunity"||a.details.type==="table")){let{headings:o,items:i}=a.details;if(o[0].valueType==="link"){o[0].valueType="text";for(let r of i)typeof r.entity=="object"&&r.entity.type==="link"&&(r.entity=r.entity.text);a.details.isEntityGrouped=!0}}}let[e]=t.lighthouseVersion.split(".").map(Number),n=t.categories.performance;if(e<9&&n){t.categoryGroups||(t.categoryGroups={}),t.categoryGroups.hidden={title:""};for(let a of n.auditRefs)a.group?["load-opportunities","diagnostics"].includes(a.group)&&delete a.group:a.group="hidden"}if(t.environment||(t.environment={benchmarkIndex:0,networkUserAgent:t.userAgent,hostUserAgent:t.userAgent}),t.configSettings.screenEmulation||(t.configSettings.screenEmulation={width:-1,height:-1,deviceScaleFactor:-1,mobile:/mobile/i.test(t.environment.hostUserAgent),disabled:!1}),t.i18n||(t.i18n={}),t.audits["full-page-screenshot"]){let a=t.audits["full-page-screenshot"].details;a?t.fullPageScreenshot={screenshot:a.screenshot,nodes:a.nodes}:t.fullPageScreenshot=null,delete t.audits["full-page-screenshot"]}}var oe=j.RATINGS,R=class t{static prepareReportResult(e){let n=JSON.parse(JSON.stringify(e));Pt(n);for(let o of Object.values(n.audits))o.details&&(o.details.type==="opportunity"||o.details.type==="table")&&!o.details.isEntityGrouped&&n.entities&&t.classifyEntities(n.entities,o.details);if(typeof n.categories!="object")throw new Error("No categories provided.");let a=new Map;for(let o of Object.values(n.categories))o.auditRefs.forEach(i=>{i.relevantAudits&&i.relevantAudits.forEach(r=>{let l=a.get(r)||[];l.push(i),a.set(r,l)})}),o.auditRefs.forEach(i=>{let r=n.audits[i.id];i.result=r,a.has(i.id)&&(i.relevantMetrics=a.get(i.id)),n.stackPacks&&n.stackPacks.forEach(l=>{l.descriptions[i.id]&&(i.stackPacks=i.stackPacks||[],i.stackPacks.push({title:l.title,iconDataURL:l.iconDataURL,description:l.descriptions[i.id]}))})});return n}static getUrlLocatorFn(e){let n=e.find(o=>o.valueType==="url")?.key;if(n&&typeof n=="string")return o=>{let i=o[n];if(typeof i=="string")return i};let a=e.find(o=>o.valueType==="source-location")?.key;if(a)return o=>{let i=o[a];if(typeof i=="object"&&i.type==="source-location")return i.url}}static classifyEntities(e,n){let{items:a,headings:o}=n;if(!a.length||a.some(r=>r.entity))return;let i=t.getUrlLocatorFn(o);if(i)for(let r of a){let l=i(r);if(!l)continue;let c="";try{c=j.parseURL(l).origin}catch{}if(!c)continue;let g=e.find(u=>u.origins.includes(c));g&&(r.entity=g.name)}}static getTableItemSortComparator(e){return(n,a)=>{for(let o of e){let i=n[o],r=a[o];if((typeof i!=typeof r||!["number","string"].includes(typeof i))&&console.warn(`Warning: Attempting to sort unsupported value type: ${o}.`),typeof i=="number"&&typeof r=="number"&&i!==r)return r-i;if(typeof i=="string"&&typeof r=="string"&&i!==r)return i.localeCompare(r)}return 0}}static getEmulationDescriptions(e){let n,a,o,i=e.throttling,r=w.i18n,l=w.strings;switch(e.throttlingMethod){case"provided":o=a=n=l.throttlingProvided;break;case"devtools":{let{cpuSlowdownMultiplier:h,requestLatencyMs:f}=i;n=`${r.formatNumber(h)}x slowdown (DevTools)`,a=`${r.formatMilliseconds(f)} HTTP RTT, ${r.formatKbps(i.downloadThroughputKbps)} down, ${r.formatKbps(i.uploadThroughputKbps)} up (DevTools)`,o=(()=>f===150*3.75&&i.downloadThroughputKbps===1.6*1024*.9&&i.uploadThroughputKbps===750*.9)()?l.runtimeSlow4g:l.runtimeCustom;break}case"simulate":{let{cpuSlowdownMultiplier:h,rttMs:f,throughputKbps:y}=i;n=`${r.formatNumber(h)}x slowdown (Simulated)`,a=`${r.formatMilliseconds(f)} TCP RTT, ${r.formatKbps(y)} throughput (Simulated)`,o=(()=>f===150&&y===1.6*1024)()?l.runtimeSlow4g:l.runtimeCustom;break}default:o=n=a=l.runtimeUnknown}let c=e.channel==="devtools"?!1:e.screenEmulation.disabled,g=e.channel==="devtools"?e.formFactor==="mobile":e.screenEmulation.mobile,u=l.runtimeMobileEmulation;c?u=l.runtimeNoEmulation:g||(u=l.runtimeDesktopEmulation);let v=c?void 0:`${e.screenEmulation.width}x${e.screenEmulation.height}, DPR ${e.screenEmulation.deviceScaleFactor}`;return{deviceEmulation:u,screenEmulation:v,cpuThrottling:n,networkThrottling:a,summary:o}}static showAsPassed(e){switch(e.scoreDisplayMode){case"manual":case"notApplicable":return!0;case"error":case"informative":return!1;case"numeric":case"binary":default:return Number(e.score)>=oe.PASS.minScore}}static calculateRating(e,n){if(n==="manual"||n==="notApplicable")return oe.PASS.label;if(n==="error")return oe.ERROR.label;if(e===null)return oe.FAIL.label;let a=oe.FAIL.label;return e>=oe.PASS.minScore?a=oe.PASS.label:e>=oe.AVERAGE.minScore&&(a=oe.AVERAGE.label),a}static calculateCategoryFraction(e){let n=0,a=0,o=0,i=0;for(let r of e.auditRefs){let l=t.showAsPassed(r.result);if(!(r.group==="hidden"||r.result.scoreDisplayMode==="manual"||r.result.scoreDisplayMode==="notApplicable")){if(r.result.scoreDisplayMode==="informative"){l||++o;continue}++n,i+=r.weight,l&&a++}}return{numPassed:a,numPassableAudits:n,numInformative:o,totalWeight:i}}static isPluginCategory(e){return e.startsWith("lighthouse-plugin-")}static shouldDisplayAsFraction(e){return e==="timespan"||e==="snapshot"}},Je={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 load",runtimeAnalysisWindow:"Initial page load",runtimeSingleLoadTooltip:"This data is taken from a single page load, 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"};var Ri=0;function p(t,e,n,a,o){var i,r,l={};for(r in e)r=="ref"?i=e[r]:l[r]=e[r];var c={type:t,props:l,key:n,ref:i,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--Ri,__source:o,__self:a};if(typeof t=="function"&&(i=t.defaultProps))for(r in i)l[r]===void 0&&(l[r]=i[r]);return x.vnode&&x.vnode(c),c}var xt=()=>p("svg",{width:"14",viewBox:"0 0 18 16",fill:"none",role:"img",children:p("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M0 2C0 1.17 0.67 0.5 1.5 0.5C2.33 0.5 3 1.17 3 2C3 2.83 2.33 3.5 1.5 3.5C0.67 3.5 0 2.83 0 2ZM0 8C0 7.17 0.67 6.5 1.5 6.5C2.33 6.5 3 7.17 3 8C3 8.83 2.33 9.5 1.5 9.5C0.67 9.5 0 8.83 0 8ZM1.5 12.5C0.67 12.5 0 13.18 0 14C0 14.82 0.68 15.5 1.5 15.5C2.32 15.5 3 14.82 3 14C3 13.18 2.33 12.5 1.5 12.5ZM18 15H5V13H18V15ZM5 9H18V7H5V9ZM5 3V1H18V3H5Z",fill:"currentColor"})}),qe=()=>p("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",role:"img","aria-label":"Icon representing a navigation report",children:p("circle",{cx:"8",cy:"8",r:"7",fill:"none",stroke:"currentColor","stroke-width":"2"})}),Ke=()=>p("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",role:"img","aria-label":"Icon representing a timespan report",children:[p("circle",{cx:"8",cy:"8",r:"7",fill:"none",stroke:"currentColor","stroke-width":"2"}),p("path",{d:"m 8,4 v 4 l 4,1.9999998",stroke:"currentColor","stroke-width":"1.5"})]}),Ze=()=>p("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",role:"img","aria-label":"Icon representing a snapshot report",children:p("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M 12.2038,12.2812 C 11.1212,13.3443 9.6372,14 8,14 7.81038,14 7.62281,13.9912 7.43768,13.974 L 10.3094,9 Z M 12.8925,11.4741 10.0207,6.5 H 13.811 C 13.9344,6.97943 14,7.48205 14,8 c 0,1.2947 -0.4101,2.4937 -1.1075,3.4741 z M 13.456,5.5 H 7.71135 L 9.6065,2.21749 C 11.3203,2.69259 12.7258,3.90911 13.456,5.5 Z M 8.5624,2.02601 C 8.3772,2.0088 8.1896,2 8,2 6.36282,2 4.8788,2.65572 3.79622,3.71885 L 5.69061,7.00002 Z M 3.10749,4.52594 C 2.4101,5.5063 2,6.70526 2,8 2,8.5179 2.06563,9.0206 2.18903,9.5 H 5.97927 Z M 2.54404,10.5 c 0.73017,1.5909 2.1357,2.8074 3.84949,3.2825 L 8.2887,10.5 Z M 16,8 c 0,4.4183 -3.5817,8 -8,8 C 3.58172,16 0,12.4183 0,8 0,3.58172 3.58172,0 8,0 c 4.4183,0 8,3.58172 8,8 z",fill:"currentColor"})}),Ut=()=>p("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24px",viewBox:"0 0 24 24",width:"24px",fill:"currentColor",role:"img","aria-label":"Icon representing a close action",children:[p("path",{d:"M0 0h24v24H0V0z",fill:"none"}),p("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"})]}),Lt=()=>p("svg",{width:"15",height:"12",viewBox:"0 0 15 12",fill:"none",role:"img",children:p("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.33317 2.00008H13.9998V0.666748H3.33317C2.59984 0.666748 1.99984 1.26675 1.99984 2.00008V9.33341H0.666504V11.3334H7.99984V9.33341H3.33317V2.00008ZM13.9998 3.33341H9.99984C9.63317 3.33341 9.33317 3.63341 9.33317 4.00008V10.6667C9.33317 11.0334 9.63317 11.3334 9.99984 11.3334H13.9998C14.3665 11.3334 14.6665 11.0334 14.6665 10.6667V4.00008C14.6665 3.63341 14.3665 3.33341 13.9998 3.33341ZM10.6665 9.33341H13.3332V4.66675H10.6665V9.33341Z",fill:"currentColor"})}),It=()=>p("svg",{width:"16",height:"11",viewBox:"0 0 16 11",fill:"none",role:"img",children:p("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M0.666687 3.26663L2.00002 4.59997C3.92002 2.67997 6.52669 1.87997 9.02002 2.18663L9.81335 0.399966C6.59335 -0.173367 3.16002 0.779966 0.666687 3.26663ZM10.6 0.599966C10.4867 0.599966 10.3867 0.659966 10.3267 0.753299L10.28 0.853299L6.82669 8.61996C6.72002 8.8133 6.65335 9.02663 6.65335 9.25996C6.65335 9.99996 7.25335 10.6 7.99335 10.6C8.63335 10.6 9.17335 10.1466 9.30002 9.53996L9.30669 9.51997L10.9334 0.933299C10.9334 0.746633 10.7867 0.599966 10.6 0.599966ZM15.3334 3.26663L14 4.59997C13.1867 3.78663 12.2534 3.17997 11.2534 2.76663L11.6067 0.886633C12.9667 1.38663 14.24 2.1733 15.3334 3.26663ZM11.3334 7.26663L12.6667 5.9333C12.1334 5.39997 11.5334 4.98663 10.8934 4.6733L10.5267 6.61997C10.8067 6.79997 11.08 7.0133 11.3334 7.26663ZM4.66669 7.26663L3.33335 5.9333C4.67335 4.5933 6.45335 3.95997 8.20669 4.0133L7.35335 5.9333C6.37335 6.0733 5.42002 6.5133 4.66669 7.26663Z",fill:"currentColor"})}),Et=()=>p("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",role:"img",children:p("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M15.5 7.16667V5.5H13.8333V3.83333C13.8333 2.91667 13.0833 2.16667 12.1667 2.16667H10.5V0.5H8.83333V2.16667H7.16667V0.5H5.5V2.16667H3.83333C2.91667 2.16667 2.16667 2.91667 2.16667 3.83333V5.5H0.5V7.16667H2.16667V8.83333H0.5V10.5H2.16667V12.1667C2.16667 13.0833 2.91667 13.8333 3.83333 13.8333H5.5V15.5H7.16667V13.8333H8.83333V15.5H10.5V13.8333H12.1667C13.0833 13.8333 13.8333 13.0833 13.8333 12.1667V10.5H15.5V8.83333H13.8333V7.16667H15.5ZM10.5 5.5H5.5V10.5H10.5V5.5ZM3.83333 12.1667H12.1667V3.83333H3.83333V12.1667Z",fill:"currentColor"})}),Tt=()=>p("svg",{viewBox:"0 0 18 12",width:"18",height:"12",role:"img",children:[p("rect",{width:"18",height:"2",fill:"currentColor"}),p("rect",{y:"5",width:"18",height:"2",fill:"currentColor"}),p("rect",{y:"10",width:"18",height:"2",fill:"currentColor"})]}),Rt=()=>p("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:p("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M13 7C13 10.3137 10.3137 13 7 13C3.68629 13 1 10.3137 1 7C1 3.68629 3.68629 1 7 1C10.3137 1 13 3.68629 13 7ZM14 7C14 10.866 10.866 14 7 14C3.13401 14 0 10.866 0 7C0 3.13401 3.13401 0 7 0C10.866 0 14 3.13401 14 7ZM7.66658 11H6.33325V9.66667H7.66658V11ZM4.33325 5.66667C4.33325 4.19333 5.52659 3 6.99992 3C8.47325 3 9.66658 4.19333 9.66658 5.66667C9.66658 6.52194 9.1399 6.98221 8.62709 7.43036C8.1406 7.85551 7.66658 8.26975 7.66658 9H6.33325C6.33325 7.78582 6.96133 7.30439 7.51355 6.88112C7.94674 6.54907 8.33325 6.25281 8.33325 5.66667C8.33325 4.93333 7.73325 4.33333 6.99992 4.33333C6.26658 4.33333 5.66658 4.93333 5.66658 5.66667H4.33325Z",fill:"currentColor"})});var bn=ke(void 0),yn=ke({});function Nt(t){return new URLSearchParams(location.hash.replace("#","?")).get(t)}function fe(...t){let e=[];for(let n of t){if(!n)continue;if(typeof n=="string"){e.push(n);continue}let a=Object.entries(n).filter(([o,i])=>i).map(([o])=>o);e.push(...a)}return e.join(" ")}function zt(t){let{width:e,height:n}=t.configSettings.screenEmulation;return{width:e,height:n}}function Dt(t){let e=t.audits["screenshot-thumbnails"];return e&&e.details&&e.details.type==="filmstrip"&&e.details.items||void 0}function Xe(t,e){switch(t){case"navigation":return e.navigationDescription;case"timespan":return e.timespanDescription;case"snapshot":return e.snapshotDescription}}function K(){let t=Ae(bn);if(!t)throw Error("useFlowResult must be called in the FlowResultContext");return t}function Ni(...t){let[e,n]=se(t.map(Nt));return Ge(()=>{function a(){let o=t.map(Nt);o.every((i,r)=>i===e[r])||n(o)}return window.addEventListener("hashchange",a),()=>window.removeEventListener("hashchange",a)},[e]),e}function ve(){let t=K(),[e,n]=Ni("index","anchor");return ae(()=>{if(!e)return null;let a=Number(e);if(!Number.isFinite(a))return console.warn(`Invalid hash index: ${e}`),null;let o=t.steps[a];return o?{currentLhr:o.lhr,index:a,anchor:n}:(console.warn(`No flow step at index ${a}`),null)},[e,t,n])}function le(t,e){let n=Ve(null);return We(()=>{if(!n.current)return;let a=t();return n.current.append(a),()=>{n.current?.contains(a)&&n.current.removeChild(a)}},e),n}function jt(){return Ae(yn)}var zi=500,Y=()=>p("div",{className:"Separator",role:"separator"}),_n=({mode:t})=>p(G,{children:[t==="navigation"&&p(qe,{}),t==="timespan"&&p(Ke,{}),t==="snapshot"&&p(Ze,{})]}),pe=({mode:t})=>p("div",{className:"FlowSegment",children:[p("div",{className:"FlowSegment__top-line"}),t&&p(_n,{mode:t}),p("div",{className:"FlowSegment__bottom-line"})]}),Di=({frames:t,width:e,height:n})=>{let[a,o]=se(0),i=a%t.length;return Ge(()=>{let r=setInterval(()=>o(l=>(l+1)%t.length),zi);return()=>clearInterval(r)},[t.length]),p("img",{className:"FlowStepThumbnail","data-testid":"FlowStepAnimatedThumbnail",src:t[i].data,style:{width:e,height:n},alt:"Animated screenshots of a page tested by Lighthouse"})},Ye=({lhr:t,width:e,height:n})=>{let a=Dt(t),o=zt(t);if(e&&n===void 0?n=o.height*e/o.width:n&&e===void 0&&(e=o.width*n/o.height),!e||!n)return console.warn(new Error("FlowStepThumbnail requested without any dimensions").stack),p(G,{});let i;if(a?.length){if(i=a[a.length-1].data,t.gatherMode==="timespan")return p(Di,{frames:a,width:e,height:n})}else i=j.getFullPageScreenshot(t)?.screenshot.data;return p(G,{children:i&&p("img",{className:"FlowStepThumbnail",src:i,style:{width:e,height:n},alt:"Screenshot of a page tested by Lighthouse"})})};var Ft=function(){"use strict";function t(a,o){function i(){this.constructor=a}i.prototype=o.prototype,a.prototype=new i}function e(a,o,i,r){this.message=a,this.expected=o,this.found=i,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,e)}t(e,Error),e.buildMessage=function(a,o){var i={literal:function(h){return'"'+l(h.text)+'"'},class:function(h){var f="",y;for(y=0;y<h.parts.length;y++)f+=h.parts[y]instanceof Array?c(h.parts[y][0])+"-"+c(h.parts[y][1]):c(h.parts[y]);return"["+(h.inverted?"^":"")+f+"]"},any:function(h){return"any character"},end:function(h){return"end of input"},other:function(h){return h.description}};function r(h){return h.charCodeAt(0).toString(16).toUpperCase()}function l(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(f){return"\\x0"+r(f)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(f){return"\\x"+r(f)})}function c(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(f){return"\\x0"+r(f)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(f){return"\\x"+r(f)})}function g(h){return i[h.type](h)}function u(h){var f=new Array(h.length),y,S;for(y=0;y<h.length;y++)f[y]=g(h[y]);if(f.sort(),f.length>0){for(y=1,S=1;y<f.length;y++)f[y-1]!==f[y]&&(f[S]=f[y],S++);f.length=S}switch(f.length){case 1:return f[0];case 2:return f[0]+" or "+f[1];default:return f.slice(0,-1).join(", ")+", or "+f[f.length-1]}}function v(h){return h?'"'+l(h)+'"':"end of input"}return"Expected "+u(a)+" but "+v(o)+" found."};function n(a,o){o=o!==void 0?o:{};var i={},r={start:Gn},l=Gn,c=function(s){return{type:"messageFormatPattern",elements:s,location:te()}},g=function(s){return s.reduce(function(d,b){return d.concat(b)},[]).join("")},u=function(s){return{type:"messageTextElement",value:s,location:te()}},v=function(s){return s.join("")},h="{",f=$("{",!1),y=",",S=$(",",!1),k="}",C=$("}",!1),I=function(s,d){return{type:"argumentElement",id:s,format:d&&d[2],location:te()}},L="number",T=$("number",!1),N="date",M=$("date",!1),H="time",V=$("time",!1),O=function(s,d){return{type:s+"Format",style:d&&d[2],location:te()}},B="plural",J=$("plural",!1),X=function(s){return{type:s.type,ordinal:!1,offset:s.offset||0,options:s.options,location:te()}},Z="selectordinal",xa=$("selectordinal",!1),Ua=function(s){return{type:s.type,ordinal:!0,offset:s.offset||0,options:s.options,location:te()}},In="select",La=$("select",!1),Ia=function(s){return{type:"selectFormat",options:s,location:te()}},Ea="=",Ta=$("=",!1),Ra=function(s,d){return{type:"optionalFormatPattern",selector:s,value:d,location:te()}},En="offset:",Na=$("offset:",!1),za=function(s){return s},Da=function(s,d){return{type:"pluralFormat",offset:s,options:d,location:te()}},ja=pn("whitespace"),Tn=/^[ \t\n\r]/,Rn=me([" "," ",`
|
|
2
2
|
`,"\r"],!1,!1),Fa=pn("optionalWhitespace"),Ma=/^[0-9]/,Ha=me([["0","9"]],!1,!1),Oa=/^[0-9a-f]/i,Ba=me([["0","9"],["a","f"]],!1,!0),$a="0",Ga=$("0",!1),Wa=/^[1-9]/,Va=me([["1","9"]],!1,!1),Ja=function(s){return parseInt(s,10)},Le="'",Ie=$("'",!1),Nn=/^[ \t\n\r,.+={}#]/,zn=me([" "," ",`
|
|
3
3
|
`,"\r",",",".","+","=","{","}","#"],!1,!1),qa=li(),Ka=function(s){return s},Dn=function(s){return s},Za=/^[^{}\\\0-\x1F\x7F \t\n\r]/,Xa=me(["{","}","\\",["\0",""],""," "," ",`
|
|
4
|
-
`,"\r"],!0,!1),jn="\\\\",Ya=$("\\\\",!1),Qa=function(){return"\\"},Fn="\\#",ei=$("\\#",!1),ni=function(){return"\\#"},Mn="\\{",ti=$("\\{",!1),ai=function(){return"{"},Hn="\\}",ii=$("\\}",!1),oi=function(){return"}"},On="\\u",ri=$("\\u",!1),si=function(s){return String.fromCharCode(parseInt(s,16))},m=0,z=0,Ee=[{line:1,column:1}],Q=0,ln=[],U=0,Te;if("startRule"in o){if(!(o.startRule in r))throw new Error(`Can't start parsing from rule "`+o.startRule+'".');l=r[o.startRule]}function ar(){return a.substring(z,m)}function te(){return Ce(z,m)}function ir(s,d){throw d=d!==void 0?d:Ce(z,m),$n([pn(s)],a.substring(z,m),d)}function or(s,d){throw d=d!==void 0?d:Ce(z,m),ui(s,d)}function $(s,d){return{type:"literal",text:s,ignoreCase:d}}function me(s,d,b){return{type:"class",parts:s,inverted:d,ignoreCase:b}}function li(){return{type:"any"}}function pi(){return{type:"end"}}function pn(s){return{type:"other",description:s}}function Bn(s){var d=Ee[s],b;if(d)return d;for(b=s-1;!Ee[b];)b--;for(d=Ee[b],d={line:d.line,column:d.column};b<s;)a.charCodeAt(b)===10?(d.line++,d.column=1):d.column++,b++;return Ee[s]=d,d}function Ce(s,d){var b=Bn(s),_=Bn(d);return{start:{offset:s,line:b.line,column:b.column},end:{offset:d,line:_.line,column:_.column}}}function E(s){m<Q||(m>Q&&(Q=m,ln=[]),ln.push(s))}function ui(s,d){return new e(s,null,null,d)}function $n(s,d,b){return new e(e.buildMessage(s,d),s,d,b)}function Gn(){var s;return s=Wn(),s}function Wn(){var s,d,b;for(s=m,d=[],b=Vn();b!==i;)d.push(b),b=Vn();return d!==i&&(z=s,d=c(d)),s=d,s}function Vn(){var s;return s=di(),s===i&&(s=gi()),s}function ci(){var s,d,b,_,P,A;if(s=m,d=[],b=m,_=F(),_!==i?(P=ze(),P!==i?(A=F(),A!==i?(_=[_,P,A],b=_):(m=b,b=i)):(m=b,b=i)):(m=b,b=i),b!==i)for(;b!==i;)d.push(b),b=m,_=F(),_!==i?(P=ze(),P!==i?(A=F(),A!==i?(_=[_,P,A],b=_):(m=b,b=i)):(m=b,b=i)):(m=b,b=i);else d=i;return d!==i&&(z=s,d=g(d)),s=d,s===i&&(s=m,d=un(),d!==i?s=a.substring(s,m):s=d),s}function di(){var s,d;return s=m,d=ci(),d!==i&&(z=s,d=u(d)),s=d,s}function mi(){var s,d,b;if(s=cn(),s===i){for(s=m,d=[],b=Kn();b!==i;)d.push(b),b=Kn();d!==i&&(z=s,d=v(d)),s=d}return s}function gi(){var s,d,b,_,P,A,D,ee,dn;return s=m,a.charCodeAt(m)===123?(d=h,m++):(d=i,U===0&&E(f)),d!==i?(b=F(),b!==i?(_=mi(),_!==i?(P=F(),P!==i?(A=m,a.charCodeAt(m)===44?(D=y,m++):(D=i,U===0&&E(S)),D!==i?(ee=F(),ee!==i?(dn=hi(),dn!==i?(D=[D,ee,dn],A=D):(m=A,A=i)):(m=A,A=i)):(m=A,A=i),A===i&&(A=null),A!==i?(D=F(),D!==i?(a.charCodeAt(m)===125?(ee=k,m++):(ee=i,U===0&&E(C)),ee!==i?(z=s,d=I(_,A),s=d):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i),s}function hi(){var s;return s=fi(),s===i&&(s=vi(),s===i&&(s=bi(),s===i&&(s=yi()))),s}function fi(){var s,d,b,_,P,A,D;return s=m,a.substr(m,6)===L?(d=L,m+=6):(d=i,U===0&&E(T)),d===i&&(a.substr(m,4)===N?(d=N,m+=4):(d=i,U===0&&E(M)),d===i&&(a.substr(m,4)===H?(d=H,m+=4):(d=i,U===0&&E(V)))),d!==i?(b=F(),b!==i?(_=m,a.charCodeAt(m)===44?(P=y,m++):(P=i,U===0&&E(S)),P!==i?(A=F(),A!==i?(D=ze(),D!==i?(P=[P,A,D],_=P):(m=_,_=i)):(m=_,_=i)):(m=_,_=i),_===i&&(_=null),_!==i?(z=s,d=O(d,_),s=d):(m=s,s=i)):(m=s,s=i)):(m=s,s=i),s}function vi(){var s,d,b,_,P,A;return s=m,a.substr(m,6)===B?(d=B,m+=6):(d=i,U===0&&E(J)),d!==i?(b=F(),b!==i?(a.charCodeAt(m)===44?(_=y,m++):(_=i,U===0&&E(S)),_!==i?(P=F(),P!==i?(A=Jn(),A!==i?(z=s,d=X(A),s=d):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i),s}function bi(){var s,d,b,_,P,A;return s=m,a.substr(m,13)===Z?(d=Z,m+=13):(d=i,U===0&&E(xa)),d!==i?(b=F(),b!==i?(a.charCodeAt(m)===44?(_=y,m++):(_=i,U===0&&E(S)),_!==i?(P=F(),P!==i?(A=Jn(),A!==i?(z=s,d=Ua(A),s=d):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i),s}function yi(){var s,d,b,_,P,A,D;if(s=m,a.substr(m,6)===In?(d=In,m+=6):(d=i,U===0&&E(La)),d!==i)if(b=F(),b!==i)if(a.charCodeAt(m)===44?(_=y,m++):(_=i,U===0&&E(S)),_!==i)if(P=F(),P!==i){if(A=[],D=Re(),D!==i)for(;D!==i;)A.push(D),D=Re();else A=i;A!==i?(z=s,d=Ia(A),s=d):(m=s,s=i)}else m=s,s=i;else m=s,s=i;else m=s,s=i;else m=s,s=i;return s}function _i(){var s,d,b,_;return s=m,d=m,a.charCodeAt(m)===61?(b=Ea,m++):(b=i,U===0&&E(Ta)),b!==i?(_=cn(),_!==i?(b=[b,_],d=b):(m=d,d=i)):(m=d,d=i),d!==i?s=a.substring(s,m):s=d,s===i&&(s=ze()),s}function Re(){var s,d,b,_,P,A,D;return s=m,d=F(),d!==i?(b=_i(),b!==i?(_=F(),_!==i?(a.charCodeAt(m)===123?(P=h,m++):(P=i,U===0&&E(f)),P!==i?(A=Wn(),A!==i?(a.charCodeAt(m)===125?(D=k,m++):(D=i,U===0&&E(C)),D!==i?(z=s,d=Ra(b,A),s=d):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i),s}function Ci(){var s,d,b,_;return s=m,a.substr(m,7)===En?(d=En,m+=7):(d=i,U===0&&E(Na)),d!==i?(b=F(),b!==i?(_=cn(),_!==i?(z=s,d=za(_),s=d):(m=s,s=i)):(m=s,s=i)):(m=s,s=i),s}function Jn(){var s,d,b,_,P;if(s=m,d=Ci(),d===i&&(d=null),d!==i)if(b=F(),b!==i){if(_=[],P=Re(),P!==i)for(;P!==i;)_.push(P),P=Re();else _=i;_!==i?(z=s,d=Da(d,_),s=d):(m=s,s=i)}else m=s,s=i;else m=s,s=i;return s}function un(){var s,d;if(U++,s=[],Tn.test(a.charAt(m))?(d=a.charAt(m),m++):(d=i,U===0&&E(Rn)),d!==i)for(;d!==i;)s.push(d),Tn.test(a.charAt(m))?(d=a.charAt(m),m++):(d=i,U===0&&E(Rn));else s=i;return U--,s===i&&(d=i,U===0&&E(ja)),s}function F(){var s,d,b;for(U++,s=m,d=[],b=un();b!==i;)d.push(b),b=un();return d!==i?s=a.substring(s,m):s=d,U--,s===i&&(d=i,U===0&&E(Fa)),s}function qn(){var s;return Ma.test(a.charAt(m))?(s=a.charAt(m),m++):(s=i,U===0&&E(Ha)),s}function Ne(){var s;return Oa.test(a.charAt(m))?(s=a.charAt(m),m++):(s=i,U===0&&E(Ba)),s}function cn(){var s,d,b,_,P,A;if(s=m,a.charCodeAt(m)===48?(d=$a,m++):(d=i,U===0&&E(Ga)),d===i){if(d=m,b=m,Wa.test(a.charAt(m))?(_=a.charAt(m),m++):(_=i,U===0&&E(Va)),_!==i){for(P=[],A=qn();A!==i;)P.push(A),A=qn();P!==i?(_=[_,P],b=_):(m=b,b=i)}else m=b,b=i;b!==i?d=a.substring(d,m):d=b}return d!==i&&(z=s,d=Ja(d)),s=d,s}function Kn(){var s,d,b;return s=m,d=m,U++,a.charCodeAt(m)===39?(b=Le,m++):(b=i,U===0&&E(Ie)),b===i&&(Nn.test(a.charAt(m))?(b=a.charAt(m),m++):(b=i,U===0&&E(zn))),U--,b===i?d=void 0:(m=d,d=i),d!==i?(a.length>m?(b=a.charAt(m),m++):(b=i,U===0&&E(qa)),b!==i?(z=s,d=Ka(b),s=d):(m=s,s=i)):(m=s,s=i),s===i&&(s=m,a.charCodeAt(m)===39?(d=Le,m++):(d=i,U===0&&E(Ie)),d!==i?(b=wi(),b!==i?(z=s,d=Dn(b),s=d):(m=s,s=i)):(m=s,s=i)),s}function Zn(){var s;return a.charCodeAt(m)===39?(s=Le,m++):(s=i,U===0&&E(Ie)),s}function wi(){var s;return Nn.test(a.charAt(m))?(s=a.charAt(m),m++):(s=i,U===0&&E(zn)),s===i&&(s=Zn()),s}function Xn(){var s,d,b,_,P,A,D,ee;return s=m,a.charCodeAt(m)===39?(d=Le,m++):(d=i,U===0&&E(Ie)),d!==i?(b=Zn(),b!==i?(z=s,d=Dn(b),s=d):(m=s,s=i)):(m=s,s=i),s===i&&(Za.test(a.charAt(m))?(s=a.charAt(m),m++):(s=i,U===0&&E(Xa)),s===i&&(s=m,a.substr(m,2)===jn?(d=jn,m+=2):(d=i,U===0&&E(Ya)),d!==i&&(z=s,d=Qa()),s=d,s===i&&(s=m,a.substr(m,2)===Fn?(d=Fn,m+=2):(d=i,U===0&&E(ei)),d!==i&&(z=s,d=ni()),s=d,s===i&&(s=m,a.substr(m,2)===Mn?(d=Mn,m+=2):(d=i,U===0&&E(ti)),d!==i&&(z=s,d=ai()),s=d,s===i&&(s=m,a.substr(m,2)===Hn?(d=Hn,m+=2):(d=i,U===0&&E(ii)),d!==i&&(z=s,d=oi()),s=d,s===i&&(s=m,a.substr(m,2)===On?(d=On,m+=2):(d=i,U===0&&E(ri)),d!==i?(b=m,_=m,P=Ne(),P!==i?(A=Ne(),A!==i?(D=Ne(),D!==i?(ee=Ne(),ee!==i?(P=[P,A,D,ee],_=P):(m=_,_=i)):(m=_,_=i)):(m=_,_=i)):(m=_,_=i),_!==i?b=a.substring(b,m):b=_,b!==i?(z=s,d=si(b),s=d):(m=s,s=i)):(m=s,s=i))))))),s}function ze(){var s,d,b;if(s=m,d=[],b=Xn(),b!==i)for(;b!==i;)d.push(b),b=Xn();else d=i;return d!==i&&(z=s,d=v(d)),s=d,s}if(Te=l(),Te!==i&&m===a.length)return Te;throw Te!==i&&m<a.length&&E(pi()),$n(ln,Q<a.length?a.charAt(Q):null,Q<a.length?Ce(Q,Q+1):Ce(Q,Q))}return{SyntaxError:e,parse:n}}();var Mt=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,o){a.__proto__=o}||function(a,o){for(var i in o)o.hasOwnProperty(i)&&(a[i]=o[i])},t(e,n)};return function(e,n){t(e,n);function a(){this.constructor=e}e.prototype=n===null?Object.create(n):(a.prototype=n.prototype,new a)}}(),ji=function(){function t(e,n,a){this.locales=[],this.formats={number:{},date:{},time:{}},this.pluralNumberFormat=null,this.currentPlural=null,this.pluralStack=[],this.locales=e,this.formats=n,this.formatters=a}return t.prototype.compile=function(e){return this.pluralStack=[],this.currentPlural=null,this.pluralNumberFormat=null,this.compileMessage(e)},t.prototype.compileMessage=function(e){var n=this;if(!(e&&e.type==="messageFormatPattern"))throw new Error('Message AST is not of type: "messageFormatPattern"');var a=e.elements,o=a.filter(function(i){return i.type==="messageTextElement"||i.type==="argumentElement"}).map(function(i){return i.type==="messageTextElement"?n.compileMessageText(i):n.compileArgument(i)});if(o.length!==a.length)throw new Error("Message element does not have a valid type");return o},t.prototype.compileMessageText=function(e){return this.currentPlural&&/(^|[^\\])#/g.test(e.value)?(this.pluralNumberFormat||(this.pluralNumberFormat=new Intl.NumberFormat(this.locales)),new Hi(this.currentPlural.id,this.currentPlural.format.offset,this.pluralNumberFormat,e.value)):e.value.replace(/\\#/g,"#")},t.prototype.compileArgument=function(e){var n=e.format,a=e.id,o=this.formatters;if(!n)return new Fi(a);var i=this,r=i.formats,l=i.locales;switch(n.type){case"numberFormat":return{id:a,format:o.getNumberFormat(l,r.number[n.style]).format};case"dateFormat":return{id:a,format:o.getDateTimeFormat(l,r.date[n.style]).format};case"timeFormat":return{id:a,format:o.getDateTimeFormat(l,r.time[n.style]).format};case"pluralFormat":return new Mi(a,n.offset,this.compileOptions(e),o.getPluralRules(l,{type:n.ordinal?"ordinal":"cardinal"}));case"selectFormat":return new Oi(a,this.compileOptions(e));default:throw new Error("Message element does not have a valid format type")}},t.prototype.compileOptions=function(e){var n=this,a=e.format,o=a.options;this.pluralStack.push(this.currentPlural),this.currentPlural=a.type==="pluralFormat"?e:null;var i=o.reduce(function(r,l){return r[l.selector]=n.compileMessage(l.value),r},{});return this.currentPlural=this.pluralStack.pop(),i},t}(),Ht=ji,Ot=function(){function t(e){this.id=e}return t}(),Fi=function(t){Mt(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.format=function(n){return!n&&typeof n!="number"?"":typeof n=="string"?n:String(n)},e}(Ot),Mi=function(){function t(e,n,a,o){this.id=e,this.offset=n,this.options=a,this.pluralRules=o}return t.prototype.getOption=function(e){var n=this.options,a=n["="+e]||n[this.pluralRules.select(e-this.offset)];return a||n.other},t}(),Hi=function(t){Mt(e,t);function e(n,a,o,i){var r=t.call(this,n)||this;return r.offset=a,r.numberFormat=o,r.string=i,r}return e.prototype.format=function(n){var a=this.numberFormat.format(n-this.offset);return this.string.replace(/(^|[^\\])#/g,"$1"+a).replace(/\\#/g,"#")},e}(Ot);var Oi=function(){function t(e,n){this.id=e,this.options=n}return t.prototype.getOption=function(e){var n=this.options;return n[e]||n.other},t}();function Bt(t){return!!t.options}var Bi=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,o){a.__proto__=o}||function(a,o){for(var i in o)o.hasOwnProperty(i)&&(a[i]=o[i])},t(e,n)};return function(e,n){t(e,n);function a(){this.constructor=e}e.prototype=n===null?Object.create(n):(a.prototype=n.prototype,new a)}}(),Pe=function(){return Pe=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o])}return t},Pe.apply(this,arguments)};function $i(t){typeof t=="string"&&(t=[t]);try{return Intl.NumberFormat.supportedLocalesOf(t,{localeMatcher:"best fit"})[0]}catch{return Gt.defaultLocale}}function $t(t,e){for(var n="",a=0,o=t;a<o.length;a++){var i=o[a];if(typeof i=="string"){n+=i;continue}var r=i.id;if(!(e&&r in e))throw new Vi("A value must be provided for: "+r,r);var l=e[r];Bt(i)?n+=$t(i.getOption(l),e):n+=i.format(l)}return n}function Gi(t,e){return e?Pe({},t||{},e||{},Object.keys(t).reduce(function(n,a){return n[a]=Pe({},t[a],e[a]||{}),n},{})):t}function Wi(t,e){return e?Object.keys(t).reduce(function(n,a){return n[a]=Gi(t[a],e[a]),n},Pe({},t)):t}var Vi=function(t){Bi(e,t);function e(n,a){var o=t.call(this,n)||this;return o.variableId=a,o}return e}(Error);function Ji(){return{getNumberFormat:function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return new((t=Intl.NumberFormat).bind.apply(t,[void 0].concat(e)))},getDateTimeFormat:function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return new((t=Intl.DateTimeFormat).bind.apply(t,[void 0].concat(e)))},getPluralRules:function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return new((t=Intl.PluralRules).bind.apply(t,[void 0].concat(e)))}}}var Gt=function(){function t(e,n,a,o){var i=this;if(n===void 0&&(n=t.defaultLocale),this.format=function(c){try{return $t(i.pattern,c)}catch(g){throw g.variableId?new Error("The intl string context variable '"+g.variableId+"' was not provided to the string '"+i.message+"'"):g}},typeof e=="string"){if(!t.__parse)throw new TypeError("IntlMessageFormat.__parse must be set to process `message` of type `string`");this.ast=t.__parse(e)}else this.ast=e;if(this.message=e,!(this.ast&&this.ast.type==="messageFormatPattern"))throw new TypeError("A message must be provided as a String or AST.");var r=Wi(t.formats,a);this.locale=$i(n||[]);var l=o&&o.formatters||Ji();this.pattern=new Ht(n,r,l).compile(this.ast)}return t.prototype.resolvedOptions=function(){return{locale:this.locale}},t.prototype.getAst=function(){return this.ast},t.defaultLocale="en",t.__parse=void 0,t.formats={number:{currency:{style:"currency"},percent:{style:"percent"}},date:{short:{month:"numeric",day:"numeric",year:"2-digit"},medium:{month:"short",day:"numeric",year:"numeric"},long:{month:"long",day:"numeric",year:"numeric"},full:{weekday:"long",month:"long",day:"numeric",year:"numeric"}},time:{short:{hour:"numeric",minute:"numeric"},medium:{hour:"numeric",minute:"numeric",second:"numeric"},long:{hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"},full:{hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}}},t}();var Cn=Gt;Cn.__parse=Ft.parse;var Wt=Cn;var Yr=["ar-XB.json","ar.json","bg.json","ca.json","cs.json","da.json","de.json","el.json","en-GB.json","en-US.json","en-XA.json","en-XL.json","es-419.json","es.json","fi.json","fil.json","fr.json","he.json","hi.json","hr.json","hu.json","id.json","it.json","ja.json","ko.json","lt.json","lv.json","nl.json","no.json","pl.json","pt-PT.json","pt.json","ro.json","ru.json","sk.json","sl.json","sr-Latn.json","sr.json","sv.json","ta.json","te.json","th.json","tr.json","uk.json","vi.json","zh-HK.json","zh-TW.json","zh.json"].filter(t=>t.endsWith(".json")&&!t.endsWith(".ctc.json")).map(t=>t.replace(".json","")).sort();var qi={number:{bytes:{maximumFractionDigits:0},milliseconds:{maximumFractionDigits:0},seconds:{minimumFractionDigits:1,maximumFractionDigits:1},extendedPercent:{maximumFractionDigits:2,style:"percent"}}};function Vt(t,e=new Map){for(let n of t)if(n.type==="argumentElement"&&(e.set(n.id,n),!(!n.format||n.format.type!=="pluralFormat")))for(let a of n.format.options)Vt(a.value.elements,e);return e}function Ki(t,e={},n){let o=[...Vt(t.getAst().elements).values()],i={};for(let{id:r,format:l}of o){if(r&&!(r in e))throw new Error(`ICU Message "${n}" contains a value reference ("${r}") that wasn't provided`);let c=e[r];if(!l||l.type!=="numberFormat"){i[r]=c;continue}if(typeof c!="number")throw new Error(`ICU Message "${n}" contains a numeric reference ("${r}") but provided value was not a number`);l.style==="milliseconds"?i[r]=Math.round(c/10)*10:l.style==="seconds"&&r==="timeInMs"?i[r]=Math.round(c/100)/10:l.style==="bytes"?i[r]=c/1024:i[r]=c}for(let r of Object.keys(e))if(!(r in i)){if(r==="errorCode"){i.errorCode=e.errorCode;continue}throw new Error(`Provided value "${r}" does not match any placeholder in ICU message "${n}"`)}return i}function Jt(t,e,n){if(!t.includes("{")&&e===void 0)return t;let a=n==="en-XA"||n==="en-XL"?"de-DE":n,o=new Wt(t,a,qi),i=Ki(o,e,t);return o.format(i)}var wn=" ";var de=class{constructor(e){e==="en-XA"&&(e="de"),this._locale=e,this._cachedNumberFormatters=new Map}_formatNumberWithGranularity(e,n,a={}){if(n!==void 0){let r=-Math.log10(n);Number.isInteger(r)||(console.warn(`granularity of ${n} is invalid. Using 1 instead`),n=1),n<1&&(a={...a},a.minimumFractionDigits=a.maximumFractionDigits=Math.ceil(r)),e=Math.round(e/n)*n,Object.is(e,-0)&&(e=0)}else Math.abs(e)<5e-4&&(e=0);let o,i=[a.minimumFractionDigits,a.maximumFractionDigits,a.style,a.unit,a.unitDisplay,this._locale].join("");return o=this._cachedNumberFormatters.get(i),o||(o=new Intl.NumberFormat(this._locale,a),this._cachedNumberFormatters.set(i,o)),o.format(e).replace(" ",wn)}formatNumber(e,n){return this._formatNumberWithGranularity(e,n)}formatInteger(e){return this._formatNumberWithGranularity(e,1)}formatPercent(e){return new Intl.NumberFormat(this._locale,{style:"percent"}).format(e)}formatBytesToKiB(e,n=void 0){return this._formatNumberWithGranularity(e/1024,n)+`${wn}KiB`}formatBytesToMiB(e,n=void 0){return this._formatNumberWithGranularity(e/1048576,n)+`${wn}MiB`}formatBytes(e,n=1){return this._formatNumberWithGranularity(e,n,{style:"unit",unit:"byte",unitDisplay:"long"})}formatBytesWithBestUnit(e,n=void 0){return e>=1048576?this.formatBytesToMiB(e,n):e>=1024?this.formatBytesToKiB(e,n):this._formatNumberWithGranularity(e,n,{style:"unit",unit:"byte",unitDisplay:"narrow"})}formatKbps(e,n=void 0){return this._formatNumberWithGranularity(e,n,{style:"unit",unit:"kilobit-per-second",unitDisplay:"short"})}formatMilliseconds(e,n=void 0){return this._formatNumberWithGranularity(e,n,{style:"unit",unit:"millisecond",unitDisplay:"short"})}formatSeconds(e,n=void 0){return this._formatNumberWithGranularity(e/1e3,n,{style:"unit",unit:"second",unitDisplay:"narrow"})}formatDateTime(e){let n={month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",timeZoneName:"short"},a;try{a=new Intl.DateTimeFormat(this._locale,n)}catch{n.timeZone="UTC",a=new Intl.DateTimeFormat(this._locale,n)}return a.format(new Date(e))}formatDuration(e){let n=e/1e3;if(Math.round(n)===0)return"None";let a=[],o={day:60*60*24,hour:60*60,minute:60,second:1};return Object.keys(o).forEach(i=>{let r=o[i],l=Math.floor(n/r);if(l>0){n-=l*r;let c=this._formatNumberWithGranularity(l,1,{style:"unit",unit:i,unitDisplay:"narrow"});a.push(c)}}),a.join(" ")}};var kn={navigationDescription:"Page load",timespanDescription:"User interactions",snapshotDescription:"Captured state of page",navigationLongDescription:"Navigation reports analyze a single page load, exactly like the original Lighthouse reports.",timespanLongDescription:"Timespan reports analyze an arbitrary period of time, typically containing user interactions.",snapshotLongDescription:"Snapshot reports analyze the page in a particular state, typically after user interactions.",navigationReport:"Navigation report",timespanReport:"Timespan report",snapshotReport:"Snapshot report",summary:"Summary",allReports:"All Reports",title:"Lighthouse User Flow Report",categories:"Categories",categoryPerformance:"Performance",categoryAccessibility:"Accessibility",categoryBestPractices:"Best Practices",categorySeo:"SEO",categoryProgressiveWebApp:"Progressive Web App",desktop:"Desktop",mobile:"Mobile",ratingPass:"Good",ratingAverage:"Average",ratingFail:"Poor",ratingError:"Error",navigationReportCount:`{numNavigation, plural,
|
|
4
|
+
`,"\r"],!0,!1),jn="\\\\",Ya=$("\\\\",!1),Qa=function(){return"\\"},Fn="\\#",ei=$("\\#",!1),ni=function(){return"\\#"},Mn="\\{",ti=$("\\{",!1),ai=function(){return"{"},Hn="\\}",ii=$("\\}",!1),oi=function(){return"}"},On="\\u",ri=$("\\u",!1),si=function(s){return String.fromCharCode(parseInt(s,16))},m=0,z=0,Ee=[{line:1,column:1}],Q=0,ln=[],U=0,Te;if("startRule"in o){if(!(o.startRule in r))throw new Error(`Can't start parsing from rule "`+o.startRule+'".');l=r[o.startRule]}function ar(){return a.substring(z,m)}function te(){return Ce(z,m)}function ir(s,d){throw d=d!==void 0?d:Ce(z,m),$n([pn(s)],a.substring(z,m),d)}function or(s,d){throw d=d!==void 0?d:Ce(z,m),ui(s,d)}function $(s,d){return{type:"literal",text:s,ignoreCase:d}}function me(s,d,b){return{type:"class",parts:s,inverted:d,ignoreCase:b}}function li(){return{type:"any"}}function pi(){return{type:"end"}}function pn(s){return{type:"other",description:s}}function Bn(s){var d=Ee[s],b;if(d)return d;for(b=s-1;!Ee[b];)b--;for(d=Ee[b],d={line:d.line,column:d.column};b<s;)a.charCodeAt(b)===10?(d.line++,d.column=1):d.column++,b++;return Ee[s]=d,d}function Ce(s,d){var b=Bn(s),_=Bn(d);return{start:{offset:s,line:b.line,column:b.column},end:{offset:d,line:_.line,column:_.column}}}function E(s){m<Q||(m>Q&&(Q=m,ln=[]),ln.push(s))}function ui(s,d){return new e(s,null,null,d)}function $n(s,d,b){return new e(e.buildMessage(s,d),s,d,b)}function Gn(){var s;return s=Wn(),s}function Wn(){var s,d,b;for(s=m,d=[],b=Vn();b!==i;)d.push(b),b=Vn();return d!==i&&(z=s,d=c(d)),s=d,s}function Vn(){var s;return s=di(),s===i&&(s=gi()),s}function ci(){var s,d,b,_,P,A;if(s=m,d=[],b=m,_=F(),_!==i?(P=ze(),P!==i?(A=F(),A!==i?(_=[_,P,A],b=_):(m=b,b=i)):(m=b,b=i)):(m=b,b=i),b!==i)for(;b!==i;)d.push(b),b=m,_=F(),_!==i?(P=ze(),P!==i?(A=F(),A!==i?(_=[_,P,A],b=_):(m=b,b=i)):(m=b,b=i)):(m=b,b=i);else d=i;return d!==i&&(z=s,d=g(d)),s=d,s===i&&(s=m,d=un(),d!==i?s=a.substring(s,m):s=d),s}function di(){var s,d;return s=m,d=ci(),d!==i&&(z=s,d=u(d)),s=d,s}function mi(){var s,d,b;if(s=cn(),s===i){for(s=m,d=[],b=Kn();b!==i;)d.push(b),b=Kn();d!==i&&(z=s,d=v(d)),s=d}return s}function gi(){var s,d,b,_,P,A,D,ee,dn;return s=m,a.charCodeAt(m)===123?(d=h,m++):(d=i,U===0&&E(f)),d!==i?(b=F(),b!==i?(_=mi(),_!==i?(P=F(),P!==i?(A=m,a.charCodeAt(m)===44?(D=y,m++):(D=i,U===0&&E(S)),D!==i?(ee=F(),ee!==i?(dn=hi(),dn!==i?(D=[D,ee,dn],A=D):(m=A,A=i)):(m=A,A=i)):(m=A,A=i),A===i&&(A=null),A!==i?(D=F(),D!==i?(a.charCodeAt(m)===125?(ee=k,m++):(ee=i,U===0&&E(C)),ee!==i?(z=s,d=I(_,A),s=d):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i),s}function hi(){var s;return s=fi(),s===i&&(s=vi(),s===i&&(s=bi(),s===i&&(s=yi()))),s}function fi(){var s,d,b,_,P,A,D;return s=m,a.substr(m,6)===L?(d=L,m+=6):(d=i,U===0&&E(T)),d===i&&(a.substr(m,4)===N?(d=N,m+=4):(d=i,U===0&&E(M)),d===i&&(a.substr(m,4)===H?(d=H,m+=4):(d=i,U===0&&E(V)))),d!==i?(b=F(),b!==i?(_=m,a.charCodeAt(m)===44?(P=y,m++):(P=i,U===0&&E(S)),P!==i?(A=F(),A!==i?(D=ze(),D!==i?(P=[P,A,D],_=P):(m=_,_=i)):(m=_,_=i)):(m=_,_=i),_===i&&(_=null),_!==i?(z=s,d=O(d,_),s=d):(m=s,s=i)):(m=s,s=i)):(m=s,s=i),s}function vi(){var s,d,b,_,P,A;return s=m,a.substr(m,6)===B?(d=B,m+=6):(d=i,U===0&&E(J)),d!==i?(b=F(),b!==i?(a.charCodeAt(m)===44?(_=y,m++):(_=i,U===0&&E(S)),_!==i?(P=F(),P!==i?(A=Jn(),A!==i?(z=s,d=X(A),s=d):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i),s}function bi(){var s,d,b,_,P,A;return s=m,a.substr(m,13)===Z?(d=Z,m+=13):(d=i,U===0&&E(xa)),d!==i?(b=F(),b!==i?(a.charCodeAt(m)===44?(_=y,m++):(_=i,U===0&&E(S)),_!==i?(P=F(),P!==i?(A=Jn(),A!==i?(z=s,d=Ua(A),s=d):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i),s}function yi(){var s,d,b,_,P,A,D;if(s=m,a.substr(m,6)===In?(d=In,m+=6):(d=i,U===0&&E(La)),d!==i)if(b=F(),b!==i)if(a.charCodeAt(m)===44?(_=y,m++):(_=i,U===0&&E(S)),_!==i)if(P=F(),P!==i){if(A=[],D=Re(),D!==i)for(;D!==i;)A.push(D),D=Re();else A=i;A!==i?(z=s,d=Ia(A),s=d):(m=s,s=i)}else m=s,s=i;else m=s,s=i;else m=s,s=i;else m=s,s=i;return s}function _i(){var s,d,b,_;return s=m,d=m,a.charCodeAt(m)===61?(b=Ea,m++):(b=i,U===0&&E(Ta)),b!==i?(_=cn(),_!==i?(b=[b,_],d=b):(m=d,d=i)):(m=d,d=i),d!==i?s=a.substring(s,m):s=d,s===i&&(s=ze()),s}function Re(){var s,d,b,_,P,A,D;return s=m,d=F(),d!==i?(b=_i(),b!==i?(_=F(),_!==i?(a.charCodeAt(m)===123?(P=h,m++):(P=i,U===0&&E(f)),P!==i?(A=Wn(),A!==i?(a.charCodeAt(m)===125?(D=k,m++):(D=i,U===0&&E(C)),D!==i?(z=s,d=Ra(b,A),s=d):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i)):(m=s,s=i),s}function Ci(){var s,d,b,_;return s=m,a.substr(m,7)===En?(d=En,m+=7):(d=i,U===0&&E(Na)),d!==i?(b=F(),b!==i?(_=cn(),_!==i?(z=s,d=za(_),s=d):(m=s,s=i)):(m=s,s=i)):(m=s,s=i),s}function Jn(){var s,d,b,_,P;if(s=m,d=Ci(),d===i&&(d=null),d!==i)if(b=F(),b!==i){if(_=[],P=Re(),P!==i)for(;P!==i;)_.push(P),P=Re();else _=i;_!==i?(z=s,d=Da(d,_),s=d):(m=s,s=i)}else m=s,s=i;else m=s,s=i;return s}function un(){var s,d;if(U++,s=[],Tn.test(a.charAt(m))?(d=a.charAt(m),m++):(d=i,U===0&&E(Rn)),d!==i)for(;d!==i;)s.push(d),Tn.test(a.charAt(m))?(d=a.charAt(m),m++):(d=i,U===0&&E(Rn));else s=i;return U--,s===i&&(d=i,U===0&&E(ja)),s}function F(){var s,d,b;for(U++,s=m,d=[],b=un();b!==i;)d.push(b),b=un();return d!==i?s=a.substring(s,m):s=d,U--,s===i&&(d=i,U===0&&E(Fa)),s}function qn(){var s;return Ma.test(a.charAt(m))?(s=a.charAt(m),m++):(s=i,U===0&&E(Ha)),s}function Ne(){var s;return Oa.test(a.charAt(m))?(s=a.charAt(m),m++):(s=i,U===0&&E(Ba)),s}function cn(){var s,d,b,_,P,A;if(s=m,a.charCodeAt(m)===48?(d=$a,m++):(d=i,U===0&&E(Ga)),d===i){if(d=m,b=m,Wa.test(a.charAt(m))?(_=a.charAt(m),m++):(_=i,U===0&&E(Va)),_!==i){for(P=[],A=qn();A!==i;)P.push(A),A=qn();P!==i?(_=[_,P],b=_):(m=b,b=i)}else m=b,b=i;b!==i?d=a.substring(d,m):d=b}return d!==i&&(z=s,d=Ja(d)),s=d,s}function Kn(){var s,d,b;return s=m,d=m,U++,a.charCodeAt(m)===39?(b=Le,m++):(b=i,U===0&&E(Ie)),b===i&&(Nn.test(a.charAt(m))?(b=a.charAt(m),m++):(b=i,U===0&&E(zn))),U--,b===i?d=void 0:(m=d,d=i),d!==i?(a.length>m?(b=a.charAt(m),m++):(b=i,U===0&&E(qa)),b!==i?(z=s,d=Ka(b),s=d):(m=s,s=i)):(m=s,s=i),s===i&&(s=m,a.charCodeAt(m)===39?(d=Le,m++):(d=i,U===0&&E(Ie)),d!==i?(b=wi(),b!==i?(z=s,d=Dn(b),s=d):(m=s,s=i)):(m=s,s=i)),s}function Zn(){var s;return a.charCodeAt(m)===39?(s=Le,m++):(s=i,U===0&&E(Ie)),s}function wi(){var s;return Nn.test(a.charAt(m))?(s=a.charAt(m),m++):(s=i,U===0&&E(zn)),s===i&&(s=Zn()),s}function Xn(){var s,d,b,_,P,A,D,ee;return s=m,a.charCodeAt(m)===39?(d=Le,m++):(d=i,U===0&&E(Ie)),d!==i?(b=Zn(),b!==i?(z=s,d=Dn(b),s=d):(m=s,s=i)):(m=s,s=i),s===i&&(Za.test(a.charAt(m))?(s=a.charAt(m),m++):(s=i,U===0&&E(Xa)),s===i&&(s=m,a.substr(m,2)===jn?(d=jn,m+=2):(d=i,U===0&&E(Ya)),d!==i&&(z=s,d=Qa()),s=d,s===i&&(s=m,a.substr(m,2)===Fn?(d=Fn,m+=2):(d=i,U===0&&E(ei)),d!==i&&(z=s,d=ni()),s=d,s===i&&(s=m,a.substr(m,2)===Mn?(d=Mn,m+=2):(d=i,U===0&&E(ti)),d!==i&&(z=s,d=ai()),s=d,s===i&&(s=m,a.substr(m,2)===Hn?(d=Hn,m+=2):(d=i,U===0&&E(ii)),d!==i&&(z=s,d=oi()),s=d,s===i&&(s=m,a.substr(m,2)===On?(d=On,m+=2):(d=i,U===0&&E(ri)),d!==i?(b=m,_=m,P=Ne(),P!==i?(A=Ne(),A!==i?(D=Ne(),D!==i?(ee=Ne(),ee!==i?(P=[P,A,D,ee],_=P):(m=_,_=i)):(m=_,_=i)):(m=_,_=i)):(m=_,_=i),_!==i?b=a.substring(b,m):b=_,b!==i?(z=s,d=si(b),s=d):(m=s,s=i)):(m=s,s=i))))))),s}function ze(){var s,d,b;if(s=m,d=[],b=Xn(),b!==i)for(;b!==i;)d.push(b),b=Xn();else d=i;return d!==i&&(z=s,d=v(d)),s=d,s}if(Te=l(),Te!==i&&m===a.length)return Te;throw Te!==i&&m<a.length&&E(pi()),$n(ln,Q<a.length?a.charAt(Q):null,Q<a.length?Ce(Q,Q+1):Ce(Q,Q))}return{SyntaxError:e,parse:n}}();var Mt=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,o){a.__proto__=o}||function(a,o){for(var i in o)o.hasOwnProperty(i)&&(a[i]=o[i])},t(e,n)};return function(e,n){t(e,n);function a(){this.constructor=e}e.prototype=n===null?Object.create(n):(a.prototype=n.prototype,new a)}}(),ji=function(){function t(e,n,a){this.locales=[],this.formats={number:{},date:{},time:{}},this.pluralNumberFormat=null,this.currentPlural=null,this.pluralStack=[],this.locales=e,this.formats=n,this.formatters=a}return t.prototype.compile=function(e){return this.pluralStack=[],this.currentPlural=null,this.pluralNumberFormat=null,this.compileMessage(e)},t.prototype.compileMessage=function(e){var n=this;if(!(e&&e.type==="messageFormatPattern"))throw new Error('Message AST is not of type: "messageFormatPattern"');var a=e.elements,o=a.filter(function(i){return i.type==="messageTextElement"||i.type==="argumentElement"}).map(function(i){return i.type==="messageTextElement"?n.compileMessageText(i):n.compileArgument(i)});if(o.length!==a.length)throw new Error("Message element does not have a valid type");return o},t.prototype.compileMessageText=function(e){return this.currentPlural&&/(^|[^\\])#/g.test(e.value)?(this.pluralNumberFormat||(this.pluralNumberFormat=new Intl.NumberFormat(this.locales)),new Hi(this.currentPlural.id,this.currentPlural.format.offset,this.pluralNumberFormat,e.value)):e.value.replace(/\\#/g,"#")},t.prototype.compileArgument=function(e){var n=e.format,a=e.id,o=this.formatters;if(!n)return new Fi(a);var i=this,r=i.formats,l=i.locales;switch(n.type){case"numberFormat":return{id:a,format:o.getNumberFormat(l,r.number[n.style]).format};case"dateFormat":return{id:a,format:o.getDateTimeFormat(l,r.date[n.style]).format};case"timeFormat":return{id:a,format:o.getDateTimeFormat(l,r.time[n.style]).format};case"pluralFormat":return new Mi(a,n.offset,this.compileOptions(e),o.getPluralRules(l,{type:n.ordinal?"ordinal":"cardinal"}));case"selectFormat":return new Oi(a,this.compileOptions(e));default:throw new Error("Message element does not have a valid format type")}},t.prototype.compileOptions=function(e){var n=this,a=e.format,o=a.options;this.pluralStack.push(this.currentPlural),this.currentPlural=a.type==="pluralFormat"?e:null;var i=o.reduce(function(r,l){return r[l.selector]=n.compileMessage(l.value),r},{});return this.currentPlural=this.pluralStack.pop(),i},t}(),Ht=ji,Ot=function(){function t(e){this.id=e}return t}(),Fi=function(t){Mt(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.format=function(n){return!n&&typeof n!="number"?"":typeof n=="string"?n:String(n)},e}(Ot),Mi=function(){function t(e,n,a,o){this.id=e,this.offset=n,this.options=a,this.pluralRules=o}return t.prototype.getOption=function(e){var n=this.options,a=n["="+e]||n[this.pluralRules.select(e-this.offset)];return a||n.other},t}(),Hi=function(t){Mt(e,t);function e(n,a,o,i){var r=t.call(this,n)||this;return r.offset=a,r.numberFormat=o,r.string=i,r}return e.prototype.format=function(n){var a=this.numberFormat.format(n-this.offset);return this.string.replace(/(^|[^\\])#/g,"$1"+a).replace(/\\#/g,"#")},e}(Ot);var Oi=function(){function t(e,n){this.id=e,this.options=n}return t.prototype.getOption=function(e){var n=this.options;return n[e]||n.other},t}();function Bt(t){return!!t.options}var Bi=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,o){a.__proto__=o}||function(a,o){for(var i in o)o.hasOwnProperty(i)&&(a[i]=o[i])},t(e,n)};return function(e,n){t(e,n);function a(){this.constructor=e}e.prototype=n===null?Object.create(n):(a.prototype=n.prototype,new a)}}(),Pe=function(){return Pe=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o])}return t},Pe.apply(this,arguments)};function $i(t){typeof t=="string"&&(t=[t]);try{return Intl.NumberFormat.supportedLocalesOf(t,{localeMatcher:"best fit"})[0]}catch{return Gt.defaultLocale}}function $t(t,e){for(var n="",a=0,o=t;a<o.length;a++){var i=o[a];if(typeof i=="string"){n+=i;continue}var r=i.id;if(!(e&&r in e))throw new Vi("A value must be provided for: "+r,r);var l=e[r];Bt(i)?n+=$t(i.getOption(l),e):n+=i.format(l)}return n}function Gi(t,e){return e?Pe({},t||{},e||{},Object.keys(t).reduce(function(n,a){return n[a]=Pe({},t[a],e[a]||{}),n},{})):t}function Wi(t,e){return e?Object.keys(t).reduce(function(n,a){return n[a]=Gi(t[a],e[a]),n},Pe({},t)):t}var Vi=function(t){Bi(e,t);function e(n,a){var o=t.call(this,n)||this;return o.variableId=a,o}return e}(Error);function Ji(){return{getNumberFormat:function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return new((t=Intl.NumberFormat).bind.apply(t,[void 0].concat(e)))},getDateTimeFormat:function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return new((t=Intl.DateTimeFormat).bind.apply(t,[void 0].concat(e)))},getPluralRules:function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return new((t=Intl.PluralRules).bind.apply(t,[void 0].concat(e)))}}}var Gt=function(){function t(e,n,a,o){var i=this;if(n===void 0&&(n=t.defaultLocale),this.format=function(c){try{return $t(i.pattern,c)}catch(g){throw g.variableId?new Error("The intl string context variable '"+g.variableId+"' was not provided to the string '"+i.message+"'"):g}},typeof e=="string"){if(!t.__parse)throw new TypeError("IntlMessageFormat.__parse must be set to process `message` of type `string`");this.ast=t.__parse(e)}else this.ast=e;if(this.message=e,!(this.ast&&this.ast.type==="messageFormatPattern"))throw new TypeError("A message must be provided as a String or AST.");var r=Wi(t.formats,a);this.locale=$i(n||[]);var l=o&&o.formatters||Ji();this.pattern=new Ht(n,r,l).compile(this.ast)}return t.prototype.resolvedOptions=function(){return{locale:this.locale}},t.prototype.getAst=function(){return this.ast},t.defaultLocale="en",t.__parse=void 0,t.formats={number:{currency:{style:"currency"},percent:{style:"percent"}},date:{short:{month:"numeric",day:"numeric",year:"2-digit"},medium:{month:"short",day:"numeric",year:"numeric"},long:{month:"long",day:"numeric",year:"numeric"},full:{weekday:"long",month:"long",day:"numeric",year:"numeric"}},time:{short:{hour:"numeric",minute:"numeric"},medium:{hour:"numeric",minute:"numeric",second:"numeric"},long:{hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"},full:{hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}}},t}();var Cn=Gt;Cn.__parse=Ft.parse;var Wt=Cn;var Yr=["ar-XB.json","ar.json","bg.json","ca.json","cs.json","da.json","de.json","el.json","en-GB.json","en-US.json","en-XA.json","en-XL.json","es-419.json","es.json","fi.json","fil.json","fr.json","he.json","hi.json","hr.json","hu.json","id.json","it.json","ja.json","ko.json","lt.json","lv.json","nl.json","no.json","pl.json","pt-PT.json","pt.json","ro.json","ru.json","sk.json","sl.json","sr-Latn.json","sr.json","sv.json","ta.json","te.json","th.json","tr.json","uk.json","vi.json","zh-HK.json","zh-TW.json","zh.json"].filter(t=>t.endsWith(".json")&&!t.endsWith(".ctc.json")).map(t=>t.replace(".json","")).sort();var qi={number:{bytes:{maximumFractionDigits:0},milliseconds:{maximumFractionDigits:0},seconds:{minimumFractionDigits:1,maximumFractionDigits:1},extendedPercent:{maximumFractionDigits:2,style:"percent"}}};function Vt(t,e=new Map){for(let n of t)if(n.type==="argumentElement"&&(e.set(n.id,n),!(!n.format||n.format.type!=="pluralFormat")))for(let a of n.format.options)Vt(a.value.elements,e);return e}function Ki(t,e={},n){let o=[...Vt(t.getAst().elements).values()],i={};for(let{id:r,format:l}of o){if(r&&!(r in e))throw new Error(`ICU Message "${n}" contains a value reference ("${r}") that wasn't provided`);let c=e[r];if(!l||l.type!=="numberFormat"){i[r]=c;continue}if(typeof c!="number")throw new Error(`ICU Message "${n}" contains a numeric reference ("${r}") but provided value was not a number`);l.style==="milliseconds"?i[r]=Math.round(c/10)*10:l.style==="seconds"&&r==="timeInMs"?i[r]=Math.round(c/100)/10:l.style==="bytes"?i[r]=c/1024:i[r]=c}for(let r of Object.keys(e))if(!(r in i)){if(r==="errorCode"){i.errorCode=e.errorCode;continue}throw new Error(`Provided value "${r}" does not match any placeholder in ICU message "${n}"`)}return i}function Jt(t,e,n){if(!t.includes("{")&&e===void 0)return t;let a=n==="en-XA"||n==="en-XL"?"de-DE":n,o=new Wt(t,a,qi),i=Ki(o,e,t);return o.format(i)}var wn=" ";var de=class{constructor(e){e==="en-XA"&&(e="de"),this._locale=e,this._cachedNumberFormatters=new Map}_formatNumberWithGranularity(e,n,a={}){if(n!==void 0){let r=-Math.log10(n);Number.isInteger(r)||(console.warn(`granularity of ${n} is invalid. Using 1 instead`),n=1),n<1&&(a={...a},a.minimumFractionDigits=a.maximumFractionDigits=Math.ceil(r)),e=Math.round(e/n)*n,Object.is(e,-0)&&(e=0)}else Math.abs(e)<5e-4&&(e=0);let o,i=[a.minimumFractionDigits,a.maximumFractionDigits,a.style,a.unit,a.unitDisplay,this._locale].join("");return o=this._cachedNumberFormatters.get(i),o||(o=new Intl.NumberFormat(this._locale,a),this._cachedNumberFormatters.set(i,o)),o.format(e).replace(" ",wn)}formatNumber(e,n){return this._formatNumberWithGranularity(e,n)}formatInteger(e){return this._formatNumberWithGranularity(e,1)}formatPercent(e){return new Intl.NumberFormat(this._locale,{style:"percent"}).format(e)}formatBytesToKiB(e,n=void 0){return this._formatNumberWithGranularity(e/1024,n)+`${wn}KiB`}formatBytesToMiB(e,n=void 0){return this._formatNumberWithGranularity(e/1048576,n)+`${wn}MiB`}formatBytes(e,n=1){return this._formatNumberWithGranularity(e,n,{style:"unit",unit:"byte",unitDisplay:"long"})}formatBytesWithBestUnit(e,n=.1){return e>=1048576?this.formatBytesToMiB(e,n):e>=1024?this.formatBytesToKiB(e,n):this._formatNumberWithGranularity(e,n,{style:"unit",unit:"byte",unitDisplay:"narrow"})}formatKbps(e,n=void 0){return this._formatNumberWithGranularity(e,n,{style:"unit",unit:"kilobit-per-second",unitDisplay:"short"})}formatMilliseconds(e,n=void 0){return this._formatNumberWithGranularity(e,n,{style:"unit",unit:"millisecond",unitDisplay:"short"})}formatSeconds(e,n=void 0){return this._formatNumberWithGranularity(e/1e3,n,{style:"unit",unit:"second",unitDisplay:"narrow"})}formatDateTime(e){let n={month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",timeZoneName:"short"},a;try{a=new Intl.DateTimeFormat(this._locale,n)}catch{n.timeZone="UTC",a=new Intl.DateTimeFormat(this._locale,n)}return a.format(new Date(e))}formatDuration(e){let n=e/1e3;if(Math.round(n)===0)return"None";let a=[],o={day:60*60*24,hour:60*60,minute:60,second:1};return Object.keys(o).forEach(i=>{let r=o[i],l=Math.floor(n/r);if(l>0){n-=l*r;let c=this._formatNumberWithGranularity(l,1,{style:"unit",unit:i,unitDisplay:"narrow"});a.push(c)}}),a.join(" ")}};var kn={navigationDescription:"Page load",timespanDescription:"User interactions",snapshotDescription:"Captured state of page",navigationLongDescription:"Navigation reports analyze a single page load, exactly like the original Lighthouse reports.",timespanLongDescription:"Timespan reports analyze an arbitrary period of time, typically containing user interactions.",snapshotLongDescription:"Snapshot reports analyze the page in a particular state, typically after user interactions.",navigationReport:"Navigation report",timespanReport:"Timespan report",snapshotReport:"Snapshot report",summary:"Summary",allReports:"All Reports",title:"Lighthouse User Flow Report",categories:"Categories",categoryPerformance:"Performance",categoryAccessibility:"Accessibility",categoryBestPractices:"Best Practices",categorySeo:"SEO",categoryProgressiveWebApp:"Progressive Web App",desktop:"Desktop",mobile:"Mobile",ratingPass:"Good",ratingAverage:"Average",ratingFail:"Poor",ratingError:"Error",navigationReportCount:`{numNavigation, plural,
|
|
5
5
|
=1 {{numNavigation} navigation report}
|
|
6
6
|
other {{numNavigation} navigation reports}
|
|
7
7
|
}`,timespanReportCount:`{numTimespan, plural,
|
|
@@ -317,6 +317,8 @@
|
|
|
317
317
|
position: absolute;
|
|
318
318
|
grid-column: 1;
|
|
319
319
|
bottom: -1px;
|
|
320
|
+
left: 0px;
|
|
321
|
+
right: 0px;
|
|
320
322
|
}
|
|
321
323
|
|
|
322
324
|
.lh-gauge__wrapper:first-of-type {
|
|
@@ -242,6 +242,8 @@
|
|
|
242
242
|
position: absolute;
|
|
243
243
|
grid-column: 1;
|
|
244
244
|
bottom: -1px;
|
|
245
|
+
left: 0px;
|
|
246
|
+
right: 0px;
|
|
245
247
|
}
|
|
246
248
|
|
|
247
249
|
.lh-gauge__wrapper:first-of-type {
|
|
@@ -2476,7 +2478,7 @@ details[open] .lh-clump-toggletext--hide { display: block;}
|
|
|
2476
2478
|
display: none;
|
|
2477
2479
|
}
|
|
2478
2480
|
}
|
|
2479
|
-
`),e.append(t);let n=o.createElement("div","lh-topbar"),r=o.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");r.setAttribute("role","img"),r.setAttribute("title","Lighthouse logo"),r.setAttribute("fill","none"),r.setAttribute("xmlns","http://www.w3.org/2000/svg"),r.setAttribute("viewBox","0 0 48 48");let i=o.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=o.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=o.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("fill","#FF3"),l.setAttribute("d","M20.5 10h7v7h-7z"),r.append(" ",i," ",a," ",l," ");let s=o.createElement("a","lh-topbar__url");s.setAttribute("href",""),s.setAttribute("target","_blank"),s.setAttribute("rel","noopener");let c=o.createElement("div","lh-tools"),d=o.createElement("div","lh-tools-locale lh-hidden"),p=o.createElement("button","lh-button lh-tool-locale__button");p.setAttribute("id","lh-button__swap-locales"),p.setAttribute("title","Show Language Picker"),p.setAttribute("aria-label","Toggle language picker"),p.setAttribute("aria-haspopup","menu"),p.setAttribute("aria-expanded","false"),p.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");let h=o.createElementNS("http://www.w3.org/2000/svg","svg");h.setAttribute("width","20px"),h.setAttribute("height","20px"),h.setAttribute("viewBox","0 0 24 24"),h.setAttribute("fill","currentColor");let u=o.createElementNS("http://www.w3.org/2000/svg","path");u.setAttribute("d","M0 0h24v24H0V0z"),u.setAttribute("fill","none");let f=o.createElementNS("http://www.w3.org/2000/svg","path");f.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"),h.append(u,f),p.append(" ",h," ");let b=o.createElement("div","lh-tools-locale__selector-wrapper");b.setAttribute("id","lh-tools-locale__selector-wrapper"),b.setAttribute("role","menu"),b.setAttribute("aria-labelledby","lh-button__swap-locales"),b.setAttribute("aria-hidden","true"),b.append(" "," "),d.append(" ",p," ",b," ");let _=o.createElement("button","lh-tools__button");_.setAttribute("id","lh-tools-button"),_.setAttribute("title","Tools menu"),_.setAttribute("aria-label","Toggle report tools menu"),_.setAttribute("aria-haspopup","menu"),_.setAttribute("aria-expanded","false"),_.setAttribute("aria-controls","lh-tools-dropdown");let m=o.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("width","100%"),m.setAttribute("height","100%"),m.setAttribute("viewBox","0 0 24 24");let w=o.createElementNS("http://www.w3.org/2000/svg","path");w.setAttribute("d","M0 0h24v24H0z"),w.setAttribute("fill","none");let v=o.createElementNS("http://www.w3.org/2000/svg","path");v.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"),m.append(" ",w," ",v," "),_.append(" ",m," ");let x=o.createElement("div","lh-tools__dropdown");x.setAttribute("id","lh-tools-dropdown"),x.setAttribute("role","menu"),x.setAttribute("aria-labelledby","lh-tools-button");let E=o.createElement("a","lh-report-icon lh-report-icon--print");E.setAttribute("role","menuitem"),E.setAttribute("tabindex","-1"),E.setAttribute("href","#"),E.setAttribute("data-i18n","dropdownPrintSummary"),E.setAttribute("data-action","print-summary");let A=o.createElement("a","lh-report-icon lh-report-icon--print");A.setAttribute("role","menuitem"),A.setAttribute("tabindex","-1"),A.setAttribute("href","#"),A.setAttribute("data-i18n","dropdownPrintExpanded"),A.setAttribute("data-action","print-expanded");let C=o.createElement("a","lh-report-icon lh-report-icon--copy");C.setAttribute("role","menuitem"),C.setAttribute("tabindex","-1"),C.setAttribute("href","#"),C.setAttribute("data-i18n","dropdownCopyJSON"),C.setAttribute("data-action","copy");let L=o.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");L.setAttribute("role","menuitem"),L.setAttribute("tabindex","-1"),L.setAttribute("href","#"),L.setAttribute("data-i18n","dropdownSaveHTML"),L.setAttribute("data-action","save-html");let S=o.createElement("a","lh-report-icon lh-report-icon--download");S.setAttribute("role","menuitem"),S.setAttribute("tabindex","-1"),S.setAttribute("href","#"),S.setAttribute("data-i18n","dropdownSaveJSON"),S.setAttribute("data-action","save-json");let z=o.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 M=o.createElement("a","lh-report-icon lh-report-icon--open");M.setAttribute("role","menuitem"),M.setAttribute("tabindex","-1"),M.setAttribute("href","#"),M.setAttribute("data-i18n","dropdownSaveGist"),M.setAttribute("data-action","save-gist");let T=o.createElement("a","lh-report-icon lh-report-icon--open lh-hidden");T.setAttribute("role","menuitem"),T.setAttribute("tabindex","-1"),T.setAttribute("href","#"),T.setAttribute("data-i18n","dropdownViewUnthrottledTrace"),T.setAttribute("data-action","view-unthrottled-trace");let F=o.createElement("a","lh-report-icon lh-report-icon--dark");return F.setAttribute("role","menuitem"),F.setAttribute("tabindex","-1"),F.setAttribute("href","#"),F.setAttribute("data-i18n","dropdownDarkTheme"),F.setAttribute("data-action","toggle-dark"),x.append(" ",E," ",A," ",C," "," ",L," ",S," ",z," ",M," "," ",T," ",F," "),c.append(" ",d," ",_," ",x," "),n.append(" "," ",r," ",s," ",c," "),e.append(n),e}function Ie(o){let e=o.createFragment(),t=o.createElement("div","lh-warnings lh-warnings--toplevel"),n=o.createElement("p","lh-warnings__msg"),r=o.createElement("ul");return t.append(" ",n," ",r," "),e.append(t),e}function X(o,e){switch(e){case"3pFilter":return me(o);case"audit":return fe(o);case"categoryHeader":return be(o);case"chevron":return ve(o);case"clump":return _e(o);case"crc":return we(o);case"crcChain":return ye(o);case"elementScreenshot":return xe(o);case"footer":return Ee(o);case"fraction":return ke(o);case"gauge":return Ae(o);case"gaugePwa":return Se(o);case"heading":return Ce(o);case"metric":return ze(o);case"opportunity":return Le(o);case"opportunityHeader":return Me(o);case"scorescale":return Te(o);case"scoresWrapper":return Fe(o);case"snippet":return De(o);case"snippetContent":return Ne(o);case"snippetHeader":return Re(o);case"snippetLine":return Pe(o);case"styles":return He(o);case"topbar":return Ue(o);case"warningsToplevel":return Ie(o)}throw new Error("unexpected component: "+e)}var V=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 r of t.split(/\s+/))r&&n.classList.add(r);return n}createElementNS(e,t,n){let r=this._document.createElementNS(e,t);if(n)for(let i of n.split(/\s+/))i&&r.classList.add(i);return r}createFragment(){return this._document.createDocumentFragment()}createTextNode(e){return this._document.createTextNode(e)}createChildOf(e,t,n){let r=this.createElement(t,n);return e.append(r),r}createComponent(e){let t=this._componentCache.get(e);if(t){let r=t.cloneNode(!0);return this.findAll("style",r).forEach(i=>i.remove()),r}return t=X(this,e),this._componentCache.set(e,t),t.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(e,t={}){let n=this.createElement("span");for(let r of k.splitMarkdownLink(e)){let i=r.text.includes("`")?this.convertMarkdownCodeSnippets(r.text):r.text;if(!r.isLink){n.append(i);continue}let a=new URL(r.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:"],r;try{r=new URL(t)}catch{}r&&n.includes(r.protocol)&&(e.href=r.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 k.splitMarkdownCodeSpans(e))if(n.isCode){let r=this.createElement("code");r.textContent=n.text,t.append(r)}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){let n=t.querySelector(e);if(n===null)throw new Error(`query ${e} not found`);return n}findAll(e,t){return Array.from(t.querySelectorAll(e))}fireEventOn(e,t=this._document,n){let r=new CustomEvent(e,n?{detail:n}:void 0);t.dispatchEvent(r)}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 ee=0,g=class o{static i18n=null;static strings={};static reportJson=null;static apply(e){o.strings={...te,...e.providedStrings},o.i18n=e.i18n,o.reportJson=e.reportJson}static getUniqueSuffix(){return ee++}static resetUniqueSuffix(){ee=0}};var ne="data:image/jpeg;base64,";function re(o){o.configSettings.locale||(o.configSettings.locale="en"),o.configSettings.formFactor||(o.configSettings.formFactor=o.configSettings.emulatedFormFactor),o.finalDisplayedUrl=k.getFinalDisplayedUrl(o),o.mainDocumentUrl=k.getMainDocumentUrl(o);for(let n of Object.values(o.audits))if((n.scoreDisplayMode==="not_applicable"||n.scoreDisplayMode==="not-applicable")&&(n.scoreDisplayMode="notApplicable"),n.details){if((n.details.type===void 0||n.details.type==="diagnostic")&&(n.details.type="debugdata"),n.details.type==="filmstrip")for(let r of n.details.items)r.data.startsWith(ne)||(r.data=ne+r.data);if(n.details.type==="table")for(let r of n.details.headings){let{itemType:i,text:a}=r;i!==void 0&&(r.valueType=i,delete r.itemType),a!==void 0&&(r.label=a,delete r.text);let l=r.subItemsHeading?.itemType;r.subItemsHeading&&l!==void 0&&(r.subItemsHeading.valueType=l,delete r.subItemsHeading.itemType)}if(n.id==="third-party-summary"&&(n.details.type==="opportunity"||n.details.type==="table")){let{headings:r,items:i}=n.details;if(r[0].valueType==="link"){r[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]=o.lighthouseVersion.split(".").map(Number),t=o.categories.performance;if(e<9&&t){o.categoryGroups||(o.categoryGroups={}),o.categoryGroups.hidden={title:""};for(let n of t.auditRefs)n.group?["load-opportunities","diagnostics"].includes(n.group)&&delete n.group:n.group="hidden"}if(o.environment||(o.environment={benchmarkIndex:0,networkUserAgent:o.userAgent,hostUserAgent:o.userAgent}),o.configSettings.screenEmulation||(o.configSettings.screenEmulation={width:-1,height:-1,deviceScaleFactor:-1,mobile:/mobile/i.test(o.environment.hostUserAgent),disabled:!1}),o.i18n||(o.i18n={}),o.audits["full-page-screenshot"]){let n=o.audits["full-page-screenshot"].details;n?o.fullPageScreenshot={screenshot:n.screenshot,nodes:n.nodes}:o.fullPageScreenshot=null,delete o.audits["full-page-screenshot"]}}var N=k.RATINGS,y=class o{static prepareReportResult(e){let t=JSON.parse(JSON.stringify(e));re(t);for(let r of Object.values(t.audits))r.details&&(r.details.type==="opportunity"||r.details.type==="table")&&!r.details.isEntityGrouped&&t.entities&&o.classifyEntities(t.entities,r.details);if(typeof t.categories!="object")throw new Error("No categories provided.");let n=new Map;for(let r of Object.values(t.categories))r.auditRefs.forEach(i=>{i.relevantAudits&&i.relevantAudits.forEach(a=>{let l=n.get(a)||[];l.push(i),n.set(a,l)})}),r.auditRefs.forEach(i=>{let a=t.audits[i.id];i.result=a,n.has(i.id)&&(i.relevantMetrics=n.get(i.id)),t.stackPacks&&t.stackPacks.forEach(l=>{l.descriptions[i.id]&&(i.stackPacks=i.stackPacks||[],i.stackPacks.push({title:l.title,iconDataURL:l.iconDataURL,description:l.descriptions[i.id]}))})});return t}static getUrlLocatorFn(e){let t=e.find(r=>r.valueType==="url")?.key;if(t&&typeof t=="string")return r=>{let i=r[t];if(typeof i=="string")return i};let n=e.find(r=>r.valueType==="source-location")?.key;if(n)return r=>{let i=r[n];if(typeof i=="object"&&i.type==="source-location")return i.url}}static classifyEntities(e,t){let{items:n,headings:r}=t;if(!n.length||n.some(a=>a.entity))return;let i=o.getUrlLocatorFn(r);if(i)for(let a of n){let l=i(a);if(!l)continue;let s="";try{s=k.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 r of e){let i=t[r],a=n[r];if((typeof i!=typeof a||!["number","string"].includes(typeof i))&&console.warn(`Warning: Attempting to sort unsupported value type: ${r}.`),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,r,i=e.throttling,a=g.i18n,l=g.strings;switch(e.throttlingMethod){case"provided":r=n=t=l.throttlingProvided;break;case"devtools":{let{cpuSlowdownMultiplier:h,requestLatencyMs:u}=i;t=`${a.formatNumber(h)}x slowdown (DevTools)`,n=`${a.formatMilliseconds(u)} HTTP RTT, ${a.formatKbps(i.downloadThroughputKbps)} down, ${a.formatKbps(i.uploadThroughputKbps)} up (DevTools)`,r=(()=>u===150*3.75&&i.downloadThroughputKbps===1.6*1024*.9&&i.uploadThroughputKbps===750*.9)()?l.runtimeSlow4g:l.runtimeCustom;break}case"simulate":{let{cpuSlowdownMultiplier:h,rttMs:u,throughputKbps:f}=i;t=`${a.formatNumber(h)}x slowdown (Simulated)`,n=`${a.formatMilliseconds(u)} TCP RTT, ${a.formatKbps(f)} throughput (Simulated)`,r=(()=>u===150&&f===1.6*1024)()?l.runtimeSlow4g:l.runtimeCustom;break}default:r=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 p=s?void 0:`${e.screenEmulation.width}x${e.screenEmulation.height}, DPR ${e.screenEmulation.deviceScaleFactor}`;return{deviceEmulation:d,screenEmulation:p,cpuThrottling:t,networkThrottling:n,summary:r}}static showAsPassed(e){switch(e.scoreDisplayMode){case"manual":case"notApplicable":return!0;case"error":case"informative":return!1;case"numeric":case"binary":default:return Number(e.score)>=N.PASS.minScore}}static calculateRating(e,t){if(t==="manual"||t==="notApplicable")return N.PASS.label;if(t==="error")return N.ERROR.label;if(e===null)return N.FAIL.label;let n=N.FAIL.label;return e>=N.PASS.minScore?n=N.PASS.label:e>=N.AVERAGE.minScore&&(n=N.AVERAGE.label),n}static calculateCategoryFraction(e){let t=0,n=0,r=0,i=0;for(let a of e.auditRefs){let l=o.showAsPassed(a.result);if(!(a.group==="hidden"||a.result.scoreDisplayMode==="manual"||a.result.scoreDisplayMode==="notApplicable")){if(a.result.scoreDisplayMode==="informative"){l||++r;continue}++t,i+=a.weight,l&&n++}}return{numPassed:n,numPassableAudits:t,numInformative:r,totalWeight:i}}static isPluginCategory(e){return e.startsWith("lighthouse-plugin-")}static shouldDisplayAsFraction(e){return e==="timespan"||e==="snapshot"}},te={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 load",runtimeAnalysisWindow:"Initial page load",runtimeSingleLoadTooltip:"This data is taken from a single page load, 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"};var R=class{constructor(e,t){this.dom=e,this.detailsRenderer=t}get _clumpTitles(){return{warning:g.strings.warningAuditsGroupTitle,manual:g.strings.manualAuditsGroupTitle,passed:g.strings.passedAuditsGroupTitle,notApplicable:g.strings.notApplicableAuditsGroupTitle}}renderAudit(e){let t=this.dom.createComponent("audit");return this.populateAuditValues(e,t)}populateAuditValues(e,t){let n=g.strings,r=this.dom.find(".lh-audit",t);r.id=e.result.id;let i=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",r).textContent=e.result.displayValue);let a=this.dom.find(".lh-audit__title",r);a.append(this.dom.convertMarkdownCodeSnippets(e.result.title));let l=this.dom.find(".lh-audit__description",r);l.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(let h of e.relevantMetrics||[]){let u=this.dom.createChildOf(l,"span","lh-audit__adorn");u.title=`Relevant to ${h.result.title}`,u.textContent=h.acronym||h.id}e.stackPacks&&e.stackPacks.forEach(h=>{let u=this.dom.createElement("img","lh-audit__stackpack__img");u.src=h.iconDataURL,u.alt=h.title;let f=this.dom.convertMarkdownLinkSnippets(h.description,{alwaysAppendUtmSource:!0}),b=this.dom.createElement("div","lh-audit__stackpack");b.append(u,f),this.dom.find(".lh-audit__stackpacks",r).append(b)});let s=this.dom.find("details",r);if(e.result.details){let h=this.detailsRenderer.render(e.result.details);h&&(h.classList.add("lh-details"),s.append(h))}if(this.dom.find(".lh-chevron-container",r).append(this._createChevron()),this._setRatingClass(r,e.result.score,i),e.result.scoreDisplayMode==="error"){r.classList.add("lh-audit--error");let h=this.dom.find(".lh-audit__display-text",r);h.textContent=n.errorLabel,h.classList.add("lh-tooltip-boundary");let u=this.dom.createChildOf(h,"div","lh-tooltip lh-tooltip--error");u.textContent=e.result.errorMessage||n.errorMissingAuditInfo}else if(e.result.explanation){let h=this.dom.createChildOf(a,"div","lh-audit-explanation");h.textContent=e.result.explanation}let c=e.result.warnings;if(!c||c.length===0)return r;let d=this.dom.find("summary",s),p=this.dom.createChildOf(d,"div","lh-warnings");if(this.dom.createChildOf(p,"span").textContent=n.warningHeader,c.length===1)p.append(this.dom.createTextNode(c.join("")));else{let h=this.dom.createChildOf(p,"ul");for(let u of c){let f=this.dom.createChildOf(h,"li");f.textContent=u}}return r}injectFinalScreenshot(e,t,n){let r=t["final-screenshot"];if(!r||r.scoreDisplayMode==="error"||!r.details||r.details.type!=="screenshot")return null;let i=this.dom.createElement("img","lh-final-ss-image"),a=r.details.data;i.src=a,i.alt=r.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 r=y.calculateRating(t,n);return e.classList.add(`lh-audit--${n.toLowerCase()}`),n!=="informative"&&e.classList.add(`lh-audit--${r}`),e}renderCategoryHeader(e,t,n){let r=this.dom.createComponent("categoryHeader"),i=this.dom.find(".lh-score__gauge",r),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",r).append(l)}return r}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 r=null;return e.description&&(r=this.dom.convertMarkdownLinkSnippets(e.description),r.classList.add("lh-audit-group__description","lh-audit-group__footer"),t.append(r)),[t,r]}_renderGroupedAudits(e,t){let n=new Map,r="NotAGroup";n.set(r,[]);for(let a of e){let l=a.group||r;if(l==="hidden")continue;let s=n.get(l)||[];s.push(a),n.set(l,s)}let i=[];for(let[a,l]of n){if(a===r){for(let p of l)i.push(this.renderAudit(p));continue}let s=t[a],[c,d]=this.renderAuditGroup(s);for(let p of l)c.insertBefore(this.renderAudit(p),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,{auditRefs:t,description:n,openByDefault:r}){let i=this.dom.createComponent("clump"),a=this.dom.find(".lh-clump",i);r&&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(this.renderAudit.bind(this));a.append(...d);let p=this.dom.find(".lh-audit-group",i);if(n){let h=this.dom.convertMarkdownLinkSnippets(n);h.classList.add("lh-audit-group__description","lh-audit-group__footer"),p.append(h)}return this.dom.find(".lh-clump-toggletext--show",p).textContent=g.strings.show,this.dom.find(".lh-clump-toggletext--hide",p).textContent=g.strings.hide,a.classList.add(`lh-clump--${e.toLowerCase()}`),p}renderCategoryScore(e,t,n){let r;if(n&&y.shouldDisplayAsFraction(n.gatherMode)?r=this.renderCategoryFraction(e):r=this.renderScoreGauge(e,t),n?.omitLabel&&this.dom.find(".lh-gauge__label,.lh-fraction__label",r).remove(),n?.onPageAnchorRendered){let i=this.dom.find("a",r);n.onPageAnchorRendered(i)}return r}renderScoreGauge(e,t){let n=this.dom.createComponent("gauge"),r=this.dom.find("a.lh-gauge__wrapper",n);y.isPluginCategory(e.id)&&r.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=g.strings.errorLabel),e.auditRefs.length===0||this.hasApplicableAudits(e)?r.classList.add(`lh-gauge__wrapper--${y.calculateRating(e.score)}`):(r.classList.add("lh-gauge__wrapper--not-applicable"),c.textContent="-",c.title=g.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:r,numPassableAudits:i,totalWeight:a}=y.calculateCategoryFraction(e),l=r/i,s=this.dom.find(".lh-fraction__content",t),c=this.dom.createElement("span");c.textContent=`${r}/${i}`,s.append(c);let d=y.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")),r=Number(e.getAttribute("stroke-width")),i=.25*r/n;e.style.transform=`rotate(${-90+i*360}deg)`;let a=t*n-r/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:y.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,t={},n){let r=this.dom.createElement("div","lh-category");r.id=e.id,r.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){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 h=this.renderUnexpandableClump(s,t);h.classList.add("lh-clump--failed"),r.append(h);continue}let c=l==="manual"?e.manualDescription:void 0,d=l==="warning"||l==="manual"&&a===0,p=this.renderClump(l,{auditRefs:s,description:c,openByDefault:d});r.append(p)}return r}};var I=class{static initTree(e){let t=0,n=Object.keys(e);return n.length>0&&(t=e[n[0]].request.startTime),{tree:e,startTime:t,transferSize:0}}static createSegment(e,t,n,r,i,a){let l=e[t],s=Object.keys(e),c=s.indexOf(t)===s.length-1,d=!!l.children&&Object.keys(l.children).length>0,p=Array.isArray(i)?i.slice(0):[];return typeof a<"u"&&p.push(!a),{node:l,isLastChild:c,hasChildren:d,startTime:n,transferSize:r+l.request.transferSize,treeMarkers:p}}static createChainNode(e,t,n){let r=e.createComponent("crcChain");e.find(".lh-crc-node",r).setAttribute("title",t.node.request.url);let i=e.find(".lh-crc-node__tree-marker",r);t.treeMarkers.forEach(p=>{let h=p?"lh-tree-marker lh-vert":"lh-tree-marker";i.append(e.createElement("span",h),e.createElement("span","lh-tree-marker"))});let a=t.isLastChild?"lh-tree-marker lh-up-right":"lh-tree-marker lh-vert-right",l=t.hasChildren?"lh-tree-marker lh-horiz-down":"lh-tree-marker lh-right";i.append(e.createElement("span",a),e.createElement("span","lh-tree-marker lh-right"),e.createElement("span",l));let s=t.node.request.url,c=n.renderTextURL(s),d=e.find(".lh-crc-node__tree-value",r);if(d.append(c),!t.hasChildren){let{startTime:p,endTime:h,transferSize:u}=t.node.request,f=e.createElement("span","lh-crc-node__chain-duration");f.textContent=" - "+g.i18n.formatMilliseconds((h-p)*1e3)+", ";let b=e.createElement("span","lh-crc-node__chain-duration");b.textContent=g.i18n.formatBytesToKiB(u,.01),d.append(f,b)}return r}static buildTree(e,t,n,r,i,a){if(r.append(H.createChainNode(e,n,a)),n.node.children)for(let l of Object.keys(n.node.children)){let s=H.createSegment(n.node.children,l,n.startTime,n.transferSize,n.treeMarkers,n.isLastChild);H.buildTree(e,t,s,r,i,a)}}static render(e,t,n){let r=e.createComponent("crc"),i=e.find(".lh-crc",r);e.find(".lh-crc-initial-nav",r).textContent=g.strings.crcInitialNavigation,e.find(".lh-crc__longest_duration_label",r).textContent=g.strings.crcLongestDurationLabel,e.find(".lh-crc__longest_duration",r).textContent=g.i18n.formatMilliseconds(t.longestChain.duration);let a=H.initTree(t.chains);for(let l of Object.keys(a.tree)){let s=H.createSegment(a.tree,l,a.startTime,a.transferSize);H.buildTree(e,r,s,i,t,n)}return e.find(".lh-crc-container",r)}},H=I;function Oe(o,e){return e.left<=o.width&&0<=e.right&&e.top<=o.height&&0<=e.bottom}function oe(o,e,t){return o<e?e:o>t?t:o}function Ve(o){return{x:o.left+o.width/2,y:o.top+o.height/2}}var P=class o{static getScreenshotPositions(e,t,n){let r=Ve(e),i=oe(r.x-t.width/2,0,n.width-t.width),a=oe(r.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,r,i){let a=e.find("clipPath",t),l=`clip-${g.getUniqueSuffix()}`;a.id=l,t.style.clipPath=`url(#${l})`;let s=n.top/i.height,c=s+r.height/i.height,d=n.left/i.width,p=d+r.width/i.width,h=[`0,0 1,0 1,${s} 0,${s}`,`0,${c} 1,${c} 1,1 0,1`,`0,${s} ${d},${s} ${d},${c} 0,${c}`,`${p},${s} 1,${s} 1,${c} ${p},${c}`];for(let u of h){let f=e.createElementNS("http://www.w3.org/2000/svg","polygon");f.setAttribute("points",u),a.append(f)}}static installFullPageScreenshot(e,t){e.style.setProperty("--element-screenshot-url",`url('${t.data}')`)}static installOverlayFeature(e){let{dom:t,rootEl:n,overlayContainerEl:r,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");r.append(d);let p={width:d.clientWidth*.95,height:d.clientHeight*.8},h={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)},u=o.render(t,i.screenshot,h,p);if(!u){d.remove();return}d.append(u),d.addEventListener("click",()=>d.remove())}))}static _computeZoomFactor(e,t){let r={x:t.width/e.width,y:t.height/e.height},i=.75*Math.min(r.x,r.y);return Math.min(1,i)}static render(e,t,n,r){if(!Oe(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,r),s={width:r.width/l,height:r.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=o.getScreenshotPositions(n,s,{width:t.width,height:t.height}),p=e.find("div.lh-element-screenshot__image",a);p.style.width=c.width+"px",p.style.height=c.height+"px",p.style.backgroundPositionY=-(d.screenshot.top*l)+"px",p.style.backgroundPositionX=-(d.screenshot.left*l)+"px",p.style.backgroundSize=`${t.width*l}px ${t.height*l}px`;let h=e.find("div.lh-element-screenshot__element-marker",a);h.style.width=n.width*l+"px",h.style.height=n.height*l+"px",h.style.left=d.clip.left*l+"px",h.style.top=d.clip.top*l+"px";let u=e.find("div.lh-element-screenshot__mask",a);return u.style.width=c.width+"px",u.style.height=c.height+"px",o.renderClipPathInScreenshot(e,u,d.clip,n,s),a}};var $e=["http://","https://","data:"],Be=["bytes","numeric","ms","timespanMs"],O=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"table":case"opportunity":return this._renderTable(e);case"criticalrequestchain":return I.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=g.i18n.formatBytesToKiB(e.value,e.granularity||.1),n=this._renderText(t);return n.title=g.i18n.formatBytes(e.value),n}_renderMilliseconds(e){let t;return e.displayUnit==="duration"?t=g.i18n.formatDuration(e.value):t=g.i18n.formatMilliseconds(e.value,e.granularity||10),this._renderText(t)}renderTextURL(e){let t=e,n,r,i;try{let l=k.parseURL(t);n=l.file==="/"?l.origin:l.file,r=l.file==="/"||l.hostname===""?"":`(${l.hostname})`,i=t}catch{n=t}let a=this._dom.createElement("div","lh-text__url");if(a.append(this._renderLink({text:n,url:t})),r){let l=this._renderText(r);l.classList.add("lh-text__url-host"),a.append(l)}return i&&(a.title=t,a.dataset.url=t),a}_renderLink(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}_renderNumeric(e){let t=g.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"source-location":return this.renderSourceLocation(e);case"url":return this.renderTextURL(e.value);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 $e.some(r=>n.startsWith(r))?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 r of t){if(!r||!r.key){this._dom.createChildOf(n,"td","lh-table-column--empty");continue}let i=e[r.key],a;if(i!=null&&(a=this._renderTableValue(i,r)),a){let l=`lh-table-column--${r.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 r=t.map(this._getDerivedSubItemsHeading);if(!r.some(Boolean))return n;for(let i of e.subItems.items){let a=this._renderTableRow(i,r);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 r=this._dom.find("td",e);if(n.category){let i=this._dom.createElement("span");i.classList.add("lh-audit__adorn"),i.textContent=n.category,r.append(" ",i)}if(n.isFirstParty){let i=this._dom.createElement("span");i.classList.add("lh-audit__adorn","lh-audit__adorn1p"),i.textContent=g.strings.firstPartyChipLabel,r.append(" ",i)}if(n.homepage){let i=this._dom.createElement("a");i.href=n.homepage,i.target="_blank",i.title=g.strings.openInANewTabTooltip,i.classList.add("lh-report-icon--external"),r.append(" ",i)}}_renderEntityGroupRow(e,t){let n={...t[0]};n.valueType="text";let r=[n,...t.slice(1)],i=this._dom.createFragment();return i.append(this._renderTableRow(e,r)),this._dom.find("tr",i).classList.add("lh-row--group"),i}_getEntityGroupItems(e){let{items:t,headings:n,sortedBy:r}=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)||Be.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 p=typeof d.entity=="string"?d.entity:void 0,h=s.get(p)||{[l]:p||g.strings.unattributable,entity:p};for(let u of a)h[u]=Number(h[u]||0)+Number(d[u]||0);s.set(p,h)}let c=[...s.values()];return r&&c.sort(y.getTableItemSortComparator(r)),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"),r=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(r,"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 p of e.items.filter(h=>h.entity===s))c.append(this._renderTableRowsFromItem(p,e.headings));let d=this._dom.findAll("tr",c);s&&d.length&&(d.forEach(p=>p.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),p=d[0];if(typeof s.entity=="string"&&(p.dataset.entity=s.entity),e.isEntityGrouped&&s.entity)p.classList.add("lh-row--group"),this._adornEntityGroupRow(p);else for(let h of d)h.classList.add(l?"lh-row--even":"lh-row--odd");l=!l,a.append(c)}}return t}_renderList(e){let t=this._dom.createElement("div","lh-list");return e.items.forEach(n=>{let r=this.render(n);r&&t.append(r)}),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 r={width:147,height:100},i=P.render(this._dom,this._fullPageScreenshot.screenshot,n,r);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 r;if(e.urlProvider==="network"&&n)r=this._renderLink({url:e.url,text:n}),r.title=`maps to generated location ${t}`;else if(e.urlProvider==="network"&&!n)r=this.renderTextURL(e.url),this._dom.find(".lh-link",r).textContent+=`:${e.line+1}:${e.column}`;else if(e.urlProvider==="comment"&&n)r=this._renderText(`${n} (from source map)`),r.title=`${t} (from sourceURL)`;else if(e.urlProvider==="comment"&&!n)r=this._renderText(`${t} (from sourceURL)`);else return null;return r.classList.add("lh-source-location"),r.setAttribute("data-source-url",e.url),r.setAttribute("data-source-line",String(e.line)),r.setAttribute("data-source-column",String(e.column)),r}_renderFilmstrip(e){let t=this._dom.createElement("div","lh-filmstrip");for(let n of e.items){let r=this._dom.createChildOf(t,"div","lh-filmstrip__frame"),i=this._dom.createChildOf(r,"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 Y="\xA0";var $=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 r,i=[n.minimumFractionDigits,n.maximumFractionDigits,n.style,n.unit,n.unitDisplay,this._locale].join("");return r=this._cachedNumberFormatters.get(i),r||(r=new Intl.NumberFormat(this._locale,n),this._cachedNumberFormatters.set(i,r)),r.format(e).replace(" ",Y)}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)+`${Y}KiB`}formatBytesToMiB(e,t=void 0){return this._formatNumberWithGranularity(e/1048576,t)+`${Y}MiB`}formatBytes(e,t=1){return this._formatNumberWithGranularity(e,t,{style:"unit",unit:"byte",unitDisplay:"long"})}formatBytesWithBestUnit(e,t=void 0){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=[],r={day:60*60*24,hour:60*60,minute:60,second:1};return Object.keys(r).forEach(i=>{let a=r[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(" ")}};var B=class extends R{_renderMetric(e){let t=this.dom.createComponent("metric"),n=this.dom.find(".lh-metric",t);n.id=e.result.id;let r=y.calculateRating(e.result.score,e.result.scoreDisplayMode);n.classList.add(`lh-metric--${r}`);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}_renderOpportunity(e,t){let n=this.dom.createComponent("opportunity"),r=this.populateAuditValues(e,n);if(r.id=e.result.id,!e.result.details||e.result.scoreDisplayMode==="error")return r;let i=e.result.details;if(i.overallSavingsMs===void 0)return r;let a=this.dom.find("span.lh-audit__display-text, div.lh-audit__display-text",r),l=`${i.overallSavingsMs/t*100}%`;if(this.dom.find("div.lh-sparkline__bar",r).style.width=l,a.textContent=g.i18n.formatSeconds(i.overallSavingsMs,.01),e.result.displayValue){let s=e.result.displayValue;this.dom.find("div.lh-load-opportunity__sparkline",r).title=s,a.title=s}return r}_getWastedMs(e){if(e.result.details){let t=e.result.details;if(typeof t.overallSavingsMs!="number")throw new Error("non-opportunity details passed to _getWastedMs");return t.overallSavingsMs}else return Number.MIN_VALUE}_getScoringCalculatorHref(e){let t=e.filter(p=>p.group==="metrics"),n=e.find(p=>p.id==="interactive"),r=e.find(p=>p.id==="first-cpu-idle"),i=e.find(p=>p.id==="first-meaningful-paint");n&&t.push(n),r&&t.push(r),i&&t.push(i);let a=p=>Math.round(p*100)/100,s=[...t.map(p=>{let h;return typeof p.result.numericValue=="number"?(h=p.id==="cumulative-layout-shift"?a(p.result.numericValue):Math.round(p.result.numericValue),h=h.toString()):h="null",[p.acronym||p.id,h]})];g.reportJson&&(s.push(["device",g.reportJson.configSettings.formFactor]),s.push(["version",g.reportJson.lighthouseVersion]));let c=new URLSearchParams(s),d=new URL("https://googlechrome.github.io/lighthouse/scorecalc/");return d.hash=c.toString(),d.href}_classifyPerformanceAudit(e){return e.group?null:e.result.details?.overallSavingsMs!==void 0?"load-opportunity":"diagnostic"}render(e,t,n){let r=g.strings,i=this.dom.createElement("div","lh-category");i.id=e.id,i.append(this.renderCategoryHeader(e,t,n));let a=e.auditRefs.filter(m=>m.group==="metrics");if(a.length){let[m,w]=this.renderAuditGroup(t.metrics),v=this.dom.createElement("input","lh-metrics-toggle__input"),x=`lh-metrics-toggle${g.getUniqueSuffix()}`;v.setAttribute("aria-label","Toggle the display of metric descriptions"),v.type="checkbox",v.id=x,m.prepend(v);let E=this.dom.find(".lh-audit-group__header",m),A=this.dom.createChildOf(E,"label","lh-metrics-toggle__label");A.htmlFor=x;let C=this.dom.createChildOf(A,"span","lh-metrics-toggle__labeltext--show"),L=this.dom.createChildOf(A,"span","lh-metrics-toggle__labeltext--hide");C.textContent=g.strings.expandView,L.textContent=g.strings.collapseView;let S=this.dom.createElement("div","lh-metrics-container");if(m.insertBefore(S,w),a.forEach(z=>{S.append(this._renderMetric(z))}),i.querySelector(".lh-gauge__wrapper")){let z=this.dom.find(".lh-category-header__description",i),M=this.dom.createChildOf(z,"div","lh-metrics__disclaimer"),T=this.dom.convertMarkdownLinkSnippets(r.varianceDisclaimer);M.append(T);let F=this.dom.createChildOf(M,"a","lh-calclink");F.target="_blank",F.textContent=r.calculatorLink,this.dom.safelySetHref(F,this._getScoringCalculatorHref(e.auditRefs))}m.classList.add("lh-audit-group--metrics"),i.append(m)}let l=this.dom.createChildOf(i,"div","lh-filmstrip-container"),c=e.auditRefs.find(m=>m.id==="screenshot-thumbnails")?.result;if(c?.details){l.id=c.id;let m=this.detailsRenderer.render(c.details);m&&l.append(m)}let d=e.auditRefs.filter(m=>this._classifyPerformanceAudit(m)==="load-opportunity").filter(m=>!y.showAsPassed(m.result)).sort((m,w)=>this._getWastedMs(w)-this._getWastedMs(m)),p=a.filter(m=>!!m.relevantAudits);if(p.length&&this.renderMetricAuditFilter(p,i),d.length){let w=d.map(S=>this._getWastedMs(S)),v=Math.max(...w),x=Math.max(Math.ceil(v/1e3)*1e3,2e3),[E,A]=this.renderAuditGroup(t["load-opportunities"]),C=this.dom.createComponent("opportunityHeader");this.dom.find(".lh-load-opportunity__col--one",C).textContent=r.opportunityResourceColumnLabel,this.dom.find(".lh-load-opportunity__col--two",C).textContent=r.opportunitySavingsColumnLabel;let L=this.dom.find(".lh-load-opportunity__header",C);E.insertBefore(L,A),d.forEach(S=>E.insertBefore(this._renderOpportunity(S,x),A)),E.classList.add("lh-audit-group--load-opportunities"),i.append(E)}let h=e.auditRefs.filter(m=>this._classifyPerformanceAudit(m)==="diagnostic").filter(m=>!y.showAsPassed(m.result)).sort((m,w)=>{let v=m.result.scoreDisplayMode==="informative"?100:Number(m.result.score),x=w.result.scoreDisplayMode==="informative"?100:Number(w.result.score);return v-x});if(h.length){let[m,w]=this.renderAuditGroup(t.diagnostics);h.forEach(v=>m.insertBefore(this.renderAudit(v),w)),m.classList.add("lh-audit-group--diagnostics"),i.append(m)}let u=e.auditRefs.filter(m=>this._classifyPerformanceAudit(m)&&y.showAsPassed(m.result));if(!u.length)return i;let f={auditRefs:u,groupDefinitions:t},b=this.renderClump("passed",f);i.append(b);let _=[];if(["performance-budget","timing-budget"].forEach(m=>{let w=e.auditRefs.find(v=>v.id===m);if(w?.result.details){let v=this.detailsRenderer.render(w.result.details);v&&(v.id=m,v.classList.add("lh-details","lh-details--budget","lh-audit"),_.push(v))}}),_.length>0){let[m,w]=this.renderAuditGroup(t.budgets);_.forEach(v=>m.insertBefore(v,w)),m.classList.add("lh-audit-group--budgets"),i.append(m)}return i}renderMetricAuditFilter(e,t){let n=this.dom.createElement("div","lh-metricfilter"),r=this.dom.createChildOf(n,"span","lh-metricfilter__text");r.textContent=g.strings.showRelevantAudits;let i=[{acronym:"All"},...e],a=g.getUniqueSuffix();for(let l of i){let s=`metric-${l.acronym}-${a}`,c=this.dom.createChildOf(n,"input","lh-metricfilter__radio");c.type="radio",c.name=`metricsfilter-${a}`,c.id=s;let d=this.dom.createChildOf(n,"label","lh-metricfilter__label");d.htmlFor=s,d.title=l.result?.title,d.textContent=l.acronym||l.id,l.acronym==="All"&&(c.checked=!0,d.classList.add("lh-metricfilter__label--active")),t.append(n),c.addEventListener("input",p=>{for(let u of t.querySelectorAll("label.lh-metricfilter__label"))u.classList.toggle("lh-metricfilter__label--active",u.htmlFor===s);t.classList.toggle("lh-category--filtered",l.acronym!=="All");for(let u of t.querySelectorAll("div.lh-audit")){if(l.acronym==="All"){u.hidden=!1;continue}u.hidden=!0,l.relevantAudits&&l.relevantAudits.includes(u.id)&&(u.hidden=!1)}let h=t.querySelectorAll("div.lh-audit-group, details.lh-audit-group");for(let u of h){u.hidden=!1;let f=Array.from(u.querySelectorAll("div.lh-audit")),b=!!f.length&&f.every(_=>_.hidden);u.hidden=b}})}}};var G=class o extends R{render(e,t={}){let n=this.dom.createElement("div","lh-category");n.id=e.id,n.append(this.renderCategoryHeader(e,t));let r=e.auditRefs,i=r.filter(c=>c.result.scoreDisplayMode!=="manual"),a=this._renderAudits(i,t);n.append(a);let l=r.filter(c=>c.result.scoreDisplayMode==="manual"),s=this.renderClump("manual",{auditRefs:l,description:e.manualDescription,openByDefault:!0});return n.append(s),n}renderCategoryScore(e,t){if(e.score===null)return super.renderScoreGauge(e,t);let n=this.dom.createComponent("gaugePwa"),r=this.dom.find("a.lh-gauge--pwa__wrapper",n),i=n.querySelector("svg");if(!i)throw new Error("no SVG element found in PWA score gauge template");o._makeSvgReferencesUnique(i);let a=this._getGroupIds(e.auditRefs),l=this._getPassingGroupIds(e.auditRefs);if(l.size===a.size)r.classList.add("lh-badged--all");else for(let s of l)r.classList.add(`lh-badged--${s}`);return this.dom.find(".lh-gauge__label",n).textContent=e.title,r.title=this._getGaugeTooltip(e.auditRefs,t),n}_getGroupIds(e){let t=e.map(n=>n.group).filter(n=>!!n);return new Set(t)}_getPassingGroupIds(e){let t=this._getGroupIds(e);for(let n of e)!y.showAsPassed(n.result)&&n.group&&t.delete(n.group);return t}_getGaugeTooltip(e,t){let n=this._getGroupIds(e),r=[];for(let i of n){let a=e.filter(d=>d.group===i),l=a.length,s=a.filter(d=>y.showAsPassed(d.result)).length,c=t[i].title;r.push(`${c}: ${s}/${l}`)}return r.join(", ")}_renderAudits(e,t){let n=this.renderUnexpandableClump(e,t),r=this._getPassingGroupIds(e);for(let i of r)this.dom.find(`.lh-audit-group--${i}`,n).classList.add("lh-badged");return n}static _makeSvgReferencesUnique(e){let t=e.querySelector("defs");if(!t)return;let n=g.getUniqueSuffix(),r=t.querySelectorAll("[id]");for(let i of r){let a=i.id,l=`${a}-${n}`;i.id=l;let s=e.querySelectorAll(`use[href="#${a}"]`);for(let d of s)d.setAttribute("href",`#${l}`);let c=e.querySelectorAll(`[fill="url(#${a})"]`);for(let d of c)d.setAttribute("fill",`url(#${l})`)}}};var W=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 r=y.prepareReportResult(e);return this._dom.rootEl.textContent="",this._dom.rootEl.append(this._renderReport(r)),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=g.strings.footerIssue,this._dom.find(".lh-footer__version",t).textContent=e.lighthouseVersion,t}_renderMetaBlock(e,t){let n=y.getEmulationDescriptions(e.configSettings||{}),r=e.userAgent.match(/(\w*Chrome\/[\d.]+)/),i=Array.isArray(r)?r[1].replace("/"," ").replace("Chrome","Chromium"):"Chromium",a=e.configSettings.channel,l=e.environment.benchmarkIndex.toFixed(0),s=e.environment.credits?.["axe-core"],c=[`${g.strings.runtimeSettingsBenchmark}: ${l}`,`${g.strings.runtimeSettingsCPUThrottling}: ${n.cpuThrottling}`];n.screenEmulation&&c.push(`${g.strings.runtimeSettingsScreenEmulation}: ${n.screenEmulation}`),s&&c.push(`${g.strings.runtimeSettingsAxeVersion}: ${s}`);let d=[["date",`Captured at ${g.i18n.formatDateTime(e.fetchTime)}`],["devices",`${n.deviceEmulation} with Lighthouse ${e.lighthouseVersion}`,c.join(`
|
|
2481
|
+
`),e.append(t);let n=o.createElement("div","lh-topbar"),r=o.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");r.setAttribute("role","img"),r.setAttribute("title","Lighthouse logo"),r.setAttribute("fill","none"),r.setAttribute("xmlns","http://www.w3.org/2000/svg"),r.setAttribute("viewBox","0 0 48 48");let i=o.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=o.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=o.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("fill","#FF3"),l.setAttribute("d","M20.5 10h7v7h-7z"),r.append(" ",i," ",a," ",l," ");let s=o.createElement("a","lh-topbar__url");s.setAttribute("href",""),s.setAttribute("target","_blank"),s.setAttribute("rel","noopener");let c=o.createElement("div","lh-tools"),d=o.createElement("div","lh-tools-locale lh-hidden"),p=o.createElement("button","lh-button lh-tool-locale__button");p.setAttribute("id","lh-button__swap-locales"),p.setAttribute("title","Show Language Picker"),p.setAttribute("aria-label","Toggle language picker"),p.setAttribute("aria-haspopup","menu"),p.setAttribute("aria-expanded","false"),p.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");let h=o.createElementNS("http://www.w3.org/2000/svg","svg");h.setAttribute("width","20px"),h.setAttribute("height","20px"),h.setAttribute("viewBox","0 0 24 24"),h.setAttribute("fill","currentColor");let u=o.createElementNS("http://www.w3.org/2000/svg","path");u.setAttribute("d","M0 0h24v24H0V0z"),u.setAttribute("fill","none");let f=o.createElementNS("http://www.w3.org/2000/svg","path");f.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"),h.append(u,f),p.append(" ",h," ");let b=o.createElement("div","lh-tools-locale__selector-wrapper");b.setAttribute("id","lh-tools-locale__selector-wrapper"),b.setAttribute("role","menu"),b.setAttribute("aria-labelledby","lh-button__swap-locales"),b.setAttribute("aria-hidden","true"),b.append(" "," "),d.append(" ",p," ",b," ");let _=o.createElement("button","lh-tools__button");_.setAttribute("id","lh-tools-button"),_.setAttribute("title","Tools menu"),_.setAttribute("aria-label","Toggle report tools menu"),_.setAttribute("aria-haspopup","menu"),_.setAttribute("aria-expanded","false"),_.setAttribute("aria-controls","lh-tools-dropdown");let m=o.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("width","100%"),m.setAttribute("height","100%"),m.setAttribute("viewBox","0 0 24 24");let w=o.createElementNS("http://www.w3.org/2000/svg","path");w.setAttribute("d","M0 0h24v24H0z"),w.setAttribute("fill","none");let v=o.createElementNS("http://www.w3.org/2000/svg","path");v.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"),m.append(" ",w," ",v," "),_.append(" ",m," ");let x=o.createElement("div","lh-tools__dropdown");x.setAttribute("id","lh-tools-dropdown"),x.setAttribute("role","menu"),x.setAttribute("aria-labelledby","lh-tools-button");let E=o.createElement("a","lh-report-icon lh-report-icon--print");E.setAttribute("role","menuitem"),E.setAttribute("tabindex","-1"),E.setAttribute("href","#"),E.setAttribute("data-i18n","dropdownPrintSummary"),E.setAttribute("data-action","print-summary");let A=o.createElement("a","lh-report-icon lh-report-icon--print");A.setAttribute("role","menuitem"),A.setAttribute("tabindex","-1"),A.setAttribute("href","#"),A.setAttribute("data-i18n","dropdownPrintExpanded"),A.setAttribute("data-action","print-expanded");let C=o.createElement("a","lh-report-icon lh-report-icon--copy");C.setAttribute("role","menuitem"),C.setAttribute("tabindex","-1"),C.setAttribute("href","#"),C.setAttribute("data-i18n","dropdownCopyJSON"),C.setAttribute("data-action","copy");let L=o.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");L.setAttribute("role","menuitem"),L.setAttribute("tabindex","-1"),L.setAttribute("href","#"),L.setAttribute("data-i18n","dropdownSaveHTML"),L.setAttribute("data-action","save-html");let S=o.createElement("a","lh-report-icon lh-report-icon--download");S.setAttribute("role","menuitem"),S.setAttribute("tabindex","-1"),S.setAttribute("href","#"),S.setAttribute("data-i18n","dropdownSaveJSON"),S.setAttribute("data-action","save-json");let z=o.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 M=o.createElement("a","lh-report-icon lh-report-icon--open");M.setAttribute("role","menuitem"),M.setAttribute("tabindex","-1"),M.setAttribute("href","#"),M.setAttribute("data-i18n","dropdownSaveGist"),M.setAttribute("data-action","save-gist");let T=o.createElement("a","lh-report-icon lh-report-icon--open lh-hidden");T.setAttribute("role","menuitem"),T.setAttribute("tabindex","-1"),T.setAttribute("href","#"),T.setAttribute("data-i18n","dropdownViewUnthrottledTrace"),T.setAttribute("data-action","view-unthrottled-trace");let F=o.createElement("a","lh-report-icon lh-report-icon--dark");return F.setAttribute("role","menuitem"),F.setAttribute("tabindex","-1"),F.setAttribute("href","#"),F.setAttribute("data-i18n","dropdownDarkTheme"),F.setAttribute("data-action","toggle-dark"),x.append(" ",E," ",A," ",C," "," ",L," ",S," ",z," ",M," "," ",T," ",F," "),c.append(" ",d," ",_," ",x," "),n.append(" "," ",r," ",s," ",c," "),e.append(n),e}function Ie(o){let e=o.createFragment(),t=o.createElement("div","lh-warnings lh-warnings--toplevel"),n=o.createElement("p","lh-warnings__msg"),r=o.createElement("ul");return t.append(" ",n," ",r," "),e.append(t),e}function X(o,e){switch(e){case"3pFilter":return me(o);case"audit":return fe(o);case"categoryHeader":return be(o);case"chevron":return ve(o);case"clump":return _e(o);case"crc":return we(o);case"crcChain":return ye(o);case"elementScreenshot":return xe(o);case"footer":return Ee(o);case"fraction":return ke(o);case"gauge":return Ae(o);case"gaugePwa":return Se(o);case"heading":return Ce(o);case"metric":return ze(o);case"opportunity":return Le(o);case"opportunityHeader":return Me(o);case"scorescale":return Te(o);case"scoresWrapper":return Fe(o);case"snippet":return De(o);case"snippetContent":return Ne(o);case"snippetHeader":return Re(o);case"snippetLine":return Pe(o);case"styles":return He(o);case"topbar":return Ue(o);case"warningsToplevel":return Ie(o)}throw new Error("unexpected component: "+e)}var V=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 r of t.split(/\s+/))r&&n.classList.add(r);return n}createElementNS(e,t,n){let r=this._document.createElementNS(e,t);if(n)for(let i of n.split(/\s+/))i&&r.classList.add(i);return r}createFragment(){return this._document.createDocumentFragment()}createTextNode(e){return this._document.createTextNode(e)}createChildOf(e,t,n){let r=this.createElement(t,n);return e.append(r),r}createComponent(e){let t=this._componentCache.get(e);if(t){let r=t.cloneNode(!0);return this.findAll("style",r).forEach(i=>i.remove()),r}return t=X(this,e),this._componentCache.set(e,t),t.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(e,t={}){let n=this.createElement("span");for(let r of k.splitMarkdownLink(e)){let i=r.text.includes("`")?this.convertMarkdownCodeSnippets(r.text):r.text;if(!r.isLink){n.append(i);continue}let a=new URL(r.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:"],r;try{r=new URL(t)}catch{}r&&n.includes(r.protocol)&&(e.href=r.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 k.splitMarkdownCodeSpans(e))if(n.isCode){let r=this.createElement("code");r.textContent=n.text,t.append(r)}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){let n=t.querySelector(e);if(n===null)throw new Error(`query ${e} not found`);return n}findAll(e,t){return Array.from(t.querySelectorAll(e))}fireEventOn(e,t=this._document,n){let r=new CustomEvent(e,n?{detail:n}:void 0);t.dispatchEvent(r)}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 ee=0,g=class o{static i18n=null;static strings={};static reportJson=null;static apply(e){o.strings={...te,...e.providedStrings},o.i18n=e.i18n,o.reportJson=e.reportJson}static getUniqueSuffix(){return ee++}static resetUniqueSuffix(){ee=0}};var ne="data:image/jpeg;base64,";function re(o){o.configSettings.locale||(o.configSettings.locale="en"),o.configSettings.formFactor||(o.configSettings.formFactor=o.configSettings.emulatedFormFactor),o.finalDisplayedUrl=k.getFinalDisplayedUrl(o),o.mainDocumentUrl=k.getMainDocumentUrl(o);for(let n of Object.values(o.audits))if((n.scoreDisplayMode==="not_applicable"||n.scoreDisplayMode==="not-applicable")&&(n.scoreDisplayMode="notApplicable"),n.details){if((n.details.type===void 0||n.details.type==="diagnostic")&&(n.details.type="debugdata"),n.details.type==="filmstrip")for(let r of n.details.items)r.data.startsWith(ne)||(r.data=ne+r.data);if(n.details.type==="table")for(let r of n.details.headings){let{itemType:i,text:a}=r;i!==void 0&&(r.valueType=i,delete r.itemType),a!==void 0&&(r.label=a,delete r.text);let l=r.subItemsHeading?.itemType;r.subItemsHeading&&l!==void 0&&(r.subItemsHeading.valueType=l,delete r.subItemsHeading.itemType)}if(n.id==="third-party-summary"&&(n.details.type==="opportunity"||n.details.type==="table")){let{headings:r,items:i}=n.details;if(r[0].valueType==="link"){r[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]=o.lighthouseVersion.split(".").map(Number),t=o.categories.performance;if(e<9&&t){o.categoryGroups||(o.categoryGroups={}),o.categoryGroups.hidden={title:""};for(let n of t.auditRefs)n.group?["load-opportunities","diagnostics"].includes(n.group)&&delete n.group:n.group="hidden"}if(o.environment||(o.environment={benchmarkIndex:0,networkUserAgent:o.userAgent,hostUserAgent:o.userAgent}),o.configSettings.screenEmulation||(o.configSettings.screenEmulation={width:-1,height:-1,deviceScaleFactor:-1,mobile:/mobile/i.test(o.environment.hostUserAgent),disabled:!1}),o.i18n||(o.i18n={}),o.audits["full-page-screenshot"]){let n=o.audits["full-page-screenshot"].details;n?o.fullPageScreenshot={screenshot:n.screenshot,nodes:n.nodes}:o.fullPageScreenshot=null,delete o.audits["full-page-screenshot"]}}var N=k.RATINGS,y=class o{static prepareReportResult(e){let t=JSON.parse(JSON.stringify(e));re(t);for(let r of Object.values(t.audits))r.details&&(r.details.type==="opportunity"||r.details.type==="table")&&!r.details.isEntityGrouped&&t.entities&&o.classifyEntities(t.entities,r.details);if(typeof t.categories!="object")throw new Error("No categories provided.");let n=new Map;for(let r of Object.values(t.categories))r.auditRefs.forEach(i=>{i.relevantAudits&&i.relevantAudits.forEach(a=>{let l=n.get(a)||[];l.push(i),n.set(a,l)})}),r.auditRefs.forEach(i=>{let a=t.audits[i.id];i.result=a,n.has(i.id)&&(i.relevantMetrics=n.get(i.id)),t.stackPacks&&t.stackPacks.forEach(l=>{l.descriptions[i.id]&&(i.stackPacks=i.stackPacks||[],i.stackPacks.push({title:l.title,iconDataURL:l.iconDataURL,description:l.descriptions[i.id]}))})});return t}static getUrlLocatorFn(e){let t=e.find(r=>r.valueType==="url")?.key;if(t&&typeof t=="string")return r=>{let i=r[t];if(typeof i=="string")return i};let n=e.find(r=>r.valueType==="source-location")?.key;if(n)return r=>{let i=r[n];if(typeof i=="object"&&i.type==="source-location")return i.url}}static classifyEntities(e,t){let{items:n,headings:r}=t;if(!n.length||n.some(a=>a.entity))return;let i=o.getUrlLocatorFn(r);if(i)for(let a of n){let l=i(a);if(!l)continue;let s="";try{s=k.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 r of e){let i=t[r],a=n[r];if((typeof i!=typeof a||!["number","string"].includes(typeof i))&&console.warn(`Warning: Attempting to sort unsupported value type: ${r}.`),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,r,i=e.throttling,a=g.i18n,l=g.strings;switch(e.throttlingMethod){case"provided":r=n=t=l.throttlingProvided;break;case"devtools":{let{cpuSlowdownMultiplier:h,requestLatencyMs:u}=i;t=`${a.formatNumber(h)}x slowdown (DevTools)`,n=`${a.formatMilliseconds(u)} HTTP RTT, ${a.formatKbps(i.downloadThroughputKbps)} down, ${a.formatKbps(i.uploadThroughputKbps)} up (DevTools)`,r=(()=>u===150*3.75&&i.downloadThroughputKbps===1.6*1024*.9&&i.uploadThroughputKbps===750*.9)()?l.runtimeSlow4g:l.runtimeCustom;break}case"simulate":{let{cpuSlowdownMultiplier:h,rttMs:u,throughputKbps:f}=i;t=`${a.formatNumber(h)}x slowdown (Simulated)`,n=`${a.formatMilliseconds(u)} TCP RTT, ${a.formatKbps(f)} throughput (Simulated)`,r=(()=>u===150&&f===1.6*1024)()?l.runtimeSlow4g:l.runtimeCustom;break}default:r=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 p=s?void 0:`${e.screenEmulation.width}x${e.screenEmulation.height}, DPR ${e.screenEmulation.deviceScaleFactor}`;return{deviceEmulation:d,screenEmulation:p,cpuThrottling:t,networkThrottling:n,summary:r}}static showAsPassed(e){switch(e.scoreDisplayMode){case"manual":case"notApplicable":return!0;case"error":case"informative":return!1;case"numeric":case"binary":default:return Number(e.score)>=N.PASS.minScore}}static calculateRating(e,t){if(t==="manual"||t==="notApplicable")return N.PASS.label;if(t==="error")return N.ERROR.label;if(e===null)return N.FAIL.label;let n=N.FAIL.label;return e>=N.PASS.minScore?n=N.PASS.label:e>=N.AVERAGE.minScore&&(n=N.AVERAGE.label),n}static calculateCategoryFraction(e){let t=0,n=0,r=0,i=0;for(let a of e.auditRefs){let l=o.showAsPassed(a.result);if(!(a.group==="hidden"||a.result.scoreDisplayMode==="manual"||a.result.scoreDisplayMode==="notApplicable")){if(a.result.scoreDisplayMode==="informative"){l||++r;continue}++t,i+=a.weight,l&&n++}}return{numPassed:n,numPassableAudits:t,numInformative:r,totalWeight:i}}static isPluginCategory(e){return e.startsWith("lighthouse-plugin-")}static shouldDisplayAsFraction(e){return e==="timespan"||e==="snapshot"}},te={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 load",runtimeAnalysisWindow:"Initial page load",runtimeSingleLoadTooltip:"This data is taken from a single page load, 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"};var R=class{constructor(e,t){this.dom=e,this.detailsRenderer=t}get _clumpTitles(){return{warning:g.strings.warningAuditsGroupTitle,manual:g.strings.manualAuditsGroupTitle,passed:g.strings.passedAuditsGroupTitle,notApplicable:g.strings.notApplicableAuditsGroupTitle}}renderAudit(e){let t=this.dom.createComponent("audit");return this.populateAuditValues(e,t)}populateAuditValues(e,t){let n=g.strings,r=this.dom.find(".lh-audit",t);r.id=e.result.id;let i=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",r).textContent=e.result.displayValue);let a=this.dom.find(".lh-audit__title",r);a.append(this.dom.convertMarkdownCodeSnippets(e.result.title));let l=this.dom.find(".lh-audit__description",r);l.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(let h of e.relevantMetrics||[]){let u=this.dom.createChildOf(l,"span","lh-audit__adorn");u.title=`Relevant to ${h.result.title}`,u.textContent=h.acronym||h.id}e.stackPacks&&e.stackPacks.forEach(h=>{let u=this.dom.createElement("img","lh-audit__stackpack__img");u.src=h.iconDataURL,u.alt=h.title;let f=this.dom.convertMarkdownLinkSnippets(h.description,{alwaysAppendUtmSource:!0}),b=this.dom.createElement("div","lh-audit__stackpack");b.append(u,f),this.dom.find(".lh-audit__stackpacks",r).append(b)});let s=this.dom.find("details",r);if(e.result.details){let h=this.detailsRenderer.render(e.result.details);h&&(h.classList.add("lh-details"),s.append(h))}if(this.dom.find(".lh-chevron-container",r).append(this._createChevron()),this._setRatingClass(r,e.result.score,i),e.result.scoreDisplayMode==="error"){r.classList.add("lh-audit--error");let h=this.dom.find(".lh-audit__display-text",r);h.textContent=n.errorLabel,h.classList.add("lh-tooltip-boundary");let u=this.dom.createChildOf(h,"div","lh-tooltip lh-tooltip--error");u.textContent=e.result.errorMessage||n.errorMissingAuditInfo}else if(e.result.explanation){let h=this.dom.createChildOf(a,"div","lh-audit-explanation");h.textContent=e.result.explanation}let c=e.result.warnings;if(!c||c.length===0)return r;let d=this.dom.find("summary",s),p=this.dom.createChildOf(d,"div","lh-warnings");if(this.dom.createChildOf(p,"span").textContent=n.warningHeader,c.length===1)p.append(this.dom.createTextNode(c.join("")));else{let h=this.dom.createChildOf(p,"ul");for(let u of c){let f=this.dom.createChildOf(h,"li");f.textContent=u}}return r}injectFinalScreenshot(e,t,n){let r=t["final-screenshot"];if(!r||r.scoreDisplayMode==="error"||!r.details||r.details.type!=="screenshot")return null;let i=this.dom.createElement("img","lh-final-ss-image"),a=r.details.data;i.src=a,i.alt=r.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 r=y.calculateRating(t,n);return e.classList.add(`lh-audit--${n.toLowerCase()}`),n!=="informative"&&e.classList.add(`lh-audit--${r}`),e}renderCategoryHeader(e,t,n){let r=this.dom.createComponent("categoryHeader"),i=this.dom.find(".lh-score__gauge",r),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",r).append(l)}return r}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 r=null;return e.description&&(r=this.dom.convertMarkdownLinkSnippets(e.description),r.classList.add("lh-audit-group__description","lh-audit-group__footer"),t.append(r)),[t,r]}_renderGroupedAudits(e,t){let n=new Map,r="NotAGroup";n.set(r,[]);for(let a of e){let l=a.group||r;if(l==="hidden")continue;let s=n.get(l)||[];s.push(a),n.set(l,s)}let i=[];for(let[a,l]of n){if(a===r){for(let p of l)i.push(this.renderAudit(p));continue}let s=t[a],[c,d]=this.renderAuditGroup(s);for(let p of l)c.insertBefore(this.renderAudit(p),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,{auditRefs:t,description:n,openByDefault:r}){let i=this.dom.createComponent("clump"),a=this.dom.find(".lh-clump",i);r&&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(this.renderAudit.bind(this));a.append(...d);let p=this.dom.find(".lh-audit-group",i);if(n){let h=this.dom.convertMarkdownLinkSnippets(n);h.classList.add("lh-audit-group__description","lh-audit-group__footer"),p.append(h)}return this.dom.find(".lh-clump-toggletext--show",p).textContent=g.strings.show,this.dom.find(".lh-clump-toggletext--hide",p).textContent=g.strings.hide,a.classList.add(`lh-clump--${e.toLowerCase()}`),p}renderCategoryScore(e,t,n){let r;if(n&&y.shouldDisplayAsFraction(n.gatherMode)?r=this.renderCategoryFraction(e):r=this.renderScoreGauge(e,t),n?.omitLabel&&this.dom.find(".lh-gauge__label,.lh-fraction__label",r).remove(),n?.onPageAnchorRendered){let i=this.dom.find("a",r);n.onPageAnchorRendered(i)}return r}renderScoreGauge(e,t){let n=this.dom.createComponent("gauge"),r=this.dom.find("a.lh-gauge__wrapper",n);y.isPluginCategory(e.id)&&r.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=g.strings.errorLabel),e.auditRefs.length===0||this.hasApplicableAudits(e)?r.classList.add(`lh-gauge__wrapper--${y.calculateRating(e.score)}`):(r.classList.add("lh-gauge__wrapper--not-applicable"),c.textContent="-",c.title=g.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:r,numPassableAudits:i,totalWeight:a}=y.calculateCategoryFraction(e),l=r/i,s=this.dom.find(".lh-fraction__content",t),c=this.dom.createElement("span");c.textContent=`${r}/${i}`,s.append(c);let d=y.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")),r=Number(e.getAttribute("stroke-width")),i=.25*r/n;e.style.transform=`rotate(${-90+i*360}deg)`;let a=t*n-r/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:y.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,t={},n){let r=this.dom.createElement("div","lh-category");r.id=e.id,r.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){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 h=this.renderUnexpandableClump(s,t);h.classList.add("lh-clump--failed"),r.append(h);continue}let c=l==="manual"?e.manualDescription:void 0,d=l==="warning"||l==="manual"&&a===0,p=this.renderClump(l,{auditRefs:s,description:c,openByDefault:d});r.append(p)}return r}};var I=class{static initTree(e){let t=0,n=Object.keys(e);return n.length>0&&(t=e[n[0]].request.startTime),{tree:e,startTime:t,transferSize:0}}static createSegment(e,t,n,r,i,a){let l=e[t],s=Object.keys(e),c=s.indexOf(t)===s.length-1,d=!!l.children&&Object.keys(l.children).length>0,p=Array.isArray(i)?i.slice(0):[];return typeof a<"u"&&p.push(!a),{node:l,isLastChild:c,hasChildren:d,startTime:n,transferSize:r+l.request.transferSize,treeMarkers:p}}static createChainNode(e,t,n){let r=e.createComponent("crcChain");e.find(".lh-crc-node",r).setAttribute("title",t.node.request.url);let i=e.find(".lh-crc-node__tree-marker",r);t.treeMarkers.forEach(p=>{let h=p?"lh-tree-marker lh-vert":"lh-tree-marker";i.append(e.createElement("span",h),e.createElement("span","lh-tree-marker"))});let a=t.isLastChild?"lh-tree-marker lh-up-right":"lh-tree-marker lh-vert-right",l=t.hasChildren?"lh-tree-marker lh-horiz-down":"lh-tree-marker lh-right";i.append(e.createElement("span",a),e.createElement("span","lh-tree-marker lh-right"),e.createElement("span",l));let s=t.node.request.url,c=n.renderTextURL(s),d=e.find(".lh-crc-node__tree-value",r);if(d.append(c),!t.hasChildren){let{startTime:p,endTime:h,transferSize:u}=t.node.request,f=e.createElement("span","lh-crc-node__chain-duration");f.textContent=" - "+g.i18n.formatMilliseconds((h-p)*1e3)+", ";let b=e.createElement("span","lh-crc-node__chain-duration");b.textContent=g.i18n.formatBytesToKiB(u,.01),d.append(f,b)}return r}static buildTree(e,t,n,r,i,a){if(r.append(H.createChainNode(e,n,a)),n.node.children)for(let l of Object.keys(n.node.children)){let s=H.createSegment(n.node.children,l,n.startTime,n.transferSize,n.treeMarkers,n.isLastChild);H.buildTree(e,t,s,r,i,a)}}static render(e,t,n){let r=e.createComponent("crc"),i=e.find(".lh-crc",r);e.find(".lh-crc-initial-nav",r).textContent=g.strings.crcInitialNavigation,e.find(".lh-crc__longest_duration_label",r).textContent=g.strings.crcLongestDurationLabel,e.find(".lh-crc__longest_duration",r).textContent=g.i18n.formatMilliseconds(t.longestChain.duration);let a=H.initTree(t.chains);for(let l of Object.keys(a.tree)){let s=H.createSegment(a.tree,l,a.startTime,a.transferSize);H.buildTree(e,r,s,i,t,n)}return e.find(".lh-crc-container",r)}},H=I;function Oe(o,e){return e.left<=o.width&&0<=e.right&&e.top<=o.height&&0<=e.bottom}function oe(o,e,t){return o<e?e:o>t?t:o}function Ve(o){return{x:o.left+o.width/2,y:o.top+o.height/2}}var P=class o{static getScreenshotPositions(e,t,n){let r=Ve(e),i=oe(r.x-t.width/2,0,n.width-t.width),a=oe(r.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,r,i){let a=e.find("clipPath",t),l=`clip-${g.getUniqueSuffix()}`;a.id=l,t.style.clipPath=`url(#${l})`;let s=n.top/i.height,c=s+r.height/i.height,d=n.left/i.width,p=d+r.width/i.width,h=[`0,0 1,0 1,${s} 0,${s}`,`0,${c} 1,${c} 1,1 0,1`,`0,${s} ${d},${s} ${d},${c} 0,${c}`,`${p},${s} 1,${s} 1,${c} ${p},${c}`];for(let u of h){let f=e.createElementNS("http://www.w3.org/2000/svg","polygon");f.setAttribute("points",u),a.append(f)}}static installFullPageScreenshot(e,t){e.style.setProperty("--element-screenshot-url",`url('${t.data}')`)}static installOverlayFeature(e){let{dom:t,rootEl:n,overlayContainerEl:r,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");r.append(d);let p={width:d.clientWidth*.95,height:d.clientHeight*.8},h={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)},u=o.render(t,i.screenshot,h,p);if(!u){d.remove();return}d.append(u),d.addEventListener("click",()=>d.remove())}))}static _computeZoomFactor(e,t){let r={x:t.width/e.width,y:t.height/e.height},i=.75*Math.min(r.x,r.y);return Math.min(1,i)}static render(e,t,n,r){if(!Oe(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,r),s={width:r.width/l,height:r.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=o.getScreenshotPositions(n,s,{width:t.width,height:t.height}),p=e.find("div.lh-element-screenshot__image",a);p.style.width=c.width+"px",p.style.height=c.height+"px",p.style.backgroundPositionY=-(d.screenshot.top*l)+"px",p.style.backgroundPositionX=-(d.screenshot.left*l)+"px",p.style.backgroundSize=`${t.width*l}px ${t.height*l}px`;let h=e.find("div.lh-element-screenshot__element-marker",a);h.style.width=n.width*l+"px",h.style.height=n.height*l+"px",h.style.left=d.clip.left*l+"px",h.style.top=d.clip.top*l+"px";let u=e.find("div.lh-element-screenshot__mask",a);return u.style.width=c.width+"px",u.style.height=c.height+"px",o.renderClipPathInScreenshot(e,u,d.clip,n,s),a}};var $e=["http://","https://","data:"],Be=["bytes","numeric","ms","timespanMs"],O=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"table":case"opportunity":return this._renderTable(e);case"criticalrequestchain":return I.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=g.i18n.formatBytesToKiB(e.value,e.granularity||.1),n=this._renderText(t);return n.title=g.i18n.formatBytes(e.value),n}_renderMilliseconds(e){let t;return e.displayUnit==="duration"?t=g.i18n.formatDuration(e.value):t=g.i18n.formatMilliseconds(e.value,e.granularity||10),this._renderText(t)}renderTextURL(e){let t=e,n,r,i;try{let l=k.parseURL(t);n=l.file==="/"?l.origin:l.file,r=l.file==="/"||l.hostname===""?"":`(${l.hostname})`,i=t}catch{n=t}let a=this._dom.createElement("div","lh-text__url");if(a.append(this._renderLink({text:n,url:t})),r){let l=this._renderText(r);l.classList.add("lh-text__url-host"),a.append(l)}return i&&(a.title=t,a.dataset.url=t),a}_renderLink(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}_renderNumeric(e){let t=g.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"source-location":return this.renderSourceLocation(e);case"url":return this.renderTextURL(e.value);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 $e.some(r=>n.startsWith(r))?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 r of t){if(!r||!r.key){this._dom.createChildOf(n,"td","lh-table-column--empty");continue}let i=e[r.key],a;if(i!=null&&(a=this._renderTableValue(i,r)),a){let l=`lh-table-column--${r.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 r=t.map(this._getDerivedSubItemsHeading);if(!r.some(Boolean))return n;for(let i of e.subItems.items){let a=this._renderTableRow(i,r);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 r=this._dom.find("td",e);if(n.category){let i=this._dom.createElement("span");i.classList.add("lh-audit__adorn"),i.textContent=n.category,r.append(" ",i)}if(n.isFirstParty){let i=this._dom.createElement("span");i.classList.add("lh-audit__adorn","lh-audit__adorn1p"),i.textContent=g.strings.firstPartyChipLabel,r.append(" ",i)}if(n.homepage){let i=this._dom.createElement("a");i.href=n.homepage,i.target="_blank",i.title=g.strings.openInANewTabTooltip,i.classList.add("lh-report-icon--external"),r.append(" ",i)}}_renderEntityGroupRow(e,t){let n={...t[0]};n.valueType="text";let r=[n,...t.slice(1)],i=this._dom.createFragment();return i.append(this._renderTableRow(e,r)),this._dom.find("tr",i).classList.add("lh-row--group"),i}_getEntityGroupItems(e){let{items:t,headings:n,sortedBy:r}=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)||Be.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 p=typeof d.entity=="string"?d.entity:void 0,h=s.get(p)||{[l]:p||g.strings.unattributable,entity:p};for(let u of a)h[u]=Number(h[u]||0)+Number(d[u]||0);s.set(p,h)}let c=[...s.values()];return r&&c.sort(y.getTableItemSortComparator(r)),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"),r=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(r,"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 p of e.items.filter(h=>h.entity===s))c.append(this._renderTableRowsFromItem(p,e.headings));let d=this._dom.findAll("tr",c);s&&d.length&&(d.forEach(p=>p.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),p=d[0];if(typeof s.entity=="string"&&(p.dataset.entity=s.entity),e.isEntityGrouped&&s.entity)p.classList.add("lh-row--group"),this._adornEntityGroupRow(p);else for(let h of d)h.classList.add(l?"lh-row--even":"lh-row--odd");l=!l,a.append(c)}}return t}_renderList(e){let t=this._dom.createElement("div","lh-list");return e.items.forEach(n=>{let r=this.render(n);r&&t.append(r)}),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 r={width:147,height:100},i=P.render(this._dom,this._fullPageScreenshot.screenshot,n,r);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 r;if(e.urlProvider==="network"&&n)r=this._renderLink({url:e.url,text:n}),r.title=`maps to generated location ${t}`;else if(e.urlProvider==="network"&&!n)r=this.renderTextURL(e.url),this._dom.find(".lh-link",r).textContent+=`:${e.line+1}:${e.column}`;else if(e.urlProvider==="comment"&&n)r=this._renderText(`${n} (from source map)`),r.title=`${t} (from sourceURL)`;else if(e.urlProvider==="comment"&&!n)r=this._renderText(`${t} (from sourceURL)`);else return null;return r.classList.add("lh-source-location"),r.setAttribute("data-source-url",e.url),r.setAttribute("data-source-line",String(e.line)),r.setAttribute("data-source-column",String(e.column)),r}_renderFilmstrip(e){let t=this._dom.createElement("div","lh-filmstrip");for(let n of e.items){let r=this._dom.createChildOf(t,"div","lh-filmstrip__frame"),i=this._dom.createChildOf(r,"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 Y="\xA0";var $=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 r,i=[n.minimumFractionDigits,n.maximumFractionDigits,n.style,n.unit,n.unitDisplay,this._locale].join("");return r=this._cachedNumberFormatters.get(i),r||(r=new Intl.NumberFormat(this._locale,n),this._cachedNumberFormatters.set(i,r)),r.format(e).replace(" ",Y)}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)+`${Y}KiB`}formatBytesToMiB(e,t=void 0){return this._formatNumberWithGranularity(e/1048576,t)+`${Y}MiB`}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=[],r={day:60*60*24,hour:60*60,minute:60,second:1};return Object.keys(r).forEach(i=>{let a=r[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(" ")}};var B=class extends R{_renderMetric(e){let t=this.dom.createComponent("metric"),n=this.dom.find(".lh-metric",t);n.id=e.result.id;let r=y.calculateRating(e.result.score,e.result.scoreDisplayMode);n.classList.add(`lh-metric--${r}`);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}_renderOpportunity(e,t){let n=this.dom.createComponent("opportunity"),r=this.populateAuditValues(e,n);if(r.id=e.result.id,!e.result.details||e.result.scoreDisplayMode==="error")return r;let i=e.result.details;if(i.overallSavingsMs===void 0)return r;let a=this.dom.find("span.lh-audit__display-text, div.lh-audit__display-text",r),l=`${i.overallSavingsMs/t*100}%`;if(this.dom.find("div.lh-sparkline__bar",r).style.width=l,a.textContent=g.i18n.formatSeconds(i.overallSavingsMs,.01),e.result.displayValue){let s=e.result.displayValue;this.dom.find("div.lh-load-opportunity__sparkline",r).title=s,a.title=s}return r}_getWastedMs(e){if(e.result.details){let t=e.result.details;if(typeof t.overallSavingsMs!="number")throw new Error("non-opportunity details passed to _getWastedMs");return t.overallSavingsMs}else return Number.MIN_VALUE}_getScoringCalculatorHref(e){let t=e.filter(p=>p.group==="metrics"),n=e.find(p=>p.id==="interactive"),r=e.find(p=>p.id==="first-cpu-idle"),i=e.find(p=>p.id==="first-meaningful-paint");n&&t.push(n),r&&t.push(r),i&&t.push(i);let a=p=>Math.round(p*100)/100,s=[...t.map(p=>{let h;return typeof p.result.numericValue=="number"?(h=p.id==="cumulative-layout-shift"?a(p.result.numericValue):Math.round(p.result.numericValue),h=h.toString()):h="null",[p.acronym||p.id,h]})];g.reportJson&&(s.push(["device",g.reportJson.configSettings.formFactor]),s.push(["version",g.reportJson.lighthouseVersion]));let c=new URLSearchParams(s),d=new URL("https://googlechrome.github.io/lighthouse/scorecalc/");return d.hash=c.toString(),d.href}_classifyPerformanceAudit(e){return e.group?null:e.result.details?.overallSavingsMs!==void 0?"load-opportunity":"diagnostic"}render(e,t,n){let r=g.strings,i=this.dom.createElement("div","lh-category");i.id=e.id,i.append(this.renderCategoryHeader(e,t,n));let a=e.auditRefs.filter(m=>m.group==="metrics");if(a.length){let[m,w]=this.renderAuditGroup(t.metrics),v=this.dom.createElement("input","lh-metrics-toggle__input"),x=`lh-metrics-toggle${g.getUniqueSuffix()}`;v.setAttribute("aria-label","Toggle the display of metric descriptions"),v.type="checkbox",v.id=x,m.prepend(v);let E=this.dom.find(".lh-audit-group__header",m),A=this.dom.createChildOf(E,"label","lh-metrics-toggle__label");A.htmlFor=x;let C=this.dom.createChildOf(A,"span","lh-metrics-toggle__labeltext--show"),L=this.dom.createChildOf(A,"span","lh-metrics-toggle__labeltext--hide");C.textContent=g.strings.expandView,L.textContent=g.strings.collapseView;let S=this.dom.createElement("div","lh-metrics-container");if(m.insertBefore(S,w),a.forEach(z=>{S.append(this._renderMetric(z))}),i.querySelector(".lh-gauge__wrapper")){let z=this.dom.find(".lh-category-header__description",i),M=this.dom.createChildOf(z,"div","lh-metrics__disclaimer"),T=this.dom.convertMarkdownLinkSnippets(r.varianceDisclaimer);M.append(T);let F=this.dom.createChildOf(M,"a","lh-calclink");F.target="_blank",F.textContent=r.calculatorLink,this.dom.safelySetHref(F,this._getScoringCalculatorHref(e.auditRefs))}m.classList.add("lh-audit-group--metrics"),i.append(m)}let l=this.dom.createChildOf(i,"div","lh-filmstrip-container"),c=e.auditRefs.find(m=>m.id==="screenshot-thumbnails")?.result;if(c?.details){l.id=c.id;let m=this.detailsRenderer.render(c.details);m&&l.append(m)}let d=e.auditRefs.filter(m=>this._classifyPerformanceAudit(m)==="load-opportunity").filter(m=>!y.showAsPassed(m.result)).sort((m,w)=>this._getWastedMs(w)-this._getWastedMs(m)),p=a.filter(m=>!!m.relevantAudits);if(p.length&&this.renderMetricAuditFilter(p,i),d.length){let w=d.map(S=>this._getWastedMs(S)),v=Math.max(...w),x=Math.max(Math.ceil(v/1e3)*1e3,2e3),[E,A]=this.renderAuditGroup(t["load-opportunities"]),C=this.dom.createComponent("opportunityHeader");this.dom.find(".lh-load-opportunity__col--one",C).textContent=r.opportunityResourceColumnLabel,this.dom.find(".lh-load-opportunity__col--two",C).textContent=r.opportunitySavingsColumnLabel;let L=this.dom.find(".lh-load-opportunity__header",C);E.insertBefore(L,A),d.forEach(S=>E.insertBefore(this._renderOpportunity(S,x),A)),E.classList.add("lh-audit-group--load-opportunities"),i.append(E)}let h=e.auditRefs.filter(m=>this._classifyPerformanceAudit(m)==="diagnostic").filter(m=>!y.showAsPassed(m.result)).sort((m,w)=>{let v=m.result.scoreDisplayMode==="informative"?100:Number(m.result.score),x=w.result.scoreDisplayMode==="informative"?100:Number(w.result.score);return v-x});if(h.length){let[m,w]=this.renderAuditGroup(t.diagnostics);h.forEach(v=>m.insertBefore(this.renderAudit(v),w)),m.classList.add("lh-audit-group--diagnostics"),i.append(m)}let u=e.auditRefs.filter(m=>this._classifyPerformanceAudit(m)&&y.showAsPassed(m.result));if(!u.length)return i;let f={auditRefs:u,groupDefinitions:t},b=this.renderClump("passed",f);i.append(b);let _=[];if(["performance-budget","timing-budget"].forEach(m=>{let w=e.auditRefs.find(v=>v.id===m);if(w?.result.details){let v=this.detailsRenderer.render(w.result.details);v&&(v.id=m,v.classList.add("lh-details","lh-details--budget","lh-audit"),_.push(v))}}),_.length>0){let[m,w]=this.renderAuditGroup(t.budgets);_.forEach(v=>m.insertBefore(v,w)),m.classList.add("lh-audit-group--budgets"),i.append(m)}return i}renderMetricAuditFilter(e,t){let n=this.dom.createElement("div","lh-metricfilter"),r=this.dom.createChildOf(n,"span","lh-metricfilter__text");r.textContent=g.strings.showRelevantAudits;let i=[{acronym:"All"},...e],a=g.getUniqueSuffix();for(let l of i){let s=`metric-${l.acronym}-${a}`,c=this.dom.createChildOf(n,"input","lh-metricfilter__radio");c.type="radio",c.name=`metricsfilter-${a}`,c.id=s;let d=this.dom.createChildOf(n,"label","lh-metricfilter__label");d.htmlFor=s,d.title=l.result?.title,d.textContent=l.acronym||l.id,l.acronym==="All"&&(c.checked=!0,d.classList.add("lh-metricfilter__label--active")),t.append(n),c.addEventListener("input",p=>{for(let u of t.querySelectorAll("label.lh-metricfilter__label"))u.classList.toggle("lh-metricfilter__label--active",u.htmlFor===s);t.classList.toggle("lh-category--filtered",l.acronym!=="All");for(let u of t.querySelectorAll("div.lh-audit")){if(l.acronym==="All"){u.hidden=!1;continue}u.hidden=!0,l.relevantAudits&&l.relevantAudits.includes(u.id)&&(u.hidden=!1)}let h=t.querySelectorAll("div.lh-audit-group, details.lh-audit-group");for(let u of h){u.hidden=!1;let f=Array.from(u.querySelectorAll("div.lh-audit")),b=!!f.length&&f.every(_=>_.hidden);u.hidden=b}})}}};var G=class o extends R{render(e,t={}){let n=this.dom.createElement("div","lh-category");n.id=e.id,n.append(this.renderCategoryHeader(e,t));let r=e.auditRefs,i=r.filter(c=>c.result.scoreDisplayMode!=="manual"),a=this._renderAudits(i,t);n.append(a);let l=r.filter(c=>c.result.scoreDisplayMode==="manual"),s=this.renderClump("manual",{auditRefs:l,description:e.manualDescription,openByDefault:!0});return n.append(s),n}renderCategoryScore(e,t){if(e.score===null)return super.renderScoreGauge(e,t);let n=this.dom.createComponent("gaugePwa"),r=this.dom.find("a.lh-gauge--pwa__wrapper",n),i=n.querySelector("svg");if(!i)throw new Error("no SVG element found in PWA score gauge template");o._makeSvgReferencesUnique(i);let a=this._getGroupIds(e.auditRefs),l=this._getPassingGroupIds(e.auditRefs);if(l.size===a.size)r.classList.add("lh-badged--all");else for(let s of l)r.classList.add(`lh-badged--${s}`);return this.dom.find(".lh-gauge__label",n).textContent=e.title,r.title=this._getGaugeTooltip(e.auditRefs,t),n}_getGroupIds(e){let t=e.map(n=>n.group).filter(n=>!!n);return new Set(t)}_getPassingGroupIds(e){let t=this._getGroupIds(e);for(let n of e)!y.showAsPassed(n.result)&&n.group&&t.delete(n.group);return t}_getGaugeTooltip(e,t){let n=this._getGroupIds(e),r=[];for(let i of n){let a=e.filter(d=>d.group===i),l=a.length,s=a.filter(d=>y.showAsPassed(d.result)).length,c=t[i].title;r.push(`${c}: ${s}/${l}`)}return r.join(", ")}_renderAudits(e,t){let n=this.renderUnexpandableClump(e,t),r=this._getPassingGroupIds(e);for(let i of r)this.dom.find(`.lh-audit-group--${i}`,n).classList.add("lh-badged");return n}static _makeSvgReferencesUnique(e){let t=e.querySelector("defs");if(!t)return;let n=g.getUniqueSuffix(),r=t.querySelectorAll("[id]");for(let i of r){let a=i.id,l=`${a}-${n}`;i.id=l;let s=e.querySelectorAll(`use[href="#${a}"]`);for(let d of s)d.setAttribute("href",`#${l}`);let c=e.querySelectorAll(`[fill="url(#${a})"]`);for(let d of c)d.setAttribute("fill",`url(#${l})`)}}};var W=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 r=y.prepareReportResult(e);return this._dom.rootEl.textContent="",this._dom.rootEl.append(this._renderReport(r)),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=g.strings.footerIssue,this._dom.find(".lh-footer__version",t).textContent=e.lighthouseVersion,t}_renderMetaBlock(e,t){let n=y.getEmulationDescriptions(e.configSettings||{}),r=e.userAgent.match(/(\w*Chrome\/[\d.]+)/),i=Array.isArray(r)?r[1].replace("/"," ").replace("Chrome","Chromium"):"Chromium",a=e.configSettings.channel,l=e.environment.benchmarkIndex.toFixed(0),s=e.environment.credits?.["axe-core"],c=[`${g.strings.runtimeSettingsBenchmark}: ${l}`,`${g.strings.runtimeSettingsCPUThrottling}: ${n.cpuThrottling}`];n.screenEmulation&&c.push(`${g.strings.runtimeSettingsScreenEmulation}: ${n.screenEmulation}`),s&&c.push(`${g.strings.runtimeSettingsAxeVersion}: ${s}`);let d=[["date",`Captured at ${g.i18n.formatDateTime(e.fetchTime)}`],["devices",`${n.deviceEmulation} with Lighthouse ${e.lighthouseVersion}`,c.join(`
|
|
2480
2482
|
`)],["samples-one",g.strings.runtimeSingleLoad,g.strings.runtimeSingleLoadTooltip],["stopwatch",g.strings.runtimeAnalysisWindow],["networkspeed",`${n.summary}`,`${g.strings.runtimeSettingsNetworkThrottling}: ${n.networkThrottling}`],["chrome",`Using ${i}`+(a?` with ${a}`:""),`${g.strings.runtimeSettingsUANetwork}: "${e.environment.networkUserAgent}"`]],p=this._dom.find(".lh-meta__items",t);for(let[h,u,f]of d){let b=this._dom.createChildOf(p,"li","lh-meta__item");if(b.textContent=u,f){b.classList.add("lh-tooltip-boundary");let _=this._dom.createChildOf(b,"div","lh-tooltip");_.textContent=f}b.classList.add("lh-report-icon",`lh-report-icon--${h}`)}}_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=g.strings.toplevelWarningsMessage;let r=[];for(let i of e.runWarnings){let a=this._dom.createElement("li");a.append(this._dom.convertMarkdownLinkSnippets(i)),r.push(a)}return this._dom.find("ul",t).append(...r),t}_renderScoreGauges(e,t,n){let r=[],i=[],a=[];for(let l of Object.values(e.categories)){let s=n[l.id]||t,c=s.renderCategoryScore(l,e.categoryGroups||{},{gatherMode:e.gatherMode}),d=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",c);d&&(this._dom.safelySetHref(d,`#${l.id}`),d.addEventListener("click",p=>{if(!d.matches('[href^="#"]'))return;let h=d.getAttribute("href"),u=this._dom.rootEl;if(!h||!u)return;let f=this._dom.find(h,u);p.preventDefault(),f.scrollIntoView()}),this._opts.onPageAnchorRendered?.(d)),y.isPluginCategory(l.id)?a.push(c):s.renderCategoryScore===t.renderCategoryScore?r.push(c):i.push(c)}return[...r,...i,...a]}_renderReport(e){g.apply({providedStrings:e.i18n.rendererFormattedStrings,i18n:new $(e.configSettings.locale),reportJson:e});let t=new O(this._dom,{fullPageScreenshot:e.fullPageScreenshot??void 0,entities:e.entities}),n=new R(this._dom,t),r={performance:new B(this._dom,t),pwa:new G(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 f=this._dom.find(".lh-scores-container",i);s.append(...this._renderScoreGauges(e,n,r)),f.append(s,d);let b=this._dom.createElement("div","lh-sticky-header");b.append(...this._renderScoreGauges(e,n,r)),a.append(b)}let p=this._dom.createElement("div","lh-categories");l.append(p);let h={gatherMode:e.gatherMode};for(let f of Object.values(e.categories)){let b=r[f.id]||n;b.dom.createChildOf(p,"div","lh-category-wrapper").append(b.render(f,e.categoryGroups,h))}n.injectFinalScreenshot(p,e.audits,d);let u=this._dom.createFragment();return this._opts.omitGlobalStyles||u.append(this._dom.createComponent("styles")),this._opts.omitTopbar||u.append(this._renderReportTopbar(e)),u.append(a),l.append(this._renderReportFooter(e)),a.append(i,l),e.fullPageScreenshot&&P.installFullPageScreenshot(this._dom.rootEl,e.fullPageScreenshot.screenshot),u}};function U(o,e){let t=o.rootEl;typeof e>"u"?t.classList.toggle("lh-dark"):t.classList.toggle("lh-dark",e)}var Ge=typeof btoa<"u"?btoa:o=>Buffer.from(o).toString("base64"),We=typeof atob<"u"?atob:o=>Buffer.from(o,"base64").toString();async function je(o,e){let t=new TextEncoder().encode(o);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(o);let n="",r=5e3;for(let i=0;i<t.length;i+=r)n+=String.fromCharCode(...t.subarray(i,i+r));return Ge(n)}function qe(o,e){let t=We(o),n=Uint8Array.from(t,r=>r.charCodeAt(0));return e.gzip?window.pako.ungzip(n,{to:"string"}):new TextDecoder().decode(n)}var ie={toBase64:je,fromBase64:qe};function Z(){let o=window.location.host.endsWith(".vercel.app"),e=new URLSearchParams(window.location.search).has("dev");return o?`https://${window.location.host}/gh-pages`:e?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function Q(o){let e=o.generatedTime,t=o.fetchTime||e;return`${o.lighthouseVersion}-${o.finalDisplayedUrl}-${t}`}function Ke(o,e,t){let n=new URL(e).origin;window.addEventListener("message",function i(a){a.origin===n&&r&&a.data.opened&&(r.postMessage(o,n),window.removeEventListener("message",i))});let r=window.open(e,t)}async function ae(o,e,t){let n=new URL(e),r=!!window.CompressionStream;n.hash=await ie.toBase64(JSON.stringify(o),{gzip:r}),r&&n.searchParams.set("gzip","1"),window.open(n.toString(),t)}async function le(o){let e="viewer-"+Q(o),t=Z()+"/viewer/";await ae({lhr:o},t,e)}async function se(o){let e="viewer-"+Q(o),t=Z()+"/viewer/";Ke({lhr:o},t,e)}function ce(o){if(!o.audits["script-treemap-data"].details)throw new Error("no script treemap data found");let t={lhr:{mainDocumentUrl:o.mainDocumentUrl,finalUrl:o.finalUrl,finalDisplayedUrl:o.finalDisplayedUrl,audits:{"script-treemap-data":o.audits["script-treemap-data"]},configSettings:{locale:o.configSettings.locale}}},n=Z()+"/treemap/",r="treemap-"+Q(o);ae(t,n,r)}var j=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)||i.hasAttribute("disabled")||window.getComputedStyle(i).display==="none")),r=t?n.indexOf(t)+1:0;return r>=n.length&&(r=0),n[r]}_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 q=class{constructor(e,t){this.lhr,this._reportUIFeatures=e,this._dom=t,this._dropDownMenu=new j(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",()=>U(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(r){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+r.message})}break}case"open-viewer":{this._dom.isDevTools()?le(this.lhr):se(this.lhr);break}case"save-gist":{this._reportUIFeatures.saveAsGist();break}case"toggle-dark":{U(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(),{cmd:"send",fields:{hitType:"event",eventCategory:"report",eventAction:"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),window.requestAnimationFrame(()=>window.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(p=>p.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 Je(o,e){let t=e?new Date(e):new Date,n=t.toLocaleTimeString("en-US",{hour12:!1}),r=t.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");r.unshift(r.pop());let i=r.join("-");return`${o}_${i}_${n}`.replace(/[/?<>\\:*|"]/g,"-")}function de(o){let e=new URL(o.finalDisplayedUrl).hostname;return Je(e,o.fetchTime)}function Ye(o){return Array.from(o.tBodies[0].rows)}var K=class{constructor(e,t={}){this.json,this._dom=e,this._opts=t,this._topbar=t.omitTopbar?null:new q(this,e),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(e){this.json=e,this._fullPageScreenshot=k.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&&U(this._dom,!0);let r=["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(r&&!i&&(this._enableFireworks(),t||U(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:g.strings.viewTreemapLabel,icon:"treemap",onClick:()=>ce(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:g.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=g.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 r=["lh-button"];e.icon&&(r.push("lh-report-icon"),r.push(`lh-report-icon--${e.icon}`));let i=this._dom.createChildOf(n,"button",r.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"],t=["legacy-javascript"];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=Ye(i),l=a.filter(_=>!_.classList.contains("lh-sub-item-row")),s=this._getThirdPartyRows(l,k.getFinalDisplayedUrl(this.json)),c=a.some(_=>_.classList.contains("lh-row--even")),d=this._dom.createComponent("3pFilter"),p=this._dom.find("input",d);p.addEventListener("change",_=>{let m=_.target instanceof HTMLInputElement&&!_.target.checked,w=!0,v=l[0];for(;v;){let x=m&&s.includes(v);do v.classList.toggle("lh-row--hidden",x),c&&(v.classList.toggle("lh-row--even",!x&&w),v.classList.toggle("lh-row--odd",!x&&!w)),v=v.nextElementSibling;while(v&&v.classList.contains("lh-sub-item-row"));x||(w=!w)}});let h=s.filter(_=>!_.classList.contains("lh-row--group")).length;this._dom.find(".lh-3p-filter-count",d).textContent=`${h}`,this._dom.find(".lh-3p-ui-string",d).textContent=g.strings.thirdPartyResourcesLabel;let u=s.length===l.length,f=!s.length;if((u||f)&&(this._dom.find("div.lh-3p-filter",d).hidden=!0),!i.parentNode)return;i.parentNode.insertBefore(d,i);let b=i.closest(".lh-audit");if(!b)throw new Error(".lh-table not within audit");t.includes(b.id)&&!u&&p.click()})}_setupElementScreenshotOverlay(e){this._fullPageScreenshot&&P.installOverlayFeature({dom:this._dom,rootEl:e,overlayContainerEl:e,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(e,t){let n=k.getRootDomain(t),r=this.json.entities?.find(a=>a.isFirstParty===!0)?.name,i=[];for(let a of e){if(r){if(!a.dataset.entity||a.dataset.entity===r)continue}else{let l=a.querySelector("div.lh-text__url");if(!l)continue;let s=l.dataset.url;if(!s||!(k.getRootDomain(s)!==n))continue}i.push(a)}return i}_saveFile(e){let t=e.type.match("json")?".json":".html",n=de({finalDisplayedUrl:k.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime})+t;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(e,n):this._dom.saveFile(e,n)}};function pe(o,e={}){let t=document.createElement("article");t.classList.add("lh-root","lh-vars");let n=new V(t.ownerDocument,t);return new W(n).renderReport(o,t,e),new K(n,e).initFeatures(o),t}var J=class{constructor(e){this.el=e;let t=document.createElement("style");if(t.textContent=`
|
|
2481
2483
|
#lh-log {
|
|
2482
2484
|
position: fixed;
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -52,7 +52,8 @@ The Chrome extension was available prior to Lighthouse being available in Chrome
|
|
|
52
52
|
|
|
53
53
|
The Node CLI provides the most flexibility in how Lighthouse runs can be configured and reported. Users who want more advanced usage, or want to run Lighthouse in an automated fashion should use the Node CLI.
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
> **Note**
|
|
56
|
+
> Lighthouse requires Node 18 LTS (18.x) or later.
|
|
56
57
|
|
|
57
58
|
**Installation**:
|
|
58
59
|
|
|
@@ -444,7 +444,7 @@ function createScorescaleComponent(dom) {
|
|
|
444
444
|
function createScoresWrapperComponent(dom) {
|
|
445
445
|
const el0 = dom.createFragment();
|
|
446
446
|
const el1 = dom.createElement("style");
|
|
447
|
-
el1.append("\n .lh-scores-container {\n display: flex;\n flex-direction: column;\n padding: var(--default-padding) 0;\n position: relative;\n width: 100%;\n }\n\n .lh-sticky-header {\n --gauge-circle-size: var(--gauge-circle-size-sm);\n --plugin-badge-size: 16px;\n --plugin-icon-size: 75%;\n --gauge-wrapper-width: 60px;\n --gauge-percentage-font-size: 13px;\n position: fixed;\n left: 0;\n right: 0;\n top: var(--topbar-height);\n font-weight: 500;\n display: none;\n justify-content: center;\n background-color: var(--sticky-header-background-color);\n border-bottom: 1px solid var(--color-gray-200);\n padding-top: var(--score-container-padding);\n padding-bottom: 4px;\n z-index: 1;\n pointer-events: none;\n }\n\n .lh-devtools .lh-sticky-header {\n /* The report within DevTools is placed in a container with overflow, which changes the placement of this header unless we change `position` to `sticky.` */\n position: sticky;\n }\n\n .lh-sticky-header--visible {\n display: grid;\n grid-auto-flow: column;\n pointer-events: auto;\n }\n\n /* Disable the gauge arc animation for the sticky header, so toggling display: none\n does not play the animation. */\n .lh-sticky-header .lh-gauge-arc {\n animation: none;\n }\n\n .lh-sticky-header .lh-gauge__label,\n .lh-sticky-header .lh-fraction__label {\n display: none;\n }\n\n .lh-highlighter {\n width: var(--gauge-wrapper-width);\n height: 1px;\n background-color: var(--highlighter-background-color);\n /* Position at bottom of first gauge in sticky header. */\n position: absolute;\n grid-column: 1;\n bottom: -1px;\n }\n\n .lh-gauge__wrapper:first-of-type {\n contain: none;\n }\n ");
|
|
447
|
+
el1.append("\n .lh-scores-container {\n display: flex;\n flex-direction: column;\n padding: var(--default-padding) 0;\n position: relative;\n width: 100%;\n }\n\n .lh-sticky-header {\n --gauge-circle-size: var(--gauge-circle-size-sm);\n --plugin-badge-size: 16px;\n --plugin-icon-size: 75%;\n --gauge-wrapper-width: 60px;\n --gauge-percentage-font-size: 13px;\n position: fixed;\n left: 0;\n right: 0;\n top: var(--topbar-height);\n font-weight: 500;\n display: none;\n justify-content: center;\n background-color: var(--sticky-header-background-color);\n border-bottom: 1px solid var(--color-gray-200);\n padding-top: var(--score-container-padding);\n padding-bottom: 4px;\n z-index: 1;\n pointer-events: none;\n }\n\n .lh-devtools .lh-sticky-header {\n /* The report within DevTools is placed in a container with overflow, which changes the placement of this header unless we change `position` to `sticky.` */\n position: sticky;\n }\n\n .lh-sticky-header--visible {\n display: grid;\n grid-auto-flow: column;\n pointer-events: auto;\n }\n\n /* Disable the gauge arc animation for the sticky header, so toggling display: none\n does not play the animation. */\n .lh-sticky-header .lh-gauge-arc {\n animation: none;\n }\n\n .lh-sticky-header .lh-gauge__label,\n .lh-sticky-header .lh-fraction__label {\n display: none;\n }\n\n .lh-highlighter {\n width: var(--gauge-wrapper-width);\n height: 1px;\n background-color: var(--highlighter-background-color);\n /* Position at bottom of first gauge in sticky header. */\n position: absolute;\n grid-column: 1;\n bottom: -1px;\n left: 0px;\n right: 0px;\n }\n\n .lh-gauge__wrapper:first-of-type {\n contain: none;\n }\n ");
|
|
448
448
|
el0.append(el1);
|
|
449
449
|
const el2 = dom.createElement("div", "lh-scores-wrapper");
|
|
450
450
|
const el3 = dom.createElement("div", "lh-scores-container");
|
|
@@ -141,7 +141,7 @@ export class I18nFormatter {
|
|
|
141
141
|
* If undefined, the number will be displayed in full.
|
|
142
142
|
* @return {string}
|
|
143
143
|
*/
|
|
144
|
-
formatBytesWithBestUnit(size, granularity =
|
|
144
|
+
formatBytesWithBestUnit(size, granularity = 0.1) {
|
|
145
145
|
if (size >= MiB) return this.formatBytesToMiB(size, granularity);
|
|
146
146
|
if (size >= KiB) return this.formatBytesToKiB(size, granularity);
|
|
147
147
|
return this._formatNumberWithGranularity(size, granularity, {
|
|
@@ -1856,6 +1856,9 @@
|
|
|
1856
1856
|
"core/gather/gatherers/link-elements.js | headerParseWarning": {
|
|
1857
1857
|
"message": "Error parsing `link` header ({error}): `{header}`"
|
|
1858
1858
|
},
|
|
1859
|
+
"core/gather/timespan-runner.js | warningNavigationDetected": {
|
|
1860
|
+
"message": "A page navigation was detected during the run. Using timespan mode to audit page navigations is not recommended. Use navigation mode to audit page navigations for better third-party attribution and main thread detection."
|
|
1861
|
+
},
|
|
1859
1862
|
"core/lib/bf-cache-strings.js | appBanner": {
|
|
1860
1863
|
"message": "Pages that requested an AppBanner are not currently eligible for back/forward cache."
|
|
1861
1864
|
},
|
|
@@ -1856,6 +1856,9 @@
|
|
|
1856
1856
|
"core/gather/gatherers/link-elements.js | headerParseWarning": {
|
|
1857
1857
|
"message": "Êŕr̂ór̂ ṕâŕŝín̂ǵ `link` ĥéâd́êŕ ({error}): `{header}`"
|
|
1858
1858
|
},
|
|
1859
|
+
"core/gather/timespan-runner.js | warningNavigationDetected": {
|
|
1860
|
+
"message": "Â ṕâǵê ńâv́îǵât́îón̂ ẃâś d̂ét̂éĉt́êd́ d̂úr̂ín̂ǵ t̂h́ê ŕûń. Ûśîńĝ t́îḿêśp̂án̂ ḿôd́ê t́ô áûd́ît́ p̂áĝé n̂áv̂íĝát̂íôńŝ íŝ ńôt́ r̂éĉóm̂ḿêńd̂éd̂. Úŝé n̂áv̂íĝát̂íôń m̂ód̂é t̂ó âúd̂ít̂ ṕâǵê ńâv́îǵât́îón̂ś f̂ór̂ b́êt́t̂ér̂ t́ĥír̂d́-p̂ár̂t́ŷ át̂t́r̂íb̂út̂íôń âńd̂ ḿâín̂ t́ĥŕêád̂ d́êt́êćt̂íôń."
|
|
1861
|
+
},
|
|
1859
1862
|
"core/lib/bf-cache-strings.js | appBanner": {
|
|
1860
1863
|
"message": "P̂áĝéŝ t́ĥát̂ ŕêq́ûéŝt́êd́ âń Âṕp̂B́âńn̂ér̂ ár̂é n̂ót̂ ćûŕr̂én̂t́l̂ý êĺîǵîb́l̂é f̂ór̂ b́âćk̂/f́ôŕŵár̂d́ ĉáĉh́ê."
|
|
1861
1864
|
},
|