lighthouse 10.0.2 → 10.1.0-dev.20230323
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/cli/bin.js +1 -1
- package/cli/run.js +1 -1
- package/cli/test/smokehouse/config/exclusions.js +0 -2
- package/cli/test/smokehouse/lighthouse-runners/bundle.js +1 -1
- package/core/audits/audit.d.ts +6 -0
- package/core/audits/audit.js +16 -4
- package/core/audits/bootup-time.js +2 -3
- package/core/audits/byte-efficiency/byte-efficiency-audit.d.ts +4 -0
- package/core/audits/byte-efficiency/byte-efficiency-audit.js +8 -2
- package/core/audits/byte-efficiency/legacy-javascript.d.ts +5 -0
- package/core/audits/byte-efficiency/legacy-javascript.js +42 -16
- package/core/audits/byte-efficiency/polyfill-graph-data.json +50 -50
- package/core/audits/byte-efficiency/total-byte-weight.js +1 -1
- package/core/audits/byte-efficiency/unminified-javascript.js +2 -1
- package/core/audits/byte-efficiency/uses-long-cache-ttl.js +2 -2
- package/core/audits/byte-efficiency/uses-responsive-images-snapshot.js +4 -0
- package/core/audits/dobetterweb/doctype.js +3 -2
- package/core/audits/long-tasks.js +2 -1
- package/core/audits/mainthread-work-breakdown.js +2 -1
- package/core/audits/network-rtt.js +1 -1
- package/core/audits/network-server-latency.js +2 -1
- package/core/audits/performance-budget.js +1 -1
- package/core/audits/prioritize-lcp-image.js +1 -1
- package/core/audits/seo/tap-targets.js +1 -1
- package/core/audits/third-party-summary.js +4 -1
- package/core/audits/timing-budget.js +2 -1
- package/core/audits/uses-rel-preconnect.js +1 -1
- package/core/audits/uses-rel-preload.js +1 -1
- package/core/audits/valid-source-maps.js +1 -1
- package/core/audits/work-during-interaction.js +1 -1
- package/core/computed/metrics/cumulative-layout-shift.d.ts +3 -3
- package/core/computed/metrics/cumulative-layout-shift.js +21 -9
- package/core/computed/unused-css.js +8 -7
- package/core/config/lr-mobile-config.js +0 -11
- package/core/gather/driver/prepare.js +15 -0
- package/core/gather/gatherers/image-elements.js +1 -0
- package/core/gather/gatherers/link-elements.js +2 -0
- package/core/lib/asset-saver.js +2 -12
- package/core/lib/i18n/i18n.d.ts +1 -1
- package/core/lib/i18n/i18n.js +1 -1
- package/core/lib/lighthouse-compatibility.js +17 -0
- package/core/lib/network-request.js +1 -1
- package/core/lib/page-functions.d.ts +17 -5
- package/core/lib/page-functions.js +41 -22
- package/core/lib/tracehouse/trace-processor.d.ts +8 -0
- package/core/lib/tracehouse/trace-processor.js +27 -6
- package/core/lib/url-utils.js +1 -1
- package/core/runner.js +1 -0
- package/dist/report/bundle.esm.js +258 -45
- package/dist/report/flow.js +18 -18
- package/dist/report/standalone.js +17 -17
- package/flow-report/src/i18n/i18n.d.ts +6 -0
- package/flow-report/src/summary/category.tsx +0 -1
- package/package.json +6 -7
- package/report/assets/styles.css +89 -5
- package/report/renderer/components.js +1 -1
- package/report/renderer/details-renderer.d.ts +26 -6
- package/report/renderer/details-renderer.js +144 -21
- package/report/renderer/performance-category-renderer.js +3 -3
- package/report/renderer/report-renderer.js +1 -0
- package/report/renderer/report-ui-features.js +18 -9
- package/report/renderer/report-utils.d.ts +13 -4
- package/report/renderer/report-utils.js +43 -11
- package/shared/localization/locales/ar-XB.json +1 -1
- package/shared/localization/locales/ar.json +1 -1
- package/shared/localization/locales/bg.json +1 -1
- package/shared/localization/locales/ca.json +1 -1
- package/shared/localization/locales/cs.json +1 -1
- package/shared/localization/locales/da.json +1 -1
- package/shared/localization/locales/de.json +1 -1
- package/shared/localization/locales/el.json +1 -1
- package/shared/localization/locales/en-GB.json +1 -1
- package/shared/localization/locales/en-US.json +11 -2
- package/shared/localization/locales/en-XA.json +1 -1
- package/shared/localization/locales/en-XL.json +11 -2
- package/shared/localization/locales/es-419.json +1 -1
- package/shared/localization/locales/es.json +1 -1
- package/shared/localization/locales/fi.json +1 -1
- package/shared/localization/locales/fil.json +1 -1
- package/shared/localization/locales/fr.json +1 -1
- package/shared/localization/locales/he.json +1 -1
- package/shared/localization/locales/hi.json +1 -1
- package/shared/localization/locales/hr.json +1 -1
- package/shared/localization/locales/hu.json +1 -1
- package/shared/localization/locales/id.json +1 -1
- package/shared/localization/locales/it.json +1 -1
- package/shared/localization/locales/ja.json +1 -1
- package/shared/localization/locales/ko.json +1 -1
- package/shared/localization/locales/lt.json +1 -1
- package/shared/localization/locales/lv.json +1 -1
- package/shared/localization/locales/nl.json +1 -1
- package/shared/localization/locales/no.json +1 -1
- package/shared/localization/locales/pl.json +1 -1
- package/shared/localization/locales/pt-PT.json +1 -1
- package/shared/localization/locales/pt.json +1 -1
- package/shared/localization/locales/ro.json +1 -1
- package/shared/localization/locales/ru.json +1 -1
- package/shared/localization/locales/sk.json +1 -1
- package/shared/localization/locales/sl.json +1 -1
- package/shared/localization/locales/sr-Latn.json +1 -1
- package/shared/localization/locales/sr.json +1 -1
- package/shared/localization/locales/sv.json +1 -1
- package/shared/localization/locales/ta.json +1 -1
- package/shared/localization/locales/te.json +1 -1
- package/shared/localization/locales/th.json +1 -1
- package/shared/localization/locales/tr.json +1 -1
- package/shared/localization/locales/uk.json +1 -1
- package/shared/localization/locales/vi.json +1 -1
- package/shared/localization/locales/zh-HK.json +1 -1
- package/shared/localization/locales/zh-TW.json +1 -1
- package/shared/localization/locales/zh.json +1 -1
- package/shared/tsconfig.json +1 -1
- package/shared/util.d.ts +6 -0
- package/shared/util.js +33 -0
- package/types/artifacts.d.ts +6 -1
- package/types/internal/node.d.ts +15 -2
- package/types/lhr/audit-details.d.ts +35 -11
package/dist/report/flow.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
!function(){"use strict";var e,a,n,t,i,o,r,s={},l=[],p=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function u(e,a){for(var n in a)e[n]=a[n];return e}function c(e){var a=e.parentNode;a&&a.removeChild(e)}function d(a,n,t){var i,o,r,s={};for(r in n)"key"==r?i=n[r]:"ref"==r?o=n[r]:s[r]=n[r];if(arguments.length>2&&(s.children=arguments.length>3?e.call(arguments,2):t),"function"==typeof a&&null!=a.defaultProps)for(r in a.defaultProps)void 0===s[r]&&(s[r]=a.defaultProps[r]);return m(a,s,i,o,null)}function m(e,t,i,o,r){var s={type:e,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++n:r};return null==r&&null!=a.vnode&&a.vnode(s),s}function h(e){return e.children}function g(e,a){this.props=e,this.context=a}function v(e,a){if(null==a)return e.__?v(e.__,e.__.__k.indexOf(e)+1):null;for(var n;a<e.__k.length;a++)if(null!=(n=e.__k[a])&&null!=n.__e)return n.__e;return"function"==typeof e.type?v(e):null}function f(e){var a,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,a=0;a<e.__k.length;a++)if(null!=(n=e.__k[a])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return f(e)}}function b(e){(!e.__d&&(e.__d=!0)&&t.push(e)&&!y.__r++||o!==a.debounceRendering)&&((o=a.debounceRendering)||i)(y)}function y(){for(var e;y.__r=t.length;)e=t.sort((function(e,a){return e.__v.__b-a.__v.__b})),t=[],e.some((function(e){var a,n,t,i,o,r;e.__d&&(o=(i=(a=e).__v).__e,(r=a.__P)&&(n=[],(t=u({},i)).__v=i.__v+1,U(r,i,t,a.__n,void 0!==r.ownerSVGElement,null!=i.__h?[o]:null,n,null==o?v(i):o,i.__h),x(n,i),i.__e!=o&&f(i)))}))}function _(e,a,n,t,i,o,r,p,u,c){var d,g,f,b,y,_,w,S=t&&t.__k||l,A=S.length;for(n.__k=[],d=0;d<a.length;d++)if(null!=(b=n.__k[d]=null==(b=a[d])||"boolean"==typeof b?null:"string"==typeof b||"number"==typeof b||"bigint"==typeof b?m(null,b,null,null,b):Array.isArray(b)?m(h,{children:b},null,null,null):b.__b>0?m(b.type,b.props,b.key,null,b.__v):b)){if(b.__=n,b.__b=n.__b+1,null===(f=S[d])||f&&b.key==f.key&&b.type===f.type)S[d]=void 0;else for(g=0;g<A;g++){if((f=S[g])&&b.key==f.key&&b.type===f.type){S[g]=void 0;break}f=null}U(e,b,f=f||s,i,o,r,p,u,c),y=b.__e,(g=b.ref)&&f.ref!=g&&(w||(w=[]),f.ref&&w.push(f.ref,null,b),w.push(g,b.__c||y,b)),null!=y?(null==_&&(_=y),"function"==typeof b.type&&b.__k===f.__k?b.__d=u=C(b,u,e):u=k(e,b,f,S,y,u),"function"==typeof n.type&&(n.__d=u)):u&&f.__e==u&&u.parentNode!=e&&(u=v(f))}for(n.__e=_,d=A;d--;)null!=S[d]&&("function"==typeof n.type&&null!=S[d].__e&&S[d].__e==n.__d&&(n.__d=v(t,d+1)),I(S[d],S[d]));if(w)for(d=0;d<w.length;d++)z(w[d],w[++d],w[++d])}function C(e,a,n){for(var t,i=e.__k,o=0;i&&o<i.length;o++)(t=i[o])&&(t.__=e,a="function"==typeof t.type?C(t,a,n):k(n,t,t,i,t.__e,a));return a}function k(e,a,n,t,i,o){var r,s,l;if(void 0!==a.__d)r=a.__d,a.__d=void 0;else if(null==n||i!=o||null==i.parentNode)e:if(null==o||o.parentNode!==e)e.appendChild(i),r=null;else{for(s=o,l=0;(s=s.nextSibling)&&l<t.length;l+=2)if(s==i)break e;e.insertBefore(i,o),r=o}return void 0!==r?r:i.nextSibling}function w(e,a,n){"-"===a[0]?e.setProperty(a,n):e[a]=null==n?"":"number"!=typeof n||p.test(a)?n:n+"px"}function S(e,a,n,t,i){var o;e:if("style"===a)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof t&&(e.style.cssText=t=""),t)for(a in t)n&&a in n||w(e.style,a,"");if(n)for(a in n)t&&n[a]===t[a]||w(e.style,a,n[a])}else if("o"===a[0]&&"n"===a[1])o=a!==(a=a.replace(/Capture$/,"")),a=a.toLowerCase()in e?a.toLowerCase().slice(2):a.slice(2),e.l||(e.l={}),e.l[a+o]=n,n?t||e.addEventListener(a,o?P:A,o):e.removeEventListener(a,o?P:A,o);else if("dangerouslySetInnerHTML"!==a){if(i)a=a.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("href"!==a&&"list"!==a&&"form"!==a&&"tabIndex"!==a&&"download"!==a&&a in e)try{e[a]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null!=n&&(!1!==n||"a"===a[0]&&"r"===a[1])?e.setAttribute(a,n):e.removeAttribute(a))}}function A(e){this.l[e.type+!1](a.event?a.event(e):e)}function P(e){this.l[e.type+!0](a.event?a.event(e):e)}function U(e,n,t,i,o,r,s,l,p){var c,d,m,v,f,b,y,C,k,w,S,A=n.type;if(void 0!==n.constructor)return null;null!=t.__h&&(p=t.__h,l=n.__e=t.__e,n.__h=null,r=[l]),(c=a.__b)&&c(n);try{e:if("function"==typeof A){if(C=n.props,k=(c=A.contextType)&&i[c.__c],w=c?k?k.props.value:c.__:i,t.__c?y=(d=n.__c=t.__c).__=d.__E:("prototype"in A&&A.prototype.render?n.__c=d=new A(C,w):(n.__c=d=new g(C,w),d.constructor=A,d.render=N),k&&k.sub(d),d.props=C,d.state||(d.state={}),d.context=w,d.__n=i,m=d.__d=!0,d.__h=[]),null==d.__s&&(d.__s=d.state),null!=A.getDerivedStateFromProps&&(d.__s==d.state&&(d.__s=u({},d.__s)),u(d.__s,A.getDerivedStateFromProps(C,d.__s))),v=d.props,f=d.state,m)null==A.getDerivedStateFromProps&&null!=d.componentWillMount&&d.componentWillMount(),null!=d.componentDidMount&&d.__h.push(d.componentDidMount);else{if(null==A.getDerivedStateFromProps&&C!==v&&null!=d.componentWillReceiveProps&&d.componentWillReceiveProps(C,w),!d.__e&&null!=d.shouldComponentUpdate&&!1===d.shouldComponentUpdate(C,d.__s,w)||n.__v===t.__v){d.props=C,d.state=d.__s,n.__v!==t.__v&&(d.__d=!1),d.__v=n,n.__e=t.__e,n.__k=t.__k,n.__k.forEach((function(e){e&&(e.__=n)})),d.__h.length&&s.push(d);break e}null!=d.componentWillUpdate&&d.componentWillUpdate(C,d.__s,w),null!=d.componentDidUpdate&&d.__h.push((function(){d.componentDidUpdate(v,f,b)}))}d.context=w,d.props=C,d.state=d.__s,(c=a.__r)&&c(n),d.__d=!1,d.__v=n,d.__P=e,c=d.render(d.props,d.state,d.context),d.state=d.__s,null!=d.getChildContext&&(i=u(u({},i),d.getChildContext())),m||null==d.getSnapshotBeforeUpdate||(b=d.getSnapshotBeforeUpdate(v,f)),S=null!=c&&c.type===h&&null==c.key?c.props.children:c,_(e,Array.isArray(S)?S:[S],n,t,i,o,r,s,l,p),d.base=n.__e,n.__h=null,d.__h.length&&s.push(d),y&&(d.__E=d.__=null),d.__e=!1}else null==r&&n.__v===t.__v?(n.__k=t.__k,n.__e=t.__e):n.__e=L(t.__e,n,t,i,o,r,s,p);(c=a.diffed)&&c(n)}catch(e){n.__v=null,(p||null!=r)&&(n.__e=l,n.__h=!!p,r[r.indexOf(l)]=null),a.__e(e,n,t)}}function x(e,n){a.__c&&a.__c(n,e),e.some((function(n){try{e=n.__h,n.__h=[],e.some((function(e){e.call(n)}))}catch(e){a.__e(e,n.__v)}}))}function L(a,n,t,i,o,r,l,p){var u,d,m,h=t.props,g=n.props,f=n.type,b=0;if("svg"===f&&(o=!0),null!=r)for(;b<r.length;b++)if((u=r[b])&&"setAttribute"in u==!!f&&(f?u.localName===f:3===u.nodeType)){a=u,r[b]=null;break}if(null==a){if(null===f)return document.createTextNode(g);a=o?document.createElementNS("http://www.w3.org/2000/svg",f):document.createElement(f,g.is&&g),r=null,p=!1}if(null===f)h===g||p&&a.data===g||(a.data=g);else{if(r=r&&e.call(a.childNodes),d=(h=t.props||s).dangerouslySetInnerHTML,m=g.dangerouslySetInnerHTML,!p){if(null!=r)for(h={},b=0;b<a.attributes.length;b++)h[a.attributes[b].name]=a.attributes[b].value;(m||d)&&(m&&(d&&m.__html==d.__html||m.__html===a.innerHTML)||(a.innerHTML=m&&m.__html||""))}if(function(e,a,n,t,i){var o;for(o in n)"children"===o||"key"===o||o in a||S(e,o,null,n[o],t);for(o in a)i&&"function"!=typeof a[o]||"children"===o||"key"===o||"value"===o||"checked"===o||n[o]===a[o]||S(e,o,a[o],n[o],t)}(a,g,h,o,p),m)n.__k=[];else if(b=n.props.children,_(a,Array.isArray(b)?b:[b],n,t,i,o&&"foreignObject"!==f,r,l,r?r[0]:t.__k&&v(t,0),p),null!=r)for(b=r.length;b--;)null!=r[b]&&c(r[b]);p||("value"in g&&void 0!==(b=g.value)&&(b!==a.value||"progress"===f&&!b||"option"===f&&b!==h.value)&&S(a,"value",b,h.value,!1),"checked"in g&&void 0!==(b=g.checked)&&b!==a.checked&&S(a,"checked",b,h.checked,!1))}return a}function z(e,n,t){try{"function"==typeof e?e(n):e.current=n}catch(e){a.__e(e,t)}}function I(e,n,t){var i,o;if(a.unmount&&a.unmount(e),(i=e.ref)&&(i.current&&i.current!==e.__e||z(i,null,n)),null!=(i=e.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(e){a.__e(e,n)}i.base=i.__P=null}if(i=e.__k)for(o=0;o<i.length;o++)i[o]&&I(i[o],n,"function"!=typeof e.type);t||null==e.__e||c(e.__e),e.__e=e.__d=void 0}function N(e,a,n){return this.constructor(e,n)}function T(e,a){var n={__c:a="__cC"+r++,__:e,Consumer:function(e,a){return e.children(a)},Provider:function(e){var n,t;return this.getChildContext||(n=[],(t={})[a]=this,this.getChildContext=function(){return t},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&n.some(b)},this.sub=function(e){n.push(e);var a=e.componentWillUnmount;e.componentWillUnmount=function(){n.splice(n.indexOf(e),1),a&&a.call(e)}}),e.children}};return n.Provider.__=n.Consumer.contextType=n}e=l.slice,a={__e:function(e,a,n,t){for(var i,o,r;a=a.__;)if((i=a.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(e)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(e,t||{}),r=i.__d),r)return i.__E=i}catch(a){e=a}throw e}},n=0,g.prototype.setState=function(e,a){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=u({},this.state),"function"==typeof e&&(e=e(u({},n),this.props)),e&&u(n,e),null!=e&&this.__v&&(a&&this.__h.push(a),b(this))},g.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),b(this))},g.prototype.render=h,t=[],i="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,y.__r=0,r=0;var R=0;function D(e,n,t,i,o){var r,s,l={};for(s in n)"ref"==s?r=n[s]:l[s]=n[s];var p={type:e,props:l,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--R,__source:o,__self:i};if("function"==typeof e&&(r=e.defaultProps))for(s in r)void 0===l[s]&&(l[s]=r[s]);return a.vnode&&a.vnode(p),p}var E,j,M,F=0,B=[],O=a.__b,H=a.__r,W=a.diffed,V=a.__c,G=a.unmount;function $(e,n){a.__h&&a.__h(j,e,F||n),F=0;var t=j.__H||(j.__H={__:[],__h:[]});return e>=t.__.length&&t.__.push({}),t.__[e]}function J(e){return F=1,function(e,a,n){var t=$(E++,2);return t.t=e,t.__c||(t.__=[n?n(a):ie(void 0,a),function(e){var a=t.t(t.__[0],e);t.__[0]!==a&&(t.__=[a,t.__[1]],t.__c.setState({}))}],t.__c=j),t.__}(ie,e)}function q(e,n){var t=$(E++,3);!a.__s&&te(t.__H,n)&&(t.__=e,t.__H=n,j.__H.__h.push(t))}function K(e,n){var t=$(E++,4);!a.__s&&te(t.__H,n)&&(t.__=e,t.__H=n,j.__h.push(t))}function Z(e){return F=5,Y((function(){return{current:e}}),[])}function Y(e,a){var n=$(E++,7);return te(n.__H,a)&&(n.__=e(),n.__H=a,n.__h=e),n.__}function X(e){var a=j.context[e.__c],n=$(E++,9);return n.c=e,a?(null==n.__&&(n.__=!0,a.sub(j)),a.props.value):e.__}function Q(){for(var e;e=B.shift();)if(e.__P)try{e.__H.__h.forEach(ae),e.__H.__h.forEach(ne),e.__H.__h=[]}catch(n){e.__H.__h=[],a.__e(n,e.__v)}}a.__b=function(e){j=null,O&&O(e)},a.__r=function(e){H&&H(e),E=0;var a=(j=e.__c).__H;a&&(a.__h.forEach(ae),a.__h.forEach(ne),a.__h=[])},a.diffed=function(e){W&&W(e);var n=e.__c;n&&n.__H&&n.__H.__h.length&&(1!==B.push(n)&&M===a.requestAnimationFrame||((M=a.requestAnimationFrame)||function(e){var a,n=function(){clearTimeout(t),ee&&cancelAnimationFrame(a),setTimeout(e)},t=setTimeout(n,100);ee&&(a=requestAnimationFrame(n))})(Q)),j=null},a.__c=function(e,n){n.some((function(e){try{e.__h.forEach(ae),e.__h=e.__h.filter((function(e){return!e.__||ne(e)}))}catch(t){n.some((function(e){e.__h&&(e.__h=[])})),n=[],a.__e(t,e.__v)}})),V&&V(e,n)},a.unmount=function(e){G&&G(e);var n,t=e.__c;t&&t.__H&&(t.__H.__.forEach((function(e){try{ae(e)}catch(e){n=e}})),n&&a.__e(n,t.__v))};var ee="function"==typeof requestAnimationFrame;function ae(e){var a=j,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),j=a}function ne(e){var a=j;e.__c=e.__(),j=a}function te(e,a){return!e||e.length!==a.length||a.some((function(a,n){return a!==e[n]}))}function ie(e,a){return"function"==typeof a?a(e):a}
|
|
1
|
+
!function(){"use strict";var e,a,n,t,i,o,r,s={},l=[],p=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function u(e,a){for(var n in a)e[n]=a[n];return e}function c(e){var a=e.parentNode;a&&a.removeChild(e)}function d(a,n,t){var i,o,r,s={};for(r in n)"key"==r?i=n[r]:"ref"==r?o=n[r]:s[r]=n[r];if(arguments.length>2&&(s.children=arguments.length>3?e.call(arguments,2):t),"function"==typeof a&&null!=a.defaultProps)for(r in a.defaultProps)void 0===s[r]&&(s[r]=a.defaultProps[r]);return m(a,s,i,o,null)}function m(e,t,i,o,r){var s={type:e,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++n:r};return null==r&&null!=a.vnode&&a.vnode(s),s}function h(e){return e.children}function g(e,a){this.props=e,this.context=a}function v(e,a){if(null==a)return e.__?v(e.__,e.__.__k.indexOf(e)+1):null;for(var n;a<e.__k.length;a++)if(null!=(n=e.__k[a])&&null!=n.__e)return n.__e;return"function"==typeof e.type?v(e):null}function f(e){var a,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,a=0;a<e.__k.length;a++)if(null!=(n=e.__k[a])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return f(e)}}function b(e){(!e.__d&&(e.__d=!0)&&t.push(e)&&!y.__r++||o!==a.debounceRendering)&&((o=a.debounceRendering)||i)(y)}function y(){for(var e;y.__r=t.length;)e=t.sort((function(e,a){return e.__v.__b-a.__v.__b})),t=[],e.some((function(e){var a,n,t,i,o,r;e.__d&&(o=(i=(a=e).__v).__e,(r=a.__P)&&(n=[],(t=u({},i)).__v=i.__v+1,U(r,i,t,a.__n,void 0!==r.ownerSVGElement,null!=i.__h?[o]:null,n,null==o?v(i):o,i.__h),x(n,i),i.__e!=o&&f(i)))}))}function _(e,a,n,t,i,o,r,p,u,c){var d,g,f,b,y,_,w,S=t&&t.__k||l,A=S.length;for(n.__k=[],d=0;d<a.length;d++)if(null!=(b=n.__k[d]=null==(b=a[d])||"boolean"==typeof b?null:"string"==typeof b||"number"==typeof b||"bigint"==typeof b?m(null,b,null,null,b):Array.isArray(b)?m(h,{children:b},null,null,null):b.__b>0?m(b.type,b.props,b.key,null,b.__v):b)){if(b.__=n,b.__b=n.__b+1,null===(f=S[d])||f&&b.key==f.key&&b.type===f.type)S[d]=void 0;else for(g=0;g<A;g++){if((f=S[g])&&b.key==f.key&&b.type===f.type){S[g]=void 0;break}f=null}U(e,b,f=f||s,i,o,r,p,u,c),y=b.__e,(g=b.ref)&&f.ref!=g&&(w||(w=[]),f.ref&&w.push(f.ref,null,b),w.push(g,b.__c||y,b)),null!=y?(null==_&&(_=y),"function"==typeof b.type&&b.__k===f.__k?b.__d=u=C(b,u,e):u=k(e,b,f,S,y,u),"function"==typeof n.type&&(n.__d=u)):u&&f.__e==u&&u.parentNode!=e&&(u=v(f))}for(n.__e=_,d=A;d--;)null!=S[d]&&("function"==typeof n.type&&null!=S[d].__e&&S[d].__e==n.__d&&(n.__d=v(t,d+1)),I(S[d],S[d]));if(w)for(d=0;d<w.length;d++)z(w[d],w[++d],w[++d])}function C(e,a,n){for(var t,i=e.__k,o=0;i&&o<i.length;o++)(t=i[o])&&(t.__=e,a="function"==typeof t.type?C(t,a,n):k(n,t,t,i,t.__e,a));return a}function k(e,a,n,t,i,o){var r,s,l;if(void 0!==a.__d)r=a.__d,a.__d=void 0;else if(null==n||i!=o||null==i.parentNode)e:if(null==o||o.parentNode!==e)e.appendChild(i),r=null;else{for(s=o,l=0;(s=s.nextSibling)&&l<t.length;l+=2)if(s==i)break e;e.insertBefore(i,o),r=o}return void 0!==r?r:i.nextSibling}function w(e,a,n){"-"===a[0]?e.setProperty(a,n):e[a]=null==n?"":"number"!=typeof n||p.test(a)?n:n+"px"}function S(e,a,n,t,i){var o;e:if("style"===a)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof t&&(e.style.cssText=t=""),t)for(a in t)n&&a in n||w(e.style,a,"");if(n)for(a in n)t&&n[a]===t[a]||w(e.style,a,n[a])}else if("o"===a[0]&&"n"===a[1])o=a!==(a=a.replace(/Capture$/,"")),a=a.toLowerCase()in e?a.toLowerCase().slice(2):a.slice(2),e.l||(e.l={}),e.l[a+o]=n,n?t||e.addEventListener(a,o?P:A,o):e.removeEventListener(a,o?P:A,o);else if("dangerouslySetInnerHTML"!==a){if(i)a=a.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("href"!==a&&"list"!==a&&"form"!==a&&"tabIndex"!==a&&"download"!==a&&a in e)try{e[a]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null!=n&&(!1!==n||"a"===a[0]&&"r"===a[1])?e.setAttribute(a,n):e.removeAttribute(a))}}function A(e){this.l[e.type+!1](a.event?a.event(e):e)}function P(e){this.l[e.type+!0](a.event?a.event(e):e)}function U(e,n,t,i,o,r,s,l,p){var c,d,m,v,f,b,y,C,k,w,S,A=n.type;if(void 0!==n.constructor)return null;null!=t.__h&&(p=t.__h,l=n.__e=t.__e,n.__h=null,r=[l]),(c=a.__b)&&c(n);try{e:if("function"==typeof A){if(C=n.props,k=(c=A.contextType)&&i[c.__c],w=c?k?k.props.value:c.__:i,t.__c?y=(d=n.__c=t.__c).__=d.__E:("prototype"in A&&A.prototype.render?n.__c=d=new A(C,w):(n.__c=d=new g(C,w),d.constructor=A,d.render=N),k&&k.sub(d),d.props=C,d.state||(d.state={}),d.context=w,d.__n=i,m=d.__d=!0,d.__h=[]),null==d.__s&&(d.__s=d.state),null!=A.getDerivedStateFromProps&&(d.__s==d.state&&(d.__s=u({},d.__s)),u(d.__s,A.getDerivedStateFromProps(C,d.__s))),v=d.props,f=d.state,m)null==A.getDerivedStateFromProps&&null!=d.componentWillMount&&d.componentWillMount(),null!=d.componentDidMount&&d.__h.push(d.componentDidMount);else{if(null==A.getDerivedStateFromProps&&C!==v&&null!=d.componentWillReceiveProps&&d.componentWillReceiveProps(C,w),!d.__e&&null!=d.shouldComponentUpdate&&!1===d.shouldComponentUpdate(C,d.__s,w)||n.__v===t.__v){d.props=C,d.state=d.__s,n.__v!==t.__v&&(d.__d=!1),d.__v=n,n.__e=t.__e,n.__k=t.__k,n.__k.forEach((function(e){e&&(e.__=n)})),d.__h.length&&s.push(d);break e}null!=d.componentWillUpdate&&d.componentWillUpdate(C,d.__s,w),null!=d.componentDidUpdate&&d.__h.push((function(){d.componentDidUpdate(v,f,b)}))}d.context=w,d.props=C,d.state=d.__s,(c=a.__r)&&c(n),d.__d=!1,d.__v=n,d.__P=e,c=d.render(d.props,d.state,d.context),d.state=d.__s,null!=d.getChildContext&&(i=u(u({},i),d.getChildContext())),m||null==d.getSnapshotBeforeUpdate||(b=d.getSnapshotBeforeUpdate(v,f)),S=null!=c&&c.type===h&&null==c.key?c.props.children:c,_(e,Array.isArray(S)?S:[S],n,t,i,o,r,s,l,p),d.base=n.__e,n.__h=null,d.__h.length&&s.push(d),y&&(d.__E=d.__=null),d.__e=!1}else null==r&&n.__v===t.__v?(n.__k=t.__k,n.__e=t.__e):n.__e=L(t.__e,n,t,i,o,r,s,p);(c=a.diffed)&&c(n)}catch(e){n.__v=null,(p||null!=r)&&(n.__e=l,n.__h=!!p,r[r.indexOf(l)]=null),a.__e(e,n,t)}}function x(e,n){a.__c&&a.__c(n,e),e.some((function(n){try{e=n.__h,n.__h=[],e.some((function(e){e.call(n)}))}catch(e){a.__e(e,n.__v)}}))}function L(a,n,t,i,o,r,l,p){var u,d,m,h=t.props,g=n.props,f=n.type,b=0;if("svg"===f&&(o=!0),null!=r)for(;b<r.length;b++)if((u=r[b])&&"setAttribute"in u==!!f&&(f?u.localName===f:3===u.nodeType)){a=u,r[b]=null;break}if(null==a){if(null===f)return document.createTextNode(g);a=o?document.createElementNS("http://www.w3.org/2000/svg",f):document.createElement(f,g.is&&g),r=null,p=!1}if(null===f)h===g||p&&a.data===g||(a.data=g);else{if(r=r&&e.call(a.childNodes),d=(h=t.props||s).dangerouslySetInnerHTML,m=g.dangerouslySetInnerHTML,!p){if(null!=r)for(h={},b=0;b<a.attributes.length;b++)h[a.attributes[b].name]=a.attributes[b].value;(m||d)&&(m&&(d&&m.__html==d.__html||m.__html===a.innerHTML)||(a.innerHTML=m&&m.__html||""))}if(function(e,a,n,t,i){var o;for(o in n)"children"===o||"key"===o||o in a||S(e,o,null,n[o],t);for(o in a)i&&"function"!=typeof a[o]||"children"===o||"key"===o||"value"===o||"checked"===o||n[o]===a[o]||S(e,o,a[o],n[o],t)}(a,g,h,o,p),m)n.__k=[];else if(b=n.props.children,_(a,Array.isArray(b)?b:[b],n,t,i,o&&"foreignObject"!==f,r,l,r?r[0]:t.__k&&v(t,0),p),null!=r)for(b=r.length;b--;)null!=r[b]&&c(r[b]);p||("value"in g&&void 0!==(b=g.value)&&(b!==a.value||"progress"===f&&!b||"option"===f&&b!==h.value)&&S(a,"value",b,h.value,!1),"checked"in g&&void 0!==(b=g.checked)&&b!==a.checked&&S(a,"checked",b,h.checked,!1))}return a}function z(e,n,t){try{"function"==typeof e?e(n):e.current=n}catch(e){a.__e(e,t)}}function I(e,n,t){var i,o;if(a.unmount&&a.unmount(e),(i=e.ref)&&(i.current&&i.current!==e.__e||z(i,null,n)),null!=(i=e.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(e){a.__e(e,n)}i.base=i.__P=null}if(i=e.__k)for(o=0;o<i.length;o++)i[o]&&I(i[o],n,"function"!=typeof e.type);t||null==e.__e||c(e.__e),e.__e=e.__d=void 0}function N(e,a,n){return this.constructor(e,n)}function T(e,a){var n={__c:a="__cC"+r++,__:e,Consumer:function(e,a){return e.children(a)},Provider:function(e){var n,t;return this.getChildContext||(n=[],(t={})[a]=this,this.getChildContext=function(){return t},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&n.some(b)},this.sub=function(e){n.push(e);var a=e.componentWillUnmount;e.componentWillUnmount=function(){n.splice(n.indexOf(e),1),a&&a.call(e)}}),e.children}};return n.Provider.__=n.Consumer.contextType=n}e=l.slice,a={__e:function(e,a,n,t){for(var i,o,r;a=a.__;)if((i=a.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(e)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(e,t||{}),r=i.__d),r)return i.__E=i}catch(a){e=a}throw e}},n=0,g.prototype.setState=function(e,a){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=u({},this.state),"function"==typeof e&&(e=e(u({},n),this.props)),e&&u(n,e),null!=e&&this.__v&&(a&&this.__h.push(a),b(this))},g.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),b(this))},g.prototype.render=h,t=[],i="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,y.__r=0,r=0;var R=0;function D(e,n,t,i,o){var r,s,l={};for(s in n)"ref"==s?r=n[s]:l[s]=n[s];var p={type:e,props:l,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--R,__source:o,__self:i};if("function"==typeof e&&(r=e.defaultProps))for(s in r)void 0===l[s]&&(l[s]=r[s]);return a.vnode&&a.vnode(p),p}var E,j,M,F=0,B=[],O=a.__b,H=a.__r,W=a.diffed,G=a.__c,V=a.unmount;function $(e,n){a.__h&&a.__h(j,e,F||n),F=0;var t=j.__H||(j.__H={__:[],__h:[]});return e>=t.__.length&&t.__.push({}),t.__[e]}function J(e){return F=1,function(e,a,n){var t=$(E++,2);return t.t=e,t.__c||(t.__=[n?n(a):ie(void 0,a),function(e){var a=t.t(t.__[0],e);t.__[0]!==a&&(t.__=[a,t.__[1]],t.__c.setState({}))}],t.__c=j),t.__}(ie,e)}function q(e,n){var t=$(E++,3);!a.__s&&te(t.__H,n)&&(t.__=e,t.__H=n,j.__H.__h.push(t))}function K(e,n){var t=$(E++,4);!a.__s&&te(t.__H,n)&&(t.__=e,t.__H=n,j.__h.push(t))}function Z(e){return F=5,Y((function(){return{current:e}}),[])}function Y(e,a){var n=$(E++,7);return te(n.__H,a)&&(n.__=e(),n.__H=a,n.__h=e),n.__}function X(e){var a=j.context[e.__c],n=$(E++,9);return n.c=e,a?(null==n.__&&(n.__=!0,a.sub(j)),a.props.value):e.__}function Q(){for(var e;e=B.shift();)if(e.__P)try{e.__H.__h.forEach(ae),e.__H.__h.forEach(ne),e.__H.__h=[]}catch(n){e.__H.__h=[],a.__e(n,e.__v)}}a.__b=function(e){j=null,O&&O(e)},a.__r=function(e){H&&H(e),E=0;var a=(j=e.__c).__H;a&&(a.__h.forEach(ae),a.__h.forEach(ne),a.__h=[])},a.diffed=function(e){W&&W(e);var n=e.__c;n&&n.__H&&n.__H.__h.length&&(1!==B.push(n)&&M===a.requestAnimationFrame||((M=a.requestAnimationFrame)||function(e){var a,n=function(){clearTimeout(t),ee&&cancelAnimationFrame(a),setTimeout(e)},t=setTimeout(n,100);ee&&(a=requestAnimationFrame(n))})(Q)),j=null},a.__c=function(e,n){n.some((function(e){try{e.__h.forEach(ae),e.__h=e.__h.filter((function(e){return!e.__||ne(e)}))}catch(t){n.some((function(e){e.__h&&(e.__h=[])})),n=[],a.__e(t,e.__v)}})),G&&G(e,n)},a.unmount=function(e){V&&V(e);var n,t=e.__c;t&&t.__H&&(t.__H.__.forEach((function(e){try{ae(e)}catch(e){n=e}})),n&&a.__e(n,t.__v))};var ee="function"==typeof requestAnimationFrame;function ae(e){var a=j,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),j=a}function ne(e){var a=j;e.__c=e.__(),j=a}function te(e,a){return!e||e.length!==a.length||a.some((function(a,n){return a!==e[n]}))}function ie(e,a){return"function"==typeof a?a(e):a}
|
|
2
2
|
/**
|
|
3
3
|
* @license
|
|
4
4
|
* Copyright 2017 The Lighthouse Authors. All Rights Reserved.
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
15
|
* See the License for the specific language governing permissions and
|
|
16
16
|
* limitations under the License.
|
|
17
|
-
*/const oe="…",re={PASS:{label:"pass",minScore:.9},AVERAGE:{label:"average",minScore:.5},FAIL:{label:"fail"},ERROR:{label:"error"}},se=["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"];class le{static get RATINGS(){return re}static get PASS_THRESHOLD(){return.9}static get MS_DISPLAY_VALUE(){return"%10d 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){if(e.fullPageScreenshot)return e.fullPageScreenshot;return e.audits["full-page-screenshot"]?.details}static splitMarkdownCodeSpans(e){const a=[],n=e.split(/`(.*?)`/g);for(let e=0;e<n.length;e++){const t=n[e];if(!t)continue;const i=e%2!=0;a.push({isCode:i,text:t})}return a}static splitMarkdownLink(e){const a=[],n=e.split(/\[([^\]]+?)\]\((https?:\/\/.*?)\)/g);for(;n.length;){const[e,t,i]=n.splice(0,3);e&&a.push({isLink:!1,text:e}),t&&i&&a.push({isLink:!0,text:t,linkHref:i})}return a}static getURLDisplayName(e,a){const n=void 0!==(a=a||{numPathParts:void 0,preserveQuery:void 0,preserveHost:void 0}).numPathParts?a.numPathParts:2,t=void 0===a.preserveQuery||a.preserveQuery,i=a.preserveHost||!1;let o;if("about:"===e.protocol||"data:"===e.protocol)o=e.href;else{o=e.pathname;const a=o.split("/").filter((e=>e.length));n&&a.length>n&&(o=oe+a.slice(-1*n).join("/")),i&&(o=`${e.host}/${o.replace(/^\//,"")}`),t&&(o=`${o}${e.search}`)}if("data:"!==e.protocol&&(o=o.replace(/([a-f0-9]{7})[a-f0-9]{13}[a-f0-9]*/g,"$1…"),o=o.replace(/([a-zA-Z0-9-_]{9})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9-_]{10,}/g,"$1…"),o=o.replace(/(\d{3})\d{6,}/g,"$1…"),o=o.replace(/\u2026+/g,oe),o.length>64&&o.includes("?")&&(o=o.replace(/\?([^=]*)(=)?.*/,"?$1$2…"),o.length>64&&(o=o.replace(/\?.*/,"?…")))),o.length>64){const e=o.lastIndexOf(".");o=e>=0?o.slice(0,63-(o.length-e))+`…${o.slice(e)}`:o.slice(0,63)+oe}return o}static parseURL(e){const a=new URL(e);return{file:le.getURLDisplayName(a),hostname:a.hostname,origin:a.origin}}static createOrReturnURL(e){return e instanceof URL?e:new URL(e)}static getTld(e){const a=e.split(".").slice(-2);return se.includes(a[0])?`.${a.join(".")}`:`.${a[a.length-1]}`}static getRootDomain(e){const a=le.createOrReturnURL(e).hostname,n=le.getTld(a).split(".");return a.split(".").slice(-n.length).join(".")}static filterRelevantLines(e,a,n){if(0===a.length)return e.slice(0,2*n+1);const t=new Set;return(a=a.sort(((e,a)=>(e.lineNumber||0)-(a.lineNumber||0)))).forEach((({lineNumber:e})=>{let a=e-n,i=e+n;for(;a<1;)a++,i++;t.has(a-3-1)&&(a-=3);for(let e=a;e<=i;e++){const a=e;t.add(a)}})),e.filter((e=>t.has(e.lineNumber)))}}
|
|
17
|
+
*/const oe="…",re={PASS:{label:"pass",minScore:.9},AVERAGE:{label:"average",minScore:.5},FAIL:{label:"fail"},ERROR:{label:"error"}},se=["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"];class le{static get RATINGS(){return re}static get PASS_THRESHOLD(){return.9}static get MS_DISPLAY_VALUE(){return"%10d 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){if(e.fullPageScreenshot)return e.fullPageScreenshot;return e.audits["full-page-screenshot"]?.details}static splitMarkdownCodeSpans(e){const a=[],n=e.split(/`(.*?)`/g);for(let e=0;e<n.length;e++){const t=n[e];if(!t)continue;const i=e%2!=0;a.push({isCode:i,text:t})}return a}static splitMarkdownLink(e){const a=[],n=e.split(/\[([^\]]+?)\]\((https?:\/\/.*?)\)/g);for(;n.length;){const[e,t,i]=n.splice(0,3);e&&a.push({isLink:!1,text:e}),t&&i&&a.push({isLink:!0,text:t,linkHref:i})}return a}static truncate(e,a,n="…"){if(e.length<=a)return e;const t=new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(e)[Symbol.iterator]();let i=0;for(let o=0;o<=a-n.length;o++){const a=t.next();if(a.done)return e;i=a.value.index}for(let a=0;a<n.length;a++)if(t.next().done)return e;return e.slice(0,i)+n}static getURLDisplayName(e,a){const n=void 0!==(a=a||{numPathParts:void 0,preserveQuery:void 0,preserveHost:void 0}).numPathParts?a.numPathParts:2,t=void 0===a.preserveQuery||a.preserveQuery,i=a.preserveHost||!1;let o;if("about:"===e.protocol||"data:"===e.protocol)o=e.href;else{o=e.pathname;const a=o.split("/").filter((e=>e.length));n&&a.length>n&&(o=oe+a.slice(-1*n).join("/")),i&&(o=`${e.host}/${o.replace(/^\//,"")}`),t&&(o=`${o}${e.search}`)}if("data:"!==e.protocol&&(o=o.replace(/([a-f0-9]{7})[a-f0-9]{13}[a-f0-9]*/g,"$1…"),o=o.replace(/([a-zA-Z0-9-_]{9})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9-_]{10,}/g,"$1…"),o=o.replace(/(\d{3})\d{6,}/g,"$1…"),o=o.replace(/\u2026+/g,oe),o.length>64&&o.includes("?")&&(o=o.replace(/\?([^=]*)(=)?.*/,"?$1$2…"),o.length>64&&(o=o.replace(/\?.*/,"?…")))),o.length>64){const e=o.lastIndexOf(".");o=e>=0?o.slice(0,63-(o.length-e))+`…${o.slice(e)}`:o.slice(0,63)+oe}return o}static parseURL(e){const a=new URL(e);return{file:le.getURLDisplayName(a),hostname:a.hostname,origin:a.origin}}static createOrReturnURL(e){return e instanceof URL?e:new URL(e)}static getTld(e){const a=e.split(".").slice(-2);return se.includes(a[0])?`.${a.join(".")}`:`.${a[a.length-1]}`}static getRootDomain(e){const a=le.createOrReturnURL(e).hostname,n=le.getTld(a).split(".");return a.split(".").slice(-n.length).join(".")}static filterRelevantLines(e,a,n){if(0===a.length)return e.slice(0,2*n+1);const t=new Set;return(a=a.sort(((e,a)=>(e.lineNumber||0)-(a.lineNumber||0)))).forEach((({lineNumber:e})=>{let a=e-n,i=e+n;for(;a<1;)a++,i++;t.has(a-3-1)&&(a-=3);for(let e=a;e<=i;e++){const a=e;t.add(a)}})),e.filter((e=>t.has(e.lineNumber)))}}
|
|
18
18
|
/**
|
|
19
19
|
* @license Copyright 2023 The Lighthouse Authors. All Rights Reserved.
|
|
20
20
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
31
31
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
32
32
|
*/
|
|
33
|
-
const de=le.RATINGS;class me{static prepareReportResult(e){const a=JSON.parse(JSON.stringify(e));!function(e){e.configSettings.locale||(e.configSettings.locale="en"),e.configSettings.formFactor||(e.configSettings.formFactor=e.configSettings.emulatedFormFactor),e.finalDisplayedUrl=le.getFinalDisplayedUrl(e),e.mainDocumentUrl=le.getMainDocumentUrl(e);for(const a of Object.values(e.audits))if("not_applicable"!==a.scoreDisplayMode&&"not-applicable"!==a.scoreDisplayMode||(a.scoreDisplayMode="notApplicable"),a.details){if(void 0!==a.details.type&&"diagnostic"!==a.details.type||(a.details.type="debugdata"),"filmstrip"===a.details.type)for(const e of a.details.items)e.data.startsWith(ce)||(e.data=ce+e.data);if("table"===a.details.type)for(const e of a.details.headings){const{itemType:a,text:n}=e;void 0!==a&&(e.valueType=a,delete e.itemType),void 0!==n&&(e.label=n,delete e.text);const t=e.subItemsHeading?.itemType;e.subItemsHeading&&void 0!==t&&(e.subItemsHeading.valueType=t,delete e.subItemsHeading.itemType)}}const[a]=e.lighthouseVersion.split(".").map(Number),n=e.categories.performance;if(a<9&&n){e.categoryGroups||(e.categoryGroups={}),e.categoryGroups.hidden={title:""};for(const e of n.auditRefs)e.group?["load-opportunities","diagnostics"].includes(e.group)&&delete e.group:e.group="hidden"}if(e.environment||(e.environment={benchmarkIndex:0,networkUserAgent:e.userAgent,hostUserAgent:e.userAgent}),e.configSettings.screenEmulation||(e.configSettings.screenEmulation={width:-1,height:-1,deviceScaleFactor:-1,mobile:/mobile/i.test(e.environment.hostUserAgent),disabled:!1}),e.i18n||(e.i18n={}),e.audits["full-page-screenshot"]){const a=e.audits["full-page-screenshot"].details;e.fullPageScreenshot=a?{screenshot:a.screenshot,nodes:a.nodes}:null,delete e.audits["full-page-screenshot"]}}(a);for(const e of Object.values(a.audits))me.classifyEntities(a.entities,e);if("object"!=typeof a.categories)throw new Error("No categories provided.");const n=new Map;for(const e of Object.values(a.categories))e.auditRefs.forEach((e=>{e.relevantAudits&&e.relevantAudits.forEach((a=>{const t=n.get(a)||[];t.push(e),n.set(a,t)}))})),e.auditRefs.forEach((e=>{const t=a.audits[e.id];e.result=t,n.has(e.id)&&(e.relevantMetrics=n.get(e.id)),a.stackPacks&&a.stackPacks.forEach((a=>{a.descriptions[e.id]&&(e.stackPacks=e.stackPacks||[],e.stackPacks.push({title:a.title,iconDataURL:a.iconDataURL,description:a.descriptions[e.id]}))}))}));return a}static getUrlLocatorFn(e){const a=e.find((e=>"url"===e.valueType))?.key;if(a&&"string"==typeof a)return e=>{const n=e[a];if("string"==typeof n)return n};const n=e.find((e=>"source-location"===e.valueType))?.key;return n?e=>{const a=e[n];if("object"==typeof a&&"source-location"===a.type)return a.url}:void 0}static classifyEntities(e,a){if(!e)return;if("opportunity"!==a.details?.type&&"table"!==a.details?.type)return;const{items:n,headings:t}=a.details;if(!n.length||n.some((e=>e.entity)))return;const i=me.getUrlLocatorFn(t);if(i)for(const a of n){const n=i(a);if(!n)continue;let t="";try{t=le.parseURL(n).origin}catch{}if(!t)continue;const o=e.find((e=>e.origins.includes(t)));o&&(a.entity=o.name)}}static getEmulationDescriptions(e){let a,n,t;const i=e.throttling,o=ue.i18n,r=ue.strings;switch(e.throttlingMethod){case"provided":t=n=a=r.throttlingProvided;break;case"devtools":{const{cpuSlowdownMultiplier:e,requestLatencyMs:s}=i;a=`${o.formatNumber(e)}x slowdown (DevTools)`,n=`${o.formatMilliseconds(s)} HTTP RTT, ${o.formatKbps(i.downloadThroughputKbps)} down, ${o.formatKbps(i.uploadThroughputKbps)} up (DevTools)`;t=(()=>562.5===s&&i.downloadThroughputKbps===1638.4*.9&&675===i.uploadThroughputKbps)()?r.runtimeSlow4g:r.runtimeCustom;break}case"simulate":{const{cpuSlowdownMultiplier:e,rttMs:s,throughputKbps:l}=i;a=`${o.formatNumber(e)}x slowdown (Simulated)`,n=`${o.formatMilliseconds(s)} TCP RTT, ${o.formatKbps(l)} throughput (Simulated)`;t=(()=>150===s&&1638.4===l)()?r.runtimeSlow4g:r.runtimeCustom;break}default:t=a=n=r.runtimeUnknown}const s="devtools"!==e.channel&&e.screenEmulation.disabled,l="devtools"===e.channel?"mobile"===e.formFactor:e.screenEmulation.mobile;let p=r.runtimeMobileEmulation;s?p=r.runtimeNoEmulation:l||(p=r.runtimeDesktopEmulation);return{deviceEmulation:p,screenEmulation:s?void 0:`${e.screenEmulation.width}x${e.screenEmulation.height}, DPR ${e.screenEmulation.deviceScaleFactor}`,cpuThrottling:a,networkThrottling:n,summary:t}}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)>=de.PASS.minScore}}static calculateRating(e,a){if("manual"===a||"notApplicable"===a)return de.PASS.label;if("error"===a)return de.ERROR.label;if(null===e)return de.FAIL.label;let n=de.FAIL.label;return e>=de.PASS.minScore?n=de.PASS.label:e>=de.AVERAGE.minScore&&(n=de.AVERAGE.label),n}static calculateCategoryFraction(e){let a=0,n=0,t=0,i=0;for(const o of e.auditRefs){const e=me.showAsPassed(o.result);"hidden"!==o.group&&"manual"!==o.result.scoreDisplayMode&&"notApplicable"!==o.result.scoreDisplayMode&&("informative"!==o.result.scoreDisplayMode?(++a,i+=o.weight,e&&n++):e||++t)}return{numPassed:n,numPassableAudits:a,numInformative:t,totalWeight:i}}static isPluginCategory(e){return e.startsWith("lighthouse-plugin-")}static shouldDisplayAsFraction(e){return"timespan"===e||"snapshot"===e}}const he={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",viewOriginalTraceLabel:"View Original 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",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"},ge=()=>D("svg",{width:"14",viewBox:"0 0 18 16",fill:"none",role:"img",children:D("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"})}),ve=()=>D("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",role:"img","aria-label":"Icon representing a navigation report",children:D("circle",{cx:"8",cy:"8",r:"7",fill:"none",stroke:"currentColor","stroke-width":"2"})}),fe=()=>D("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",role:"img","aria-label":"Icon representing a timespan report",children:[D("circle",{cx:"8",cy:"8",r:"7",fill:"none",stroke:"currentColor","stroke-width":"2"}),D("path",{d:"m 8,4 v 4 l 4,1.9999998",stroke:"currentColor","stroke-width":"1.5"})]}),be=()=>D("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:D("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"})}),ye=()=>D("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:[D("path",{d:"M0 0h24v24H0V0z",fill:"none"}),D("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"})]}),_e=()=>D("svg",{width:"15",height:"12",viewBox:"0 0 15 12",fill:"none",role:"img",children:D("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"})}),Ce=()=>D("svg",{width:"16",height:"11",viewBox:"0 0 16 11",fill:"none",role:"img",children:D("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"})}),ke=()=>D("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",role:"img",children:D("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"})}),we=()=>D("svg",{viewBox:"0 0 18 12",width:"18",height:"12",role:"img",children:[D("rect",{width:"18",height:"2",fill:"currentColor"}),D("rect",{y:"5",width:"18",height:"2",fill:"currentColor"}),D("rect",{y:"10",width:"18",height:"2",fill:"currentColor"})]}),Se=()=>D("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:D("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"})}),Ae=T(void 0),Pe=T({});function Ue(e){return new URLSearchParams(location.hash.replace("#","?")).get(e)}function xe(...e){const a=[];for(const n of e){if(!n)continue;if("string"==typeof n){a.push(n);continue}const e=Object.entries(n).filter((([e,a])=>a)).map((([e])=>e));a.push(...e)}return a.join(" ")}function Le(e,a){switch(e){case"navigation":return a.navigationDescription;case"timespan":return a.timespanDescription;case"snapshot":return a.snapshotDescription}}function ze(){const e=X(Ae);if(!e)throw Error("useFlowResult must be called in the FlowResultContext");return e}function Ie(){const e=ze(),[a,n]=function(...e){const[a,n]=J(e.map(Ue));return q((()=>{function t(){const t=e.map(Ue);t.every(((e,n)=>e===a[n]))||n(t)}return window.addEventListener("hashchange",t),()=>window.removeEventListener("hashchange",t)}),[a]),a}("index","anchor");return Y((()=>{if(!a)return null;const t=Number(a);if(!Number.isFinite(t))return console.warn(`Invalid hash index: ${a}`),null;const i=e.steps[t];return i?{currentLhr:i.lhr,index:t,anchor:n}:(console.warn(`No flow step at index ${t}`),null)}),[a,e,n])}function Ne(e,a){const n=Z(null);return K((()=>{if(!n.current)return;const a=e();return n.current.append(a),()=>{n.current?.contains(a)&&n.current.removeChild(a)}}),a),n}const Te=()=>D("div",{className:"Separator",role:"separator"}),Re=({mode:e})=>D(h,{children:["navigation"===e&&D(ve,{}),"timespan"===e&&D(fe,{}),"snapshot"===e&&D(be,{})]}),De=({mode:e})=>D("div",{className:"FlowSegment",children:[D("div",{className:"FlowSegment__top-line"}),e&&D(Re,{mode:e}),D("div",{className:"FlowSegment__bottom-line"})]}),Ee=({frames:e,width:a,height:n})=>{const[t,i]=J(0),o=t%e.length;return q((()=>{const a=setInterval((()=>i((a=>(a+1)%e.length))),500);return()=>clearInterval(a)}),[e.length]),D("img",{className:"FlowStepThumbnail","data-testid":"FlowStepAnimatedThumbnail",src:e[o].data,style:{width:a,height:n},alt:"Animated screenshots of a page tested by Lighthouse"})},je=({lhr:e,width:a,height:n})=>{const t=function(e){const a=e.audits["screenshot-thumbnails"];if(!a)return;return a.details&&"filmstrip"===a.details.type&&a.details.items||void 0}(e),i=function(e){const{width:a,height:n}=e.configSettings.screenEmulation;return{width:a,height:n}}(e);if(a&&void 0===n?n=i.height*a/i.width:n&&void 0===a&&(a=i.width*n/i.height),!a||!n)return console.warn(new Error("FlowStepThumbnail requested without any dimensions").stack),D(h,{});let o;if(t?.length){if(o=t[t.length-1].data,"timespan"===e.gatherMode)return D(Ee,{frames:t,width:a,height:n})}else o=le.getFullPageScreenshot(e)?.screenshot.data;return D(h,{children:o&&D("img",{className:"FlowStepThumbnail",src:o,style:{width:a,height:n},alt:"Screenshot of a page tested by Lighthouse"})})};var Me,Fe=function(){function e(a,n,t,i){this.message=a,this.expected=n,this.found=t,this.location=i,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,e)}return function(e,a){function n(){this.constructor=e}n.prototype=a.prototype,e.prototype=new n}(e,Error),e.buildMessage=function(e,a){var n={literal:function(e){return'"'+i(e.text)+'"'},class:function(e){var a,n="";for(a=0;a<e.parts.length;a++)n+=e.parts[a]instanceof Array?o(e.parts[a][0])+"-"+o(e.parts[a][1]):o(e.parts[a]);return"["+(e.inverted?"^":"")+n+"]"},any:function(e){return"any character"},end:function(e){return"end of input"},other:function(e){return e.description}};function t(e){return e.charCodeAt(0).toString(16).toUpperCase()}function i(e){return e.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(e){return"\\x0"+t(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+t(e)}))}function o(e){return e.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(e){return"\\x0"+t(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+t(e)}))}return"Expected "+function(e){var a,t,i,o=new Array(e.length);for(a=0;a<e.length;a++)o[a]=(i=e[a],n[i.type](i));if(o.sort(),o.length>0){for(a=1,t=1;a<o.length;a++)o[a-1]!==o[a]&&(o[t]=o[a],t++);o.length=t}switch(o.length){case 1:return o[0];case 2:return o[0]+" or "+o[1];default:return o.slice(0,-1).join(", ")+", or "+o[o.length-1]}}(e)+" but "+function(e){return e?'"'+i(e)+'"':"end of input"}(a)+" found."},{SyntaxError:e,parse:function(a,n){n=void 0!==n?n:{};var t,i={},o={start:pe},r=pe,s=function(e){return e.join("")},l=te("{",!1),p=",",u=te(",",!1),c=te("}",!1),d="number",m=te("number",!1),h="date",g=te("date",!1),v="time",f=te("time",!1),b="plural",y=te("plural",!1),_="selectordinal",C=te("selectordinal",!1),k="select",w=te("select",!1),S=te("=",!1),A="offset:",P=te("offset:",!1),U=oe("whitespace"),x=/^[ \t\n\r]/,L=ie([" ","\t","\n","\r"],!1,!1),z=oe("optionalWhitespace"),I=/^[0-9]/,N=ie([["0","9"]],!1,!1),T=/^[0-9a-f]/i,R=ie([["0","9"],["a","f"]],!1,!0),D=te("0",!1),E=/^[1-9]/,j=ie([["1","9"]],!1,!1),M="'",F=te("'",!1),B=/^[ \t\n\r,.+={}#]/,O=ie([" ","\t","\n","\r",",",".","+","=","{","}","#"],!1,!1),H={type:"any"},W=/^[^{}\\\0-\x1F\x7F \t\n\r]/,V=ie(["{","}","\\",["\0",""],""," ","\t","\n","\r"],!0,!1),G=te("\\\\",!1),$=te("\\#",!1),J=te("\\{",!1),q=te("\\}",!1),K=te("\\u",!1),Z=0,Y=0,X=[{line:1,column:1}],Q=0,ee=[],ae=0;if("startRule"in n){if(!(n.startRule in o))throw new Error("Can't start parsing from rule \""+n.startRule+'".');r=o[n.startRule]}function ne(){return se(Y,Z)}function te(e,a){return{type:"literal",text:e,ignoreCase:a}}function ie(e,a,n){return{type:"class",parts:e,inverted:a,ignoreCase:n}}function oe(e){return{type:"other",description:e}}function re(e){var n,t=X[e];if(t)return t;for(n=e-1;!X[n];)n--;for(t={line:(t=X[n]).line,column:t.column};n<e;)10===a.charCodeAt(n)?(t.line++,t.column=1):t.column++,n++;return X[e]=t,t}function se(e,a){var n=re(e),t=re(a);return{start:{offset:e,line:n.line,column:n.column},end:{offset:a,line:t.line,column:t.column}}}function le(e){Z<Q||(Z>Q&&(Q=Z,ee=[]),ee.push(e))}function pe(){return ue()}function ue(){var e,a,n;for(e=Z,a=[],n=ce();n!==i;)a.push(n),n=ce();return a!==i&&(Y=e,a={type:"messageFormatPattern",elements:a,location:ne()}),e=a}function ce(){var e;return(e=function(){var e,n;e=Z,(n=function(){var e,n,t,o,r,s;e=Z,n=[],t=Z,(o=ge())!==i&&(r=ke())!==i&&(s=ge())!==i?t=o=[o,r,s]:(Z=t,t=i);if(t!==i)for(;t!==i;)n.push(t),t=Z,(o=ge())!==i&&(r=ke())!==i&&(s=ge())!==i?t=o=[o,r,s]:(Z=t,t=i);else n=i;n!==i&&(Y=e,n=n.reduce((function(e,a){return e.concat(a)}),[]).join(""));(e=n)===i&&(e=Z,e=(n=he())!==i?a.substring(e,Z):n);return e}())!==i&&(Y=e,n={type:"messageTextElement",value:n,location:ne()});return e=n}())===i&&(e=function(){var e,n,t,o,r,S,A;e=Z,123===a.charCodeAt(Z)?(n="{",Z++):(n=i,0===ae&&le(l));n!==i&&ge()!==i&&(t=function(){var e,a,n;if((e=be())===i){for(e=Z,a=[],n=ye();n!==i;)a.push(n),n=ye();a!==i&&(Y=e,a=s(a)),e=a}return e}())!==i&&ge()!==i?(o=Z,44===a.charCodeAt(Z)?(r=p,Z++):(r=i,0===ae&&le(u)),r!==i&&(S=ge())!==i&&(A=function(){var e;(e=function(){var e,n,t,o,r,s;e=Z,a.substr(Z,6)===d?(n=d,Z+=6):(n=i,0===ae&&le(m));n===i&&(a.substr(Z,4)===h?(n=h,Z+=4):(n=i,0===ae&&le(g)),n===i&&(a.substr(Z,4)===v?(n=v,Z+=4):(n=i,0===ae&&le(f))));n!==i&&ge()!==i?(t=Z,44===a.charCodeAt(Z)?(o=p,Z++):(o=i,0===ae&&le(u)),o!==i&&(r=ge())!==i&&(s=ke())!==i?t=o=[o,r,s]:(Z=t,t=i),t===i&&(t=null),t!==i?(Y=e,e=n={type:n+"Format",style:(l=t)&&l[2],location:ne()}):(Z=e,e=i)):(Z=e,e=i);var l;return e}())===i&&(e=function(){var e,n,t,o;e=Z,a.substr(Z,6)===b?(n=b,Z+=6):(n=i,0===ae&&le(y));n!==i&&ge()!==i?(44===a.charCodeAt(Z)?(t=p,Z++):(t=i,0===ae&&le(u)),t!==i&&ge()!==i&&(o=me())!==i?(Y=e,e=n={type:(r=o).type,ordinal:!1,offset:r.offset||0,options:r.options,location:ne()}):(Z=e,e=i)):(Z=e,e=i);var r;return e}())===i&&(e=function(){var e,n,t,o;e=Z,a.substr(Z,13)===_?(n=_,Z+=13):(n=i,0===ae&&le(C));n!==i&&ge()!==i?(44===a.charCodeAt(Z)?(t=p,Z++):(t=i,0===ae&&le(u)),t!==i&&ge()!==i&&(o=me())!==i?(Y=e,e=n={type:(r=o).type,ordinal:!0,offset:r.offset||0,options:r.options,location:ne()}):(Z=e,e=i)):(Z=e,e=i);var r;return e}())===i&&(e=function(){var e,n,t,o,r;e=Z,a.substr(Z,6)===k?(n=k,Z+=6):(n=i,0===ae&&le(w));if(n!==i)if(ge()!==i)if(44===a.charCodeAt(Z)?(t=p,Z++):(t=i,0===ae&&le(u)),t!==i)if(ge()!==i){if(o=[],(r=de())!==i)for(;r!==i;)o.push(r),r=de();else o=i;o!==i?(Y=e,e=n=function(e){return{type:"selectFormat",options:e,location:ne()}}(o)):(Z=e,e=i)}else Z=e,e=i;else Z=e,e=i;else Z=e,e=i;else Z=e,e=i;return e}());return e}())!==i?o=r=[r,S,A]:(Z=o,o=i),o===i&&(o=null),o!==i&&(r=ge())!==i?(125===a.charCodeAt(Z)?(S="}",Z++):(S=i,0===ae&&le(c)),S!==i?(Y=e,e=n={type:"argumentElement",id:t,format:(P=o)&&P[2],location:ne()}):(Z=e,e=i)):(Z=e,e=i)):(Z=e,e=i);var P;return e}()),e}function de(){var e,n,t,o,r;return e=Z,ge()!==i&&(n=function(){var e,n,t,o;return e=Z,n=Z,61===a.charCodeAt(Z)?(t="=",Z++):(t=i,0===ae&&le(S)),t!==i&&(o=be())!==i?n=t=[t,o]:(Z=n,n=i),(e=n!==i?a.substring(e,Z):n)===i&&(e=ke()),e}())!==i&&ge()!==i?(123===a.charCodeAt(Z)?(t="{",Z++):(t=i,0===ae&&le(l)),t!==i&&(o=ue())!==i?(125===a.charCodeAt(Z)?(r="}",Z++):(r=i,0===ae&&le(c)),r!==i?(Y=e,e={type:"optionalFormatPattern",selector:n,value:o,location:ne()}):(Z=e,e=i)):(Z=e,e=i)):(Z=e,e=i),e}function me(){var e,n,t,o;if(e=Z,(n=function(){var e,n,t;return e=Z,a.substr(Z,7)===A?(n=A,Z+=7):(n=i,0===ae&&le(P)),n!==i&&ge()!==i&&(t=be())!==i?(Y=e,e=n=t):(Z=e,e=i),e}())===i&&(n=null),n!==i)if(ge()!==i){if(t=[],(o=de())!==i)for(;o!==i;)t.push(o),o=de();else t=i;t!==i?(Y=e,e=n=function(e,a){return{type:"pluralFormat",offset:e,options:a,location:ne()}}(n,t)):(Z=e,e=i)}else Z=e,e=i;else Z=e,e=i;return e}function he(){var e,n;if(ae++,e=[],x.test(a.charAt(Z))?(n=a.charAt(Z),Z++):(n=i,0===ae&&le(L)),n!==i)for(;n!==i;)e.push(n),x.test(a.charAt(Z))?(n=a.charAt(Z),Z++):(n=i,0===ae&&le(L));else e=i;return ae--,e===i&&(n=i,0===ae&&le(U)),e}function ge(){var e,n,t;for(ae++,e=Z,n=[],t=he();t!==i;)n.push(t),t=he();return e=n!==i?a.substring(e,Z):n,ae--,e===i&&(n=i,0===ae&&le(z)),e}function ve(){var e;return I.test(a.charAt(Z))?(e=a.charAt(Z),Z++):(e=i,0===ae&&le(N)),e}function fe(){var e;return T.test(a.charAt(Z))?(e=a.charAt(Z),Z++):(e=i,0===ae&&le(R)),e}function be(){var e,n,t,o,r,s;if(e=Z,48===a.charCodeAt(Z)?(n="0",Z++):(n=i,0===ae&&le(D)),n===i){if(n=Z,t=Z,E.test(a.charAt(Z))?(o=a.charAt(Z),Z++):(o=i,0===ae&&le(j)),o!==i){for(r=[],s=ve();s!==i;)r.push(s),s=ve();r!==i?t=o=[o,r]:(Z=t,t=i)}else Z=t,t=i;n=t!==i?a.substring(n,Z):t}return n!==i&&(Y=e,n=parseInt(n,10)),e=n}function ye(){var e,n,t;return e=Z,n=Z,ae++,39===a.charCodeAt(Z)?(t=M,Z++):(t=i,0===ae&&le(F)),t===i&&(B.test(a.charAt(Z))?(t=a.charAt(Z),Z++):(t=i,0===ae&&le(O))),ae--,t===i?n=void 0:(Z=n,n=i),n!==i?(a.length>Z?(t=a.charAt(Z),Z++):(t=i,0===ae&&le(H)),t!==i?(Y=e,e=n=t):(Z=e,e=i)):(Z=e,e=i),e===i&&(e=Z,39===a.charCodeAt(Z)?(n=M,Z++):(n=i,0===ae&&le(F)),n!==i&&(t=function(){var e;B.test(a.charAt(Z))?(e=a.charAt(Z),Z++):(e=i,0===ae&&le(O));e===i&&(e=_e());return e}())!==i?(Y=e,e=n=t):(Z=e,e=i)),e}function _e(){var e;return 39===a.charCodeAt(Z)?(e=M,Z++):(e=i,0===ae&&le(F)),e}function Ce(){var e,n,t,o,r,s,l,p,u;return e=Z,39===a.charCodeAt(Z)?(n=M,Z++):(n=i,0===ae&&le(F)),n!==i&&(t=_e())!==i?(Y=e,e=n=t):(Z=e,e=i),e===i&&(W.test(a.charAt(Z))?(e=a.charAt(Z),Z++):(e=i,0===ae&&le(V)),e===i&&(e=Z,"\\\\"===a.substr(Z,2)?(n="\\\\",Z+=2):(n=i,0===ae&&le(G)),n!==i&&(Y=e,n="\\"),(e=n)===i&&(e=Z,"\\#"===a.substr(Z,2)?(n="\\#",Z+=2):(n=i,0===ae&&le($)),n!==i&&(Y=e,n="\\#"),(e=n)===i&&(e=Z,"\\{"===a.substr(Z,2)?(n="\\{",Z+=2):(n=i,0===ae&&le(J)),n!==i&&(Y=e,n="{"),(e=n)===i&&(e=Z,"\\}"===a.substr(Z,2)?(n="\\}",Z+=2):(n=i,0===ae&&le(q)),n!==i&&(Y=e,n="}"),(e=n)===i&&(e=Z,"\\u"===a.substr(Z,2)?(n="\\u",Z+=2):(n=i,0===ae&&le(K)),n!==i?(t=Z,o=Z,(r=fe())!==i&&(s=fe())!==i&&(l=fe())!==i&&(p=fe())!==i?o=r=[r,s,l,p]:(Z=o,o=i),(t=o!==i?a.substring(t,Z):o)!==i?(Y=e,u=t,e=n=String.fromCharCode(parseInt(u,16))):(Z=e,e=i)):(Z=e,e=i))))))),e}function ke(){var e,a,n;if(e=Z,a=[],(n=Ce())!==i)for(;n!==i;)a.push(n),n=Ce();else a=i;return a!==i&&(Y=e,a=s(a)),e=a}if((t=r())!==i&&Z===a.length)return t;throw t!==i&&Z<a.length&&le({type:"end"}),function(a,n,t){return new e(e.buildMessage(a,n),a,n,t)}(ee,Q<a.length?a.charAt(Q):null,Q<a.length?se(Q,Q+1):se(Q,Q))}}}(),Be=(Me=function(e,a){return(Me=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,a){e.__proto__=a}||function(e,a){for(var n in a)a.hasOwnProperty(n)&&(e[n]=a[n])})(e,a)},function(e,a){function n(){this.constructor=e}Me(e,a),e.prototype=null===a?Object.create(a):(n.prototype=a.prototype,new n)}),Oe=function(){function e(e,a,n){this.locales=[],this.formats={number:{},date:{},time:{}},this.pluralNumberFormat=null,this.currentPlural=null,this.pluralStack=[],this.locales=e,this.formats=a,this.formatters=n}return e.prototype.compile=function(e){return this.pluralStack=[],this.currentPlural=null,this.pluralNumberFormat=null,this.compileMessage(e)},e.prototype.compileMessage=function(e){var a=this;if(!e||"messageFormatPattern"!==e.type)throw new Error('Message AST is not of type: "messageFormatPattern"');var n=e.elements,t=n.filter((function(e){return"messageTextElement"===e.type||"argumentElement"===e.type})).map((function(e){return"messageTextElement"===e.type?a.compileMessageText(e):a.compileArgument(e)}));if(t.length!==n.length)throw new Error("Message element does not have a valid type");return t},e.prototype.compileMessageText=function(e){return this.currentPlural&&/(^|[^\\])#/g.test(e.value)?(this.pluralNumberFormat||(this.pluralNumberFormat=new Intl.NumberFormat(this.locales)),new Ge(this.currentPlural.id,this.currentPlural.format.offset,this.pluralNumberFormat,e.value)):e.value.replace(/\\#/g,"#")},e.prototype.compileArgument=function(e){var a=e.format,n=e.id,t=this.formatters;if(!a)return new We(n);var i=this.formats,o=this.locales;switch(a.type){case"numberFormat":return{id:n,format:t.getNumberFormat(o,i.number[a.style]).format};case"dateFormat":return{id:n,format:t.getDateTimeFormat(o,i.date[a.style]).format};case"timeFormat":return{id:n,format:t.getDateTimeFormat(o,i.time[a.style]).format};case"pluralFormat":return new Ve(n,a.offset,this.compileOptions(e),t.getPluralRules(o,{type:a.ordinal?"ordinal":"cardinal"}));case"selectFormat":return new $e(n,this.compileOptions(e));default:throw new Error("Message element does not have a valid format type")}},e.prototype.compileOptions=function(e){var a=this,n=e.format,t=n.options;this.pluralStack.push(this.currentPlural),this.currentPlural="pluralFormat"===n.type?e:null;var i=t.reduce((function(e,n){return e[n.selector]=a.compileMessage(n.value),e}),{});return this.currentPlural=this.pluralStack.pop(),i},e}(),He=function(e){this.id=e},We=function(e){function a(){return null!==e&&e.apply(this,arguments)||this}return Be(a,e),a.prototype.format=function(e){return e||"number"==typeof e?"string"==typeof e?e:String(e):""},a}(He),Ve=function(){function e(e,a,n,t){this.id=e,this.offset=a,this.options=n,this.pluralRules=t}return e.prototype.getOption=function(e){var a=this.options;return a["="+e]||a[this.pluralRules.select(e-this.offset)]||a.other},e}(),Ge=function(e){function a(a,n,t,i){var o=e.call(this,a)||this;return o.offset=n,o.numberFormat=t,o.string=i,o}return Be(a,e),a.prototype.format=function(e){var a=this.numberFormat.format(e-this.offset);return this.string.replace(/(^|[^\\])#/g,"$1"+a).replace(/\\#/g,"#")},a}(He),$e=function(){function e(e,a){this.id=e,this.options=a}return e.prototype.getOption=function(e){var a=this.options;return a[e]||a.other},e}();function Je(e){return!!e.options}var qe=function(){var e=function(a,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,a){e.__proto__=a}||function(e,a){for(var n in a)a.hasOwnProperty(n)&&(e[n]=a[n])})(a,n)};return function(a,n){function t(){this.constructor=a}e(a,n),a.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}}(),Ke=function(){return(Ke=Object.assign||function(e){for(var a,n=1,t=arguments.length;n<t;n++)for(var i in a=arguments[n])Object.prototype.hasOwnProperty.call(a,i)&&(e[i]=a[i]);return e}).apply(this,arguments)};function Ze(e){"string"==typeof e&&(e=[e]);try{return Intl.NumberFormat.supportedLocalesOf(e,{localeMatcher:"best fit"})[0]}catch(e){return ea.defaultLocale}}function Ye(e,a){for(var n="",t=0,i=e;t<i.length;t++){var o=i[t];if("string"!=typeof o){var r=o.id;if(!a||!(r in a))throw new Qe("A value must be provided for: "+r,r);var s=a[r];Je(o)?n+=Ye(o.getOption(s),a):n+=o.format(s)}else n+=o}return n}function Xe(e,a){return a?Object.keys(e).reduce((function(n,t){var i,o;return n[t]=(i=e[t],(o=a[t])?Ke({},i||{},o||{},Object.keys(i).reduce((function(e,a){return e[a]=Ke({},i[a],o[a]||{}),e}),{})):i),n}),Ke({},e)):e}var Qe=function(e){function a(a,n){var t=e.call(this,a)||this;return t.variableId=n,t}return qe(a,e),a}(Error);var ea=function(){function e(a,n,t,i){var o=this;if(void 0===n&&(n=e.defaultLocale),this.format=function(e){try{return Ye(o.pattern,e)}catch(e){throw e.variableId?new Error("The intl string context variable '"+e.variableId+"' was not provided to the string '"+o.message+"'"):e}},"string"==typeof a){if(!e.__parse)throw new TypeError("IntlMessageFormat.__parse must be set to process `message` of type `string`");this.ast=e.__parse(a)}else this.ast=a;if(this.message=a,!this.ast||"messageFormatPattern"!==this.ast.type)throw new TypeError("A message must be provided as a String or AST.");var r=Xe(e.formats,t);this.locale=Ze(n||[]);var s=i&&i.formatters||{getNumberFormat:function(){for(var e,a=[],n=0;n<arguments.length;n++)a[n]=arguments[n];return new((e=Intl.NumberFormat).bind.apply(e,[void 0].concat(a)))},getDateTimeFormat:function(){for(var e,a=[],n=0;n<arguments.length;n++)a[n]=arguments[n];return new((e=Intl.DateTimeFormat).bind.apply(e,[void 0].concat(a)))},getPluralRules:function(){for(var e,a=[],n=0;n<arguments.length;n++)a[n]=arguments[n];return new((e=Intl.PluralRules).bind.apply(e,[void 0].concat(a)))}};this.pattern=new Oe(n,r,s).compile(this.ast)}return e.prototype.resolvedOptions=function(){return{locale:this.locale}},e.prototype.getAst=function(){return this.ast},e.defaultLocale="en",e.__parse=void 0,e.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"}}},e}();ea.__parse=Fe.parse,
|
|
33
|
+
const de=le.RATINGS;class me{static prepareReportResult(e){const a=JSON.parse(JSON.stringify(e));!function(e){e.configSettings.locale||(e.configSettings.locale="en"),e.configSettings.formFactor||(e.configSettings.formFactor=e.configSettings.emulatedFormFactor),e.finalDisplayedUrl=le.getFinalDisplayedUrl(e),e.mainDocumentUrl=le.getMainDocumentUrl(e);for(const a of Object.values(e.audits))if("not_applicable"!==a.scoreDisplayMode&&"not-applicable"!==a.scoreDisplayMode||(a.scoreDisplayMode="notApplicable"),a.details){if(void 0!==a.details.type&&"diagnostic"!==a.details.type||(a.details.type="debugdata"),"filmstrip"===a.details.type)for(const e of a.details.items)e.data.startsWith(ce)||(e.data=ce+e.data);if("table"===a.details.type)for(const e of a.details.headings){const{itemType:a,text:n}=e;void 0!==a&&(e.valueType=a,delete e.itemType),void 0!==n&&(e.label=n,delete e.text);const t=e.subItemsHeading?.itemType;e.subItemsHeading&&void 0!==t&&(e.subItemsHeading.valueType=t,delete e.subItemsHeading.itemType)}if("third-party-summary"===a.id&&("opportunity"===a.details.type||"table"===a.details.type)){const{headings:e,items:n}=a.details;if("link"===e[0].valueType){e[0].valueType="text";for(const e of n)"object"==typeof e.entity&&"link"===e.entity.type&&(e.entity=e.entity.text);a.details.isEntityGrouped=!0}}}const[a]=e.lighthouseVersion.split(".").map(Number),n=e.categories.performance;if(a<9&&n){e.categoryGroups||(e.categoryGroups={}),e.categoryGroups.hidden={title:""};for(const e of n.auditRefs)e.group?["load-opportunities","diagnostics"].includes(e.group)&&delete e.group:e.group="hidden"}if(e.environment||(e.environment={benchmarkIndex:0,networkUserAgent:e.userAgent,hostUserAgent:e.userAgent}),e.configSettings.screenEmulation||(e.configSettings.screenEmulation={width:-1,height:-1,deviceScaleFactor:-1,mobile:/mobile/i.test(e.environment.hostUserAgent),disabled:!1}),e.i18n||(e.i18n={}),e.audits["full-page-screenshot"]){const a=e.audits["full-page-screenshot"].details;e.fullPageScreenshot=a?{screenshot:a.screenshot,nodes:a.nodes}:null,delete e.audits["full-page-screenshot"]}}(a);for(const e of Object.values(a.audits))e.details&&("opportunity"!==e.details.type&&"table"!==e.details.type||!e.details.isEntityGrouped&&a.entities&&me.classifyEntities(a.entities,e.details));if("object"!=typeof a.categories)throw new Error("No categories provided.");const n=new Map;for(const e of Object.values(a.categories))e.auditRefs.forEach((e=>{e.relevantAudits&&e.relevantAudits.forEach((a=>{const t=n.get(a)||[];t.push(e),n.set(a,t)}))})),e.auditRefs.forEach((e=>{const t=a.audits[e.id];e.result=t,n.has(e.id)&&(e.relevantMetrics=n.get(e.id)),a.stackPacks&&a.stackPacks.forEach((a=>{a.descriptions[e.id]&&(e.stackPacks=e.stackPacks||[],e.stackPacks.push({title:a.title,iconDataURL:a.iconDataURL,description:a.descriptions[e.id]}))}))}));return a}static getUrlLocatorFn(e){const a=e.find((e=>"url"===e.valueType))?.key;if(a&&"string"==typeof a)return e=>{const n=e[a];if("string"==typeof n)return n};const n=e.find((e=>"source-location"===e.valueType))?.key;return n?e=>{const a=e[n];if("object"==typeof a&&"source-location"===a.type)return a.url}:void 0}static classifyEntities(e,a){const{items:n,headings:t}=a;if(!n.length||n.some((e=>e.entity)))return;const i=me.getUrlLocatorFn(t);if(i)for(const a of n){const n=i(a);if(!n)continue;let t="";try{t=le.parseURL(n).origin}catch{}if(!t)continue;const o=e.find((e=>e.origins.includes(t)));o&&(a.entity=o.name)}}static getTableItemSortComparator(e){return(a,n)=>{for(const t of e){const e=a[t],i=n[t];if(typeof e==typeof i&&["number","string"].includes(typeof e)||console.warn(`Warning: Attempting to sort unsupported value type: ${t}.`),"number"==typeof e&&"number"==typeof i&&e!==i)return i-e;if("string"==typeof e&&"string"==typeof i&&e!==i)return e.localeCompare(i)}return 0}}static getEmulationDescriptions(e){let a,n,t;const i=e.throttling,o=ue.i18n,r=ue.strings;switch(e.throttlingMethod){case"provided":t=n=a=r.throttlingProvided;break;case"devtools":{const{cpuSlowdownMultiplier:e,requestLatencyMs:s}=i;a=`${o.formatNumber(e)}x slowdown (DevTools)`,n=`${o.formatMilliseconds(s)} HTTP RTT, ${o.formatKbps(i.downloadThroughputKbps)} down, ${o.formatKbps(i.uploadThroughputKbps)} up (DevTools)`;t=(()=>562.5===s&&i.downloadThroughputKbps===1638.4*.9&&675===i.uploadThroughputKbps)()?r.runtimeSlow4g:r.runtimeCustom;break}case"simulate":{const{cpuSlowdownMultiplier:e,rttMs:s,throughputKbps:l}=i;a=`${o.formatNumber(e)}x slowdown (Simulated)`,n=`${o.formatMilliseconds(s)} TCP RTT, ${o.formatKbps(l)} throughput (Simulated)`;t=(()=>150===s&&1638.4===l)()?r.runtimeSlow4g:r.runtimeCustom;break}default:t=a=n=r.runtimeUnknown}const s="devtools"!==e.channel&&e.screenEmulation.disabled,l="devtools"===e.channel?"mobile"===e.formFactor:e.screenEmulation.mobile;let p=r.runtimeMobileEmulation;s?p=r.runtimeNoEmulation:l||(p=r.runtimeDesktopEmulation);return{deviceEmulation:p,screenEmulation:s?void 0:`${e.screenEmulation.width}x${e.screenEmulation.height}, DPR ${e.screenEmulation.deviceScaleFactor}`,cpuThrottling:a,networkThrottling:n,summary:t}}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)>=de.PASS.minScore}}static calculateRating(e,a){if("manual"===a||"notApplicable"===a)return de.PASS.label;if("error"===a)return de.ERROR.label;if(null===e)return de.FAIL.label;let n=de.FAIL.label;return e>=de.PASS.minScore?n=de.PASS.label:e>=de.AVERAGE.minScore&&(n=de.AVERAGE.label),n}static calculateCategoryFraction(e){let a=0,n=0,t=0,i=0;for(const o of e.auditRefs){const e=me.showAsPassed(o.result);"hidden"!==o.group&&"manual"!==o.result.scoreDisplayMode&&"notApplicable"!==o.result.scoreDisplayMode&&("informative"!==o.result.scoreDisplayMode?(++a,i+=o.weight,e&&n++):e||++t)}return{numPassed:n,numPassableAudits:a,numInformative:t,totalWeight:i}}static isPluginCategory(e){return e.startsWith("lighthouse-plugin-")}static shouldDisplayAsFraction(e){return"timespan"===e||"snapshot"===e}}const he={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",viewOriginalTraceLabel:"View Original 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",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"},ge=()=>D("svg",{width:"14",viewBox:"0 0 18 16",fill:"none",role:"img",children:D("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"})}),ve=()=>D("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",role:"img","aria-label":"Icon representing a navigation report",children:D("circle",{cx:"8",cy:"8",r:"7",fill:"none",stroke:"currentColor","stroke-width":"2"})}),fe=()=>D("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",role:"img","aria-label":"Icon representing a timespan report",children:[D("circle",{cx:"8",cy:"8",r:"7",fill:"none",stroke:"currentColor","stroke-width":"2"}),D("path",{d:"m 8,4 v 4 l 4,1.9999998",stroke:"currentColor","stroke-width":"1.5"})]}),be=()=>D("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:D("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"})}),ye=()=>D("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:[D("path",{d:"M0 0h24v24H0V0z",fill:"none"}),D("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"})]}),_e=()=>D("svg",{width:"15",height:"12",viewBox:"0 0 15 12",fill:"none",role:"img",children:D("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"})}),Ce=()=>D("svg",{width:"16",height:"11",viewBox:"0 0 16 11",fill:"none",role:"img",children:D("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"})}),ke=()=>D("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",role:"img",children:D("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"})}),we=()=>D("svg",{viewBox:"0 0 18 12",width:"18",height:"12",role:"img",children:[D("rect",{width:"18",height:"2",fill:"currentColor"}),D("rect",{y:"5",width:"18",height:"2",fill:"currentColor"}),D("rect",{y:"10",width:"18",height:"2",fill:"currentColor"})]}),Se=()=>D("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:D("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"})}),Ae=T(void 0),Pe=T({});function Ue(e){return new URLSearchParams(location.hash.replace("#","?")).get(e)}function xe(...e){const a=[];for(const n of e){if(!n)continue;if("string"==typeof n){a.push(n);continue}const e=Object.entries(n).filter((([e,a])=>a)).map((([e])=>e));a.push(...e)}return a.join(" ")}function Le(e,a){switch(e){case"navigation":return a.navigationDescription;case"timespan":return a.timespanDescription;case"snapshot":return a.snapshotDescription}}function ze(){const e=X(Ae);if(!e)throw Error("useFlowResult must be called in the FlowResultContext");return e}function Ie(){const e=ze(),[a,n]=function(...e){const[a,n]=J(e.map(Ue));return q((()=>{function t(){const t=e.map(Ue);t.every(((e,n)=>e===a[n]))||n(t)}return window.addEventListener("hashchange",t),()=>window.removeEventListener("hashchange",t)}),[a]),a}("index","anchor");return Y((()=>{if(!a)return null;const t=Number(a);if(!Number.isFinite(t))return console.warn(`Invalid hash index: ${a}`),null;const i=e.steps[t];return i?{currentLhr:i.lhr,index:t,anchor:n}:(console.warn(`No flow step at index ${t}`),null)}),[a,e,n])}function Ne(e,a){const n=Z(null);return K((()=>{if(!n.current)return;const a=e();return n.current.append(a),()=>{n.current?.contains(a)&&n.current.removeChild(a)}}),a),n}const Te=()=>D("div",{className:"Separator",role:"separator"}),Re=({mode:e})=>D(h,{children:["navigation"===e&&D(ve,{}),"timespan"===e&&D(fe,{}),"snapshot"===e&&D(be,{})]}),De=({mode:e})=>D("div",{className:"FlowSegment",children:[D("div",{className:"FlowSegment__top-line"}),e&&D(Re,{mode:e}),D("div",{className:"FlowSegment__bottom-line"})]}),Ee=({frames:e,width:a,height:n})=>{const[t,i]=J(0),o=t%e.length;return q((()=>{const a=setInterval((()=>i((a=>(a+1)%e.length))),500);return()=>clearInterval(a)}),[e.length]),D("img",{className:"FlowStepThumbnail","data-testid":"FlowStepAnimatedThumbnail",src:e[o].data,style:{width:a,height:n},alt:"Animated screenshots of a page tested by Lighthouse"})},je=({lhr:e,width:a,height:n})=>{const t=function(e){const a=e.audits["screenshot-thumbnails"];if(!a)return;return a.details&&"filmstrip"===a.details.type&&a.details.items||void 0}(e),i=function(e){const{width:a,height:n}=e.configSettings.screenEmulation;return{width:a,height:n}}(e);if(a&&void 0===n?n=i.height*a/i.width:n&&void 0===a&&(a=i.width*n/i.height),!a||!n)return console.warn(new Error("FlowStepThumbnail requested without any dimensions").stack),D(h,{});let o;if(t?.length){if(o=t[t.length-1].data,"timespan"===e.gatherMode)return D(Ee,{frames:t,width:a,height:n})}else o=le.getFullPageScreenshot(e)?.screenshot.data;return D(h,{children:o&&D("img",{className:"FlowStepThumbnail",src:o,style:{width:a,height:n},alt:"Screenshot of a page tested by Lighthouse"})})};var Me,Fe=function(){function e(a,n,t,i){this.message=a,this.expected=n,this.found=t,this.location=i,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,e)}return function(e,a){function n(){this.constructor=e}n.prototype=a.prototype,e.prototype=new n}(e,Error),e.buildMessage=function(e,a){var n={literal:function(e){return'"'+i(e.text)+'"'},class:function(e){var a,n="";for(a=0;a<e.parts.length;a++)n+=e.parts[a]instanceof Array?o(e.parts[a][0])+"-"+o(e.parts[a][1]):o(e.parts[a]);return"["+(e.inverted?"^":"")+n+"]"},any:function(e){return"any character"},end:function(e){return"end of input"},other:function(e){return e.description}};function t(e){return e.charCodeAt(0).toString(16).toUpperCase()}function i(e){return e.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(e){return"\\x0"+t(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+t(e)}))}function o(e){return e.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(e){return"\\x0"+t(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+t(e)}))}return"Expected "+function(e){var a,t,i,o=new Array(e.length);for(a=0;a<e.length;a++)o[a]=(i=e[a],n[i.type](i));if(o.sort(),o.length>0){for(a=1,t=1;a<o.length;a++)o[a-1]!==o[a]&&(o[t]=o[a],t++);o.length=t}switch(o.length){case 1:return o[0];case 2:return o[0]+" or "+o[1];default:return o.slice(0,-1).join(", ")+", or "+o[o.length-1]}}(e)+" but "+function(e){return e?'"'+i(e)+'"':"end of input"}(a)+" found."},{SyntaxError:e,parse:function(a,n){n=void 0!==n?n:{};var t,i={},o={start:pe},r=pe,s=function(e){return e.join("")},l=te("{",!1),p=",",u=te(",",!1),c=te("}",!1),d="number",m=te("number",!1),h="date",g=te("date",!1),v="time",f=te("time",!1),b="plural",y=te("plural",!1),_="selectordinal",C=te("selectordinal",!1),k="select",w=te("select",!1),S=te("=",!1),A="offset:",P=te("offset:",!1),U=oe("whitespace"),x=/^[ \t\n\r]/,L=ie([" ","\t","\n","\r"],!1,!1),z=oe("optionalWhitespace"),I=/^[0-9]/,N=ie([["0","9"]],!1,!1),T=/^[0-9a-f]/i,R=ie([["0","9"],["a","f"]],!1,!0),D=te("0",!1),E=/^[1-9]/,j=ie([["1","9"]],!1,!1),M="'",F=te("'",!1),B=/^[ \t\n\r,.+={}#]/,O=ie([" ","\t","\n","\r",",",".","+","=","{","}","#"],!1,!1),H={type:"any"},W=/^[^{}\\\0-\x1F\x7F \t\n\r]/,G=ie(["{","}","\\",["\0",""],""," ","\t","\n","\r"],!0,!1),V=te("\\\\",!1),$=te("\\#",!1),J=te("\\{",!1),q=te("\\}",!1),K=te("\\u",!1),Z=0,Y=0,X=[{line:1,column:1}],Q=0,ee=[],ae=0;if("startRule"in n){if(!(n.startRule in o))throw new Error("Can't start parsing from rule \""+n.startRule+'".');r=o[n.startRule]}function ne(){return se(Y,Z)}function te(e,a){return{type:"literal",text:e,ignoreCase:a}}function ie(e,a,n){return{type:"class",parts:e,inverted:a,ignoreCase:n}}function oe(e){return{type:"other",description:e}}function re(e){var n,t=X[e];if(t)return t;for(n=e-1;!X[n];)n--;for(t={line:(t=X[n]).line,column:t.column};n<e;)10===a.charCodeAt(n)?(t.line++,t.column=1):t.column++,n++;return X[e]=t,t}function se(e,a){var n=re(e),t=re(a);return{start:{offset:e,line:n.line,column:n.column},end:{offset:a,line:t.line,column:t.column}}}function le(e){Z<Q||(Z>Q&&(Q=Z,ee=[]),ee.push(e))}function pe(){return ue()}function ue(){var e,a,n;for(e=Z,a=[],n=ce();n!==i;)a.push(n),n=ce();return a!==i&&(Y=e,a={type:"messageFormatPattern",elements:a,location:ne()}),e=a}function ce(){var e;return(e=function(){var e,n;e=Z,(n=function(){var e,n,t,o,r,s;e=Z,n=[],t=Z,(o=ge())!==i&&(r=ke())!==i&&(s=ge())!==i?t=o=[o,r,s]:(Z=t,t=i);if(t!==i)for(;t!==i;)n.push(t),t=Z,(o=ge())!==i&&(r=ke())!==i&&(s=ge())!==i?t=o=[o,r,s]:(Z=t,t=i);else n=i;n!==i&&(Y=e,n=n.reduce((function(e,a){return e.concat(a)}),[]).join(""));(e=n)===i&&(e=Z,e=(n=he())!==i?a.substring(e,Z):n);return e}())!==i&&(Y=e,n={type:"messageTextElement",value:n,location:ne()});return e=n}())===i&&(e=function(){var e,n,t,o,r,S,A;e=Z,123===a.charCodeAt(Z)?(n="{",Z++):(n=i,0===ae&&le(l));n!==i&&ge()!==i&&(t=function(){var e,a,n;if((e=be())===i){for(e=Z,a=[],n=ye();n!==i;)a.push(n),n=ye();a!==i&&(Y=e,a=s(a)),e=a}return e}())!==i&&ge()!==i?(o=Z,44===a.charCodeAt(Z)?(r=p,Z++):(r=i,0===ae&&le(u)),r!==i&&(S=ge())!==i&&(A=function(){var e;(e=function(){var e,n,t,o,r,s;e=Z,a.substr(Z,6)===d?(n=d,Z+=6):(n=i,0===ae&&le(m));n===i&&(a.substr(Z,4)===h?(n=h,Z+=4):(n=i,0===ae&&le(g)),n===i&&(a.substr(Z,4)===v?(n=v,Z+=4):(n=i,0===ae&&le(f))));n!==i&&ge()!==i?(t=Z,44===a.charCodeAt(Z)?(o=p,Z++):(o=i,0===ae&&le(u)),o!==i&&(r=ge())!==i&&(s=ke())!==i?t=o=[o,r,s]:(Z=t,t=i),t===i&&(t=null),t!==i?(Y=e,e=n={type:n+"Format",style:(l=t)&&l[2],location:ne()}):(Z=e,e=i)):(Z=e,e=i);var l;return e}())===i&&(e=function(){var e,n,t,o;e=Z,a.substr(Z,6)===b?(n=b,Z+=6):(n=i,0===ae&&le(y));n!==i&&ge()!==i?(44===a.charCodeAt(Z)?(t=p,Z++):(t=i,0===ae&&le(u)),t!==i&&ge()!==i&&(o=me())!==i?(Y=e,e=n={type:(r=o).type,ordinal:!1,offset:r.offset||0,options:r.options,location:ne()}):(Z=e,e=i)):(Z=e,e=i);var r;return e}())===i&&(e=function(){var e,n,t,o;e=Z,a.substr(Z,13)===_?(n=_,Z+=13):(n=i,0===ae&&le(C));n!==i&&ge()!==i?(44===a.charCodeAt(Z)?(t=p,Z++):(t=i,0===ae&&le(u)),t!==i&&ge()!==i&&(o=me())!==i?(Y=e,e=n={type:(r=o).type,ordinal:!0,offset:r.offset||0,options:r.options,location:ne()}):(Z=e,e=i)):(Z=e,e=i);var r;return e}())===i&&(e=function(){var e,n,t,o,r;e=Z,a.substr(Z,6)===k?(n=k,Z+=6):(n=i,0===ae&&le(w));if(n!==i)if(ge()!==i)if(44===a.charCodeAt(Z)?(t=p,Z++):(t=i,0===ae&&le(u)),t!==i)if(ge()!==i){if(o=[],(r=de())!==i)for(;r!==i;)o.push(r),r=de();else o=i;o!==i?(Y=e,e=n=function(e){return{type:"selectFormat",options:e,location:ne()}}(o)):(Z=e,e=i)}else Z=e,e=i;else Z=e,e=i;else Z=e,e=i;else Z=e,e=i;return e}());return e}())!==i?o=r=[r,S,A]:(Z=o,o=i),o===i&&(o=null),o!==i&&(r=ge())!==i?(125===a.charCodeAt(Z)?(S="}",Z++):(S=i,0===ae&&le(c)),S!==i?(Y=e,e=n={type:"argumentElement",id:t,format:(P=o)&&P[2],location:ne()}):(Z=e,e=i)):(Z=e,e=i)):(Z=e,e=i);var P;return e}()),e}function de(){var e,n,t,o,r;return e=Z,ge()!==i&&(n=function(){var e,n,t,o;return e=Z,n=Z,61===a.charCodeAt(Z)?(t="=",Z++):(t=i,0===ae&&le(S)),t!==i&&(o=be())!==i?n=t=[t,o]:(Z=n,n=i),(e=n!==i?a.substring(e,Z):n)===i&&(e=ke()),e}())!==i&&ge()!==i?(123===a.charCodeAt(Z)?(t="{",Z++):(t=i,0===ae&&le(l)),t!==i&&(o=ue())!==i?(125===a.charCodeAt(Z)?(r="}",Z++):(r=i,0===ae&&le(c)),r!==i?(Y=e,e={type:"optionalFormatPattern",selector:n,value:o,location:ne()}):(Z=e,e=i)):(Z=e,e=i)):(Z=e,e=i),e}function me(){var e,n,t,o;if(e=Z,(n=function(){var e,n,t;return e=Z,a.substr(Z,7)===A?(n=A,Z+=7):(n=i,0===ae&&le(P)),n!==i&&ge()!==i&&(t=be())!==i?(Y=e,e=n=t):(Z=e,e=i),e}())===i&&(n=null),n!==i)if(ge()!==i){if(t=[],(o=de())!==i)for(;o!==i;)t.push(o),o=de();else t=i;t!==i?(Y=e,e=n=function(e,a){return{type:"pluralFormat",offset:e,options:a,location:ne()}}(n,t)):(Z=e,e=i)}else Z=e,e=i;else Z=e,e=i;return e}function he(){var e,n;if(ae++,e=[],x.test(a.charAt(Z))?(n=a.charAt(Z),Z++):(n=i,0===ae&&le(L)),n!==i)for(;n!==i;)e.push(n),x.test(a.charAt(Z))?(n=a.charAt(Z),Z++):(n=i,0===ae&&le(L));else e=i;return ae--,e===i&&(n=i,0===ae&&le(U)),e}function ge(){var e,n,t;for(ae++,e=Z,n=[],t=he();t!==i;)n.push(t),t=he();return e=n!==i?a.substring(e,Z):n,ae--,e===i&&(n=i,0===ae&&le(z)),e}function ve(){var e;return I.test(a.charAt(Z))?(e=a.charAt(Z),Z++):(e=i,0===ae&&le(N)),e}function fe(){var e;return T.test(a.charAt(Z))?(e=a.charAt(Z),Z++):(e=i,0===ae&&le(R)),e}function be(){var e,n,t,o,r,s;if(e=Z,48===a.charCodeAt(Z)?(n="0",Z++):(n=i,0===ae&&le(D)),n===i){if(n=Z,t=Z,E.test(a.charAt(Z))?(o=a.charAt(Z),Z++):(o=i,0===ae&&le(j)),o!==i){for(r=[],s=ve();s!==i;)r.push(s),s=ve();r!==i?t=o=[o,r]:(Z=t,t=i)}else Z=t,t=i;n=t!==i?a.substring(n,Z):t}return n!==i&&(Y=e,n=parseInt(n,10)),e=n}function ye(){var e,n,t;return e=Z,n=Z,ae++,39===a.charCodeAt(Z)?(t=M,Z++):(t=i,0===ae&&le(F)),t===i&&(B.test(a.charAt(Z))?(t=a.charAt(Z),Z++):(t=i,0===ae&&le(O))),ae--,t===i?n=void 0:(Z=n,n=i),n!==i?(a.length>Z?(t=a.charAt(Z),Z++):(t=i,0===ae&&le(H)),t!==i?(Y=e,e=n=t):(Z=e,e=i)):(Z=e,e=i),e===i&&(e=Z,39===a.charCodeAt(Z)?(n=M,Z++):(n=i,0===ae&&le(F)),n!==i&&(t=function(){var e;B.test(a.charAt(Z))?(e=a.charAt(Z),Z++):(e=i,0===ae&&le(O));e===i&&(e=_e());return e}())!==i?(Y=e,e=n=t):(Z=e,e=i)),e}function _e(){var e;return 39===a.charCodeAt(Z)?(e=M,Z++):(e=i,0===ae&&le(F)),e}function Ce(){var e,n,t,o,r,s,l,p,u;return e=Z,39===a.charCodeAt(Z)?(n=M,Z++):(n=i,0===ae&&le(F)),n!==i&&(t=_e())!==i?(Y=e,e=n=t):(Z=e,e=i),e===i&&(W.test(a.charAt(Z))?(e=a.charAt(Z),Z++):(e=i,0===ae&&le(G)),e===i&&(e=Z,"\\\\"===a.substr(Z,2)?(n="\\\\",Z+=2):(n=i,0===ae&&le(V)),n!==i&&(Y=e,n="\\"),(e=n)===i&&(e=Z,"\\#"===a.substr(Z,2)?(n="\\#",Z+=2):(n=i,0===ae&&le($)),n!==i&&(Y=e,n="\\#"),(e=n)===i&&(e=Z,"\\{"===a.substr(Z,2)?(n="\\{",Z+=2):(n=i,0===ae&&le(J)),n!==i&&(Y=e,n="{"),(e=n)===i&&(e=Z,"\\}"===a.substr(Z,2)?(n="\\}",Z+=2):(n=i,0===ae&&le(q)),n!==i&&(Y=e,n="}"),(e=n)===i&&(e=Z,"\\u"===a.substr(Z,2)?(n="\\u",Z+=2):(n=i,0===ae&&le(K)),n!==i?(t=Z,o=Z,(r=fe())!==i&&(s=fe())!==i&&(l=fe())!==i&&(p=fe())!==i?o=r=[r,s,l,p]:(Z=o,o=i),(t=o!==i?a.substring(t,Z):o)!==i?(Y=e,u=t,e=n=String.fromCharCode(parseInt(u,16))):(Z=e,e=i)):(Z=e,e=i))))))),e}function ke(){var e,a,n;if(e=Z,a=[],(n=Ce())!==i)for(;n!==i;)a.push(n),n=Ce();else a=i;return a!==i&&(Y=e,a=s(a)),e=a}if((t=r())!==i&&Z===a.length)return t;throw t!==i&&Z<a.length&&le({type:"end"}),function(a,n,t){return new e(e.buildMessage(a,n),a,n,t)}(ee,Q<a.length?a.charAt(Q):null,Q<a.length?se(Q,Q+1):se(Q,Q))}}}(),Be=(Me=function(e,a){return(Me=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,a){e.__proto__=a}||function(e,a){for(var n in a)a.hasOwnProperty(n)&&(e[n]=a[n])})(e,a)},function(e,a){function n(){this.constructor=e}Me(e,a),e.prototype=null===a?Object.create(a):(n.prototype=a.prototype,new n)}),Oe=function(){function e(e,a,n){this.locales=[],this.formats={number:{},date:{},time:{}},this.pluralNumberFormat=null,this.currentPlural=null,this.pluralStack=[],this.locales=e,this.formats=a,this.formatters=n}return e.prototype.compile=function(e){return this.pluralStack=[],this.currentPlural=null,this.pluralNumberFormat=null,this.compileMessage(e)},e.prototype.compileMessage=function(e){var a=this;if(!e||"messageFormatPattern"!==e.type)throw new Error('Message AST is not of type: "messageFormatPattern"');var n=e.elements,t=n.filter((function(e){return"messageTextElement"===e.type||"argumentElement"===e.type})).map((function(e){return"messageTextElement"===e.type?a.compileMessageText(e):a.compileArgument(e)}));if(t.length!==n.length)throw new Error("Message element does not have a valid type");return t},e.prototype.compileMessageText=function(e){return this.currentPlural&&/(^|[^\\])#/g.test(e.value)?(this.pluralNumberFormat||(this.pluralNumberFormat=new Intl.NumberFormat(this.locales)),new Ve(this.currentPlural.id,this.currentPlural.format.offset,this.pluralNumberFormat,e.value)):e.value.replace(/\\#/g,"#")},e.prototype.compileArgument=function(e){var a=e.format,n=e.id,t=this.formatters;if(!a)return new We(n);var i=this.formats,o=this.locales;switch(a.type){case"numberFormat":return{id:n,format:t.getNumberFormat(o,i.number[a.style]).format};case"dateFormat":return{id:n,format:t.getDateTimeFormat(o,i.date[a.style]).format};case"timeFormat":return{id:n,format:t.getDateTimeFormat(o,i.time[a.style]).format};case"pluralFormat":return new Ge(n,a.offset,this.compileOptions(e),t.getPluralRules(o,{type:a.ordinal?"ordinal":"cardinal"}));case"selectFormat":return new $e(n,this.compileOptions(e));default:throw new Error("Message element does not have a valid format type")}},e.prototype.compileOptions=function(e){var a=this,n=e.format,t=n.options;this.pluralStack.push(this.currentPlural),this.currentPlural="pluralFormat"===n.type?e:null;var i=t.reduce((function(e,n){return e[n.selector]=a.compileMessage(n.value),e}),{});return this.currentPlural=this.pluralStack.pop(),i},e}(),He=function(e){this.id=e},We=function(e){function a(){return null!==e&&e.apply(this,arguments)||this}return Be(a,e),a.prototype.format=function(e){return e||"number"==typeof e?"string"==typeof e?e:String(e):""},a}(He),Ge=function(){function e(e,a,n,t){this.id=e,this.offset=a,this.options=n,this.pluralRules=t}return e.prototype.getOption=function(e){var a=this.options;return a["="+e]||a[this.pluralRules.select(e-this.offset)]||a.other},e}(),Ve=function(e){function a(a,n,t,i){var o=e.call(this,a)||this;return o.offset=n,o.numberFormat=t,o.string=i,o}return Be(a,e),a.prototype.format=function(e){var a=this.numberFormat.format(e-this.offset);return this.string.replace(/(^|[^\\])#/g,"$1"+a).replace(/\\#/g,"#")},a}(He),$e=function(){function e(e,a){this.id=e,this.options=a}return e.prototype.getOption=function(e){var a=this.options;return a[e]||a.other},e}();function Je(e){return!!e.options}var qe=function(){var e=function(a,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,a){e.__proto__=a}||function(e,a){for(var n in a)a.hasOwnProperty(n)&&(e[n]=a[n])})(a,n)};return function(a,n){function t(){this.constructor=a}e(a,n),a.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}}(),Ke=function(){return(Ke=Object.assign||function(e){for(var a,n=1,t=arguments.length;n<t;n++)for(var i in a=arguments[n])Object.prototype.hasOwnProperty.call(a,i)&&(e[i]=a[i]);return e}).apply(this,arguments)};function Ze(e){"string"==typeof e&&(e=[e]);try{return Intl.NumberFormat.supportedLocalesOf(e,{localeMatcher:"best fit"})[0]}catch(e){return ea.defaultLocale}}function Ye(e,a){for(var n="",t=0,i=e;t<i.length;t++){var o=i[t];if("string"!=typeof o){var r=o.id;if(!a||!(r in a))throw new Qe("A value must be provided for: "+r,r);var s=a[r];Je(o)?n+=Ye(o.getOption(s),a):n+=o.format(s)}else n+=o}return n}function Xe(e,a){return a?Object.keys(e).reduce((function(n,t){var i,o;return n[t]=(i=e[t],(o=a[t])?Ke({},i||{},o||{},Object.keys(i).reduce((function(e,a){return e[a]=Ke({},i[a],o[a]||{}),e}),{})):i),n}),Ke({},e)):e}var Qe=function(e){function a(a,n){var t=e.call(this,a)||this;return t.variableId=n,t}return qe(a,e),a}(Error);var ea=function(){function e(a,n,t,i){var o=this;if(void 0===n&&(n=e.defaultLocale),this.format=function(e){try{return Ye(o.pattern,e)}catch(e){throw e.variableId?new Error("The intl string context variable '"+e.variableId+"' was not provided to the string '"+o.message+"'"):e}},"string"==typeof a){if(!e.__parse)throw new TypeError("IntlMessageFormat.__parse must be set to process `message` of type `string`");this.ast=e.__parse(a)}else this.ast=a;if(this.message=a,!this.ast||"messageFormatPattern"!==this.ast.type)throw new TypeError("A message must be provided as a String or AST.");var r=Xe(e.formats,t);this.locale=Ze(n||[]);var s=i&&i.formatters||{getNumberFormat:function(){for(var e,a=[],n=0;n<arguments.length;n++)a[n]=arguments[n];return new((e=Intl.NumberFormat).bind.apply(e,[void 0].concat(a)))},getDateTimeFormat:function(){for(var e,a=[],n=0;n<arguments.length;n++)a[n]=arguments[n];return new((e=Intl.DateTimeFormat).bind.apply(e,[void 0].concat(a)))},getPluralRules:function(){for(var e,a=[],n=0;n<arguments.length;n++)a[n]=arguments[n];return new((e=Intl.PluralRules).bind.apply(e,[void 0].concat(a)))}};this.pattern=new Oe(n,r,s).compile(this.ast)}return e.prototype.resolvedOptions=function(){return{locale:this.locale}},e.prototype.getAst=function(){return this.ast},e.defaultLocale="en",e.__parse=void 0,e.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"}}},e}();ea.__parse=Fe.parse,
|
|
34
34
|
/**
|
|
35
35
|
* @license Copyright 2021 The Lighthouse Authors. All Rights Reserved.
|
|
36
36
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -64,7 +64,7 @@ const ia=1024,oa=1048576;class ra{constructor(e){"en-XA"===e&&(e="de"),this._loc
|
|
|
64
64
|
* See the License for the specific language governing permissions and
|
|
65
65
|
* limitations under the License.
|
|
66
66
|
*/
|
|
67
|
-
class ka{constructor(e,a){this._document=e,this._lighthouseChannel="unknown",this._componentCache=new Map,this.rootEl=a}createElement(e,a){const n=this._document.createElement(e);if(a)for(const e of a.split(/\s+/))e&&n.classList.add(e);return n}createElementNS(e,a,n){const t=this._document.createElementNS(e,a);if(n)for(const e of n.split(/\s+/))e&&t.classList.add(e);return t}createFragment(){return this._document.createDocumentFragment()}createTextNode(e){return this._document.createTextNode(e)}createChildOf(e,a,n){const t=this.createElement(a,n);return e.append(t),t}createComponent(e){let a=this._componentCache.get(e);if(a){const e=a.cloneNode(!0);return this.findAll("style",e).forEach((e=>e.remove())),e}a=function(e,a){switch(a){case"3pFilter":return function(e){const a=e.createFragment(),n=e.createElement("style");n.append("\n .lh-3p-filter {\n color: var(--color-gray-600);\n float: right;\n padding: 6px var(--stackpack-padding-horizontal);\n }\n .lh-3p-filter-label, .lh-3p-filter-input {\n vertical-align: middle;\n user-select: none;\n }\n .lh-3p-filter-input:disabled + .lh-3p-ui-string {\n text-decoration: line-through;\n }\n "),a.append(n);const t=e.createElement("div","lh-3p-filter"),i=e.createElement("label","lh-3p-filter-label"),o=e.createElement("input","lh-3p-filter-input");o.setAttribute("type","checkbox"),o.setAttribute("checked","");const r=e.createElement("span","lh-3p-ui-string");r.append("Show 3rd party resources");const s=e.createElement("span","lh-3p-filter-count");return i.append(" ",o," ",r," (",s,") "),t.append(" ",i," "),a.append(t),a}(e);case"audit":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-audit"),t=e.createElement("details","lh-expandable-details"),i=e.createElement("summary"),o=e.createElement("div","lh-audit__header lh-expandable-details__summary"),r=e.createElement("span","lh-audit__score-icon"),s=e.createElement("span","lh-audit__title-and-text"),l=e.createElement("span","lh-audit__title"),p=e.createElement("span","lh-audit__display-text");s.append(" ",l," ",p," ");const u=e.createElement("div","lh-chevron-container");o.append(" ",r," ",s," ",u," "),i.append(" ",o," ");const c=e.createElement("div","lh-audit__description"),d=e.createElement("div","lh-audit__stackpacks");return t.append(" ",i," ",c," ",d," "),n.append(" ",t," "),a.append(n),a}(e);case"categoryHeader":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-category-header"),t=e.createElement("div","lh-score__gauge");t.setAttribute("role","heading"),t.setAttribute("aria-level","2");const i=e.createElement("div","lh-category-header__description");return n.append(" ",t," ",i," "),a.append(n),a}(e);case"chevron":return function(e){const a=e.createFragment(),n=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-chevron");n.setAttribute("viewBox","0 0 100 100");const t=e.createElementNS("http://www.w3.org/2000/svg","g","lh-chevron__lines"),i=e.createElementNS("http://www.w3.org/2000/svg","path","lh-chevron__line lh-chevron__line-left");i.setAttribute("d","M10 50h40");const o=e.createElementNS("http://www.w3.org/2000/svg","path","lh-chevron__line lh-chevron__line-right");return o.setAttribute("d","M90 50H50"),t.append(" ",i," ",o," "),n.append(" ",t," "),a.append(n),a}(e);case"clump":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-audit-group"),t=e.createElement("details","lh-clump"),i=e.createElement("summary"),o=e.createElement("div","lh-audit-group__summary"),r=e.createElement("div","lh-audit-group__header"),s=e.createElement("span","lh-audit-group__title"),l=e.createElement("span","lh-audit-group__itemcount");r.append(" ",s," ",l," "," "," ");const p=e.createElement("div","lh-clump-toggle"),u=e.createElement("span","lh-clump-toggletext--show"),c=e.createElement("span","lh-clump-toggletext--hide");return p.append(" ",u," ",c," "),o.append(" ",r," ",p," "),i.append(" ",o," "),t.append(" ",i," "),n.append(" "," ",t," "),a.append(n),a}(e);case"crc":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-crc-container"),t=e.createElement("style");t.append('\n .lh-crc .lh-tree-marker {\n width: 12px;\n height: 26px;\n display: block;\n float: left;\n background-position: top left;\n }\n .lh-crc .lh-horiz-down {\n background: url(\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><g fill="%23D8D8D8" fill-rule="evenodd"><path d="M16 12v2H-2v-2z"/><path d="M9 12v14H7V12z"/></g></svg>\');\n }\n .lh-crc .lh-right {\n background: url(\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M16 12v2H0v-2z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>\');\n }\n .lh-crc .lh-up-right {\n background: url(\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M7 0h2v14H7zm2 12h7v2H9z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>\');\n }\n .lh-crc .lh-vert-right {\n background: url(\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M7 0h2v27H7zm2 12h7v2H9z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>\');\n }\n .lh-crc .lh-vert {\n background: url(\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M7 0h2v26H7z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>\');\n }\n .lh-crc .lh-crc-tree {\n font-size: 14px;\n width: 100%;\n overflow-x: auto;\n }\n .lh-crc .lh-crc-node {\n height: 26px;\n line-height: 26px;\n white-space: nowrap;\n }\n .lh-crc .lh-crc-node__tree-value {\n margin-left: 10px;\n }\n .lh-crc .lh-crc-node__tree-value div {\n display: inline;\n }\n .lh-crc .lh-crc-node__chain-duration {\n font-weight: 700;\n }\n .lh-crc .lh-crc-initial-nav {\n color: #595959;\n font-style: italic;\n }\n .lh-crc__summary-value {\n margin-bottom: 10px;\n }\n ');const i=e.createElement("div"),o=e.createElement("div","lh-crc__summary-value"),r=e.createElement("span","lh-crc__longest_duration_label"),s=e.createElement("b","lh-crc__longest_duration");o.append(" ",r," ",s," "),i.append(" ",o," ");const l=e.createElement("div","lh-crc"),p=e.createElement("div","lh-crc-initial-nav");return l.append(" ",p," "," "),n.append(" ",t," ",i," ",l," "),a.append(n),a}(e);case"crcChain":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-crc-node"),t=e.createElement("span","lh-crc-node__tree-marker"),i=e.createElement("span","lh-crc-node__tree-value");return n.append(" ",t," ",i," "),a.append(n),a}(e);case"elementScreenshot":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-element-screenshot"),t=e.createElement("div","lh-element-screenshot__content"),i=e.createElement("div","lh-element-screenshot__image"),o=e.createElement("div","lh-element-screenshot__mask"),r=e.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttribute("height","0"),r.setAttribute("width","0");const s=e.createElementNS("http://www.w3.org/2000/svg","defs"),l=e.createElementNS("http://www.w3.org/2000/svg","clipPath");l.setAttribute("clipPathUnits","objectBoundingBox"),s.append(" ",l," "," "),r.append(" ",s," "),o.append(" ",r," ");const p=e.createElement("div","lh-element-screenshot__element-marker");return i.append(" ",o," ",p," "),t.append(" ",i," "),n.append(" ",t," "),a.append(n),a}(e);case"footer":return function(e){const a=e.createFragment(),n=e.createElement("style");n.append("\n .lh-footer {\n padding: var(--footer-padding-vertical) calc(var(--default-padding) * 2);\n max-width: var(--report-content-max-width);\n margin: 0 auto;\n }\n .lh-footer .lh-generated {\n text-align: center;\n }\n "),a.append(n);const t=e.createElement("footer","lh-footer"),i=e.createElement("ul","lh-meta__items");i.append(" ");const o=e.createElement("div","lh-generated"),r=e.createElement("b");r.append("Lighthouse");const s=e.createElement("span","lh-footer__version"),l=e.createElement("a","lh-footer__version_issue");return l.setAttribute("href","https://github.com/GoogleChrome/Lighthouse/issues"),l.setAttribute("target","_blank"),l.setAttribute("rel","noopener"),l.append("File an issue"),o.append(" "," Generated by ",r," ",s," | ",l," "),t.append(" ",i," ",o," "),a.append(t),a}(e);case"fraction":return function(e){const a=e.createFragment(),n=e.createElement("a","lh-fraction__wrapper"),t=e.createElement("div","lh-fraction__content-wrapper"),i=e.createElement("div","lh-fraction__content"),o=e.createElement("div","lh-fraction__background");i.append(" ",o," "),t.append(" ",i," ");const r=e.createElement("div","lh-fraction__label");return n.append(" ",t," ",r," "),a.append(n),a}(e);case"gauge":return function(e){const a=e.createFragment(),n=e.createElement("a","lh-gauge__wrapper"),t=e.createElement("div","lh-gauge__svg-wrapper"),i=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-gauge");i.setAttribute("viewBox","0 0 120 120");const o=e.createElementNS("http://www.w3.org/2000/svg","circle","lh-gauge-base");o.setAttribute("r","56"),o.setAttribute("cx","60"),o.setAttribute("cy","60"),o.setAttribute("stroke-width","8");const r=e.createElementNS("http://www.w3.org/2000/svg","circle","lh-gauge-arc");r.setAttribute("r","56"),r.setAttribute("cx","60"),r.setAttribute("cy","60"),r.setAttribute("stroke-width","8"),i.append(" ",o," ",r," "),t.append(" ",i," ");const s=e.createElement("div","lh-gauge__percentage"),l=e.createElement("div","lh-gauge__label");return n.append(" "," ",t," ",s," "," ",l," "),a.append(n),a}(e);case"gaugePwa":return function(e){const a=e.createFragment(),n=e.createElement("style");n.append("\n .lh-gauge--pwa .lh-gauge--pwa__component {\n display: none;\n }\n .lh-gauge--pwa__wrapper:not(.lh-badged--all) .lh-gauge--pwa__logo > path {\n /* Gray logo unless everything is passing. */\n fill: #B0B0B0;\n }\n\n .lh-gauge--pwa__disc {\n fill: var(--color-gray-200);\n }\n\n .lh-gauge--pwa__logo--primary-color {\n fill: #304FFE;\n }\n\n .lh-gauge--pwa__logo--secondary-color {\n fill: #3D3D3D;\n }\n .lh-dark .lh-gauge--pwa__logo--secondary-color {\n fill: #D8B6B6;\n }\n\n /* No passing groups. */\n .lh-gauge--pwa__wrapper:not([class*='lh-badged--']) .lh-gauge--pwa__na-line {\n display: inline;\n }\n /* Just optimized. Same n/a line as no passing groups. */\n .lh-gauge--pwa__wrapper.lh-badged--pwa-optimized:not(.lh-badged--pwa-installable) .lh-gauge--pwa__na-line {\n display: inline;\n }\n\n /* Just installable. */\n .lh-gauge--pwa__wrapper.lh-badged--pwa-installable .lh-gauge--pwa__installable-badge {\n display: inline;\n }\n\n /* All passing groups. */\n .lh-gauge--pwa__wrapper.lh-badged--all .lh-gauge--pwa__check-circle {\n display: inline;\n }\n "),a.append(n);const t=e.createElement("a","lh-gauge__wrapper lh-gauge--pwa__wrapper"),i=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-gauge lh-gauge--pwa");i.setAttribute("viewBox","0 0 60 60");const o=e.createElementNS("http://www.w3.org/2000/svg","defs"),r=e.createElementNS("http://www.w3.org/2000/svg","linearGradient");r.setAttribute("id","lh-gauge--pwa__check-circle__gradient"),r.setAttribute("x1","50%"),r.setAttribute("y1","0%"),r.setAttribute("x2","50%"),r.setAttribute("y2","100%");const s=e.createElementNS("http://www.w3.org/2000/svg","stop");s.setAttribute("stop-color","#00C852"),s.setAttribute("offset","0%");const l=e.createElementNS("http://www.w3.org/2000/svg","stop");l.setAttribute("stop-color","#009688"),l.setAttribute("offset","100%"),r.append(" ",s," ",l," ");const p=e.createElementNS("http://www.w3.org/2000/svg","linearGradient");p.setAttribute("id","lh-gauge--pwa__installable__shadow-gradient"),p.setAttribute("x1","76.056%"),p.setAttribute("x2","24.111%"),p.setAttribute("y1","82.995%"),p.setAttribute("y2","24.735%");const u=e.createElementNS("http://www.w3.org/2000/svg","stop");u.setAttribute("stop-color","#A5D6A7"),u.setAttribute("offset","0%");const c=e.createElementNS("http://www.w3.org/2000/svg","stop");c.setAttribute("stop-color","#80CBC4"),c.setAttribute("offset","100%"),p.append(" ",u," ",c," ");const d=e.createElementNS("http://www.w3.org/2000/svg","g");d.setAttribute("id","lh-gauge--pwa__installable-badge");const m=e.createElementNS("http://www.w3.org/2000/svg","circle");m.setAttribute("fill","#FFFFFF"),m.setAttribute("cx","10"),m.setAttribute("cy","10"),m.setAttribute("r","10");const h=e.createElementNS("http://www.w3.org/2000/svg","path");h.setAttribute("fill","#009688"),h.setAttribute("d","M10 4.167A5.835 5.835 0 0 0 4.167 10 5.835 5.835 0 0 0 10 15.833 5.835 5.835 0 0 0 15.833 10 5.835 5.835 0 0 0 10 4.167zm2.917 6.416h-2.334v2.334H9.417v-2.334H7.083V9.417h2.334V7.083h1.166v2.334h2.334v1.166z"),d.append(" ",m," ",h," "),o.append(" ",r," ",p," ",d," ");const g=e.createElementNS("http://www.w3.org/2000/svg","g");g.setAttribute("stroke","none"),g.setAttribute("fill-rule","nonzero");const v=e.createElementNS("http://www.w3.org/2000/svg","circle","lh-gauge--pwa__disc");v.setAttribute("cx","30"),v.setAttribute("cy","30"),v.setAttribute("r","30");const f=e.createElementNS("http://www.w3.org/2000/svg","g","lh-gauge--pwa__logo"),b=e.createElementNS("http://www.w3.org/2000/svg","path","lh-gauge--pwa__logo--secondary-color");b.setAttribute("d","M35.66 19.39l.7-1.75h2L37.4 15 38.6 12l3.4 9h-2.51l-.58-1.61z");const y=e.createElementNS("http://www.w3.org/2000/svg","path","lh-gauge--pwa__logo--primary-color");y.setAttribute("d","M33.52 21l3.65-9h-2.42l-2.5 5.82L30.5 12h-1.86l-1.9 5.82-1.35-2.65-1.21 3.72L25.4 21h2.38l1.72-5.2 1.64 5.2z");const _=e.createElementNS("http://www.w3.org/2000/svg","path","lh-gauge--pwa__logo--secondary-color");_.setAttribute("fill-rule","nonzero"),_.setAttribute("d","M20.3 17.91h1.48c.45 0 .85-.05 1.2-.15l.39-1.18 1.07-3.3a2.64 2.64 0 0 0-.28-.37c-.55-.6-1.36-.91-2.42-.91H18v9h2.3V17.9zm1.96-3.84c.22.22.33.5.33.87 0 .36-.1.65-.29.87-.2.23-.59.35-1.15.35h-.86v-2.41h.87c.52 0 .89.1 1.1.32z"),f.append(" ",b," ",y," ",_," ");const C=e.createElementNS("http://www.w3.org/2000/svg","rect","lh-gauge--pwa__component lh-gauge--pwa__na-line");C.setAttribute("fill","#FFFFFF"),C.setAttribute("x","20"),C.setAttribute("y","32"),C.setAttribute("width","20"),C.setAttribute("height","4"),C.setAttribute("rx","2");const k=e.createElementNS("http://www.w3.org/2000/svg","g","lh-gauge--pwa__component lh-gauge--pwa__installable-badge");k.setAttribute("transform","translate(20, 29)");const w=e.createElementNS("http://www.w3.org/2000/svg","path");w.setAttribute("fill","url(#lh-gauge--pwa__installable__shadow-gradient)"),w.setAttribute("d","M33.629 19.487c-4.272 5.453-10.391 9.39-17.415 10.869L3 17.142 17.142 3 33.63 19.487z");const S=e.createElementNS("http://www.w3.org/2000/svg","use");S.setAttribute("href","#lh-gauge--pwa__installable-badge"),k.append(" ",w," ",S," ");const A=e.createElementNS("http://www.w3.org/2000/svg","g","lh-gauge--pwa__component lh-gauge--pwa__check-circle");A.setAttribute("transform","translate(18, 28)");const P=e.createElementNS("http://www.w3.org/2000/svg","circle");P.setAttribute("fill","#FFFFFF"),P.setAttribute("cx","12"),P.setAttribute("cy","12"),P.setAttribute("r","12");const U=e.createElementNS("http://www.w3.org/2000/svg","path");U.setAttribute("fill","url(#lh-gauge--pwa__check-circle__gradient)"),U.setAttribute("d","M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"),A.append(" ",P," ",U," "),g.append(" "," ",v," ",f," "," ",C," "," ",k," "," ",A," "),i.append(" ",o," ",g," ");const x=e.createElement("div","lh-gauge__label");return t.append(" ",i," ",x," "),a.append(t),a}(e);case"heading":return function(e){const a=e.createFragment(),n=e.createElement("style");n.append("\n /* CSS Fireworks. Originally by Eddie Lin\n https://codepen.io/paulirish/pen/yEVMbP\n */\n .lh-pyro {\n display: none;\n z-index: 1;\n pointer-events: none;\n }\n .lh-score100 .lh-pyro {\n display: block;\n }\n .lh-score100 .lh-lighthouse stop:first-child {\n stop-color: hsla(200, 12%, 95%, 0);\n }\n .lh-score100 .lh-lighthouse stop:last-child {\n stop-color: hsla(65, 81%, 76%, 1);\n }\n\n .lh-pyro > .lh-pyro-before, .lh-pyro > .lh-pyro-after {\n position: absolute;\n width: 5px;\n height: 5px;\n border-radius: 2.5px;\n box-shadow: 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff;\n animation: 1s bang ease-out infinite backwards, 1s gravity ease-in infinite backwards, 5s position linear infinite backwards;\n animation-delay: 1s, 1s, 1s;\n }\n\n .lh-pyro > .lh-pyro-after {\n animation-delay: 2.25s, 2.25s, 2.25s;\n animation-duration: 1.25s, 1.25s, 6.25s;\n }\n\n @keyframes bang {\n to {\n box-shadow: -70px -115.67px #47ebbc, -28px -99.67px #eb47a4, 58px -31.67px #7eeb47, 13px -141.67px #eb47c5, -19px 6.33px #7347eb, -2px -74.67px #ebd247, 24px -151.67px #eb47e0, 57px -138.67px #b4eb47, -51px -104.67px #479eeb, 62px 8.33px #ebcf47, -93px 0.33px #d547eb, -16px -118.67px #47bfeb, 53px -84.67px #47eb83, 66px -57.67px #eb47bf, -93px -65.67px #91eb47, 30px -13.67px #86eb47, -2px -59.67px #83eb47, -44px 1.33px #eb47eb, 61px -58.67px #47eb73, 5px -22.67px #47e8eb, -66px -28.67px #ebe247, 42px -123.67px #eb5547, -75px 26.33px #7beb47, 15px -52.67px #a147eb, 36px -51.67px #eb8347, -38px -12.67px #eb5547, -46px -59.67px #47eb81, 78px -114.67px #eb47ba, 15px -156.67px #eb47bf, -36px 1.33px #eb4783, -72px -86.67px #eba147, 31px -46.67px #ebe247, -68px 29.33px #47e2eb, -55px 19.33px #ebe047, -56px 27.33px #4776eb, -13px -91.67px #eb5547, -47px -138.67px #47ebc7, -18px -96.67px #eb47ac, 11px -88.67px #4783eb, -67px -28.67px #47baeb, 53px 10.33px #ba47eb, 11px 19.33px #5247eb, -5px -11.67px #eb4791, -68px -4.67px #47eba7, 95px -37.67px #eb478b, -67px -162.67px #eb5d47, -54px -120.67px #eb6847, 49px -12.67px #ebe047, 88px 8.33px #47ebda, 97px 33.33px #eb8147, 6px -71.67px #ebbc47;\n }\n }\n @keyframes gravity {\n to {\n transform: translateY(80px);\n opacity: 0;\n }\n }\n @keyframes position {\n 0%, 19.9% {\n margin-top: 4%;\n margin-left: 47%;\n }\n 20%, 39.9% {\n margin-top: 7%;\n margin-left: 30%;\n }\n 40%, 59.9% {\n margin-top: 6%;\n margin-left: 70%;\n }\n 60%, 79.9% {\n margin-top: 3%;\n margin-left: 20%;\n }\n 80%, 99.9% {\n margin-top: 3%;\n margin-left: 80%;\n }\n }\n "),a.append(n);const t=e.createElement("div","lh-header-container"),i=e.createElement("div","lh-scores-wrapper-placeholder");return t.append(" ",i," "),a.append(t),a}(e);case"metric":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-metric"),t=e.createElement("div","lh-metric__innerwrap"),i=e.createElement("div","lh-metric__icon"),o=e.createElement("span","lh-metric__title"),r=e.createElement("div","lh-metric__value"),s=e.createElement("div","lh-metric__description");return t.append(" ",i," ",o," ",r," ",s," "),n.append(" ",t," "),a.append(n),a}(e);case"opportunity":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-audit lh-audit--load-opportunity"),t=e.createElement("details","lh-expandable-details"),i=e.createElement("summary"),o=e.createElement("div","lh-audit__header"),r=e.createElement("div","lh-load-opportunity__cols"),s=e.createElement("div","lh-load-opportunity__col lh-load-opportunity__col--one"),l=e.createElement("span","lh-audit__score-icon"),p=e.createElement("div","lh-audit__title");s.append(" ",l," ",p," ");const u=e.createElement("div","lh-load-opportunity__col lh-load-opportunity__col--two"),c=e.createElement("div","lh-load-opportunity__sparkline"),d=e.createElement("div","lh-sparkline"),m=e.createElement("div","lh-sparkline__bar");d.append(m),c.append(" ",d," ");const h=e.createElement("div","lh-audit__display-text"),g=e.createElement("div","lh-chevron-container");u.append(" ",c," ",h," ",g," "),r.append(" ",s," ",u," "),o.append(" ",r," "),i.append(" ",o," ");const v=e.createElement("div","lh-audit__description"),f=e.createElement("div","lh-audit__stackpacks");return t.append(" ",i," ",v," ",f," "),n.append(" ",t," "),a.append(n),a}(e);case"opportunityHeader":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-load-opportunity__header lh-load-opportunity__cols"),t=e.createElement("div","lh-load-opportunity__col lh-load-opportunity__col--one"),i=e.createElement("div","lh-load-opportunity__col lh-load-opportunity__col--two");return n.append(" ",t," ",i," "),a.append(n),a}(e);case"scorescale":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-scorescale"),t=e.createElement("span","lh-scorescale-range lh-scorescale-range--fail");t.append("0–49");const i=e.createElement("span","lh-scorescale-range lh-scorescale-range--average");i.append("50–89");const o=e.createElement("span","lh-scorescale-range lh-scorescale-range--pass");return o.append("90–100"),n.append(" ",t," ",i," ",o," "),a.append(n),a}(e);case"scoresWrapper":return function(e){const a=e.createFragment(),n=e.createElement("style");n.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 "),a.append(n);const t=e.createElement("div","lh-scores-wrapper"),i=e.createElement("div","lh-scores-container"),o=e.createElement("div","lh-pyro"),r=e.createElement("div","lh-pyro-before"),s=e.createElement("div","lh-pyro-after");return o.append(" ",r," ",s," "),i.append(" ",o," "),t.append(" ",i," "),a.append(t),a}(e);case"snippet":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-snippet"),t=e.createElement("style");return t.append('\n :root {\n --snippet-highlight-light: #fbf1f2;\n --snippet-highlight-dark: #ffd6d8;\n }\n\n .lh-snippet__header {\n position: relative;\n overflow: hidden;\n padding: 10px;\n border-bottom: none;\n color: var(--snippet-color);\n background-color: var(--snippet-background-color);\n border: 1px solid var(--report-border-color-secondary);\n }\n .lh-snippet__title {\n font-weight: bold;\n float: left;\n }\n .lh-snippet__node {\n float: left;\n margin-left: 4px;\n }\n .lh-snippet__toggle-expand {\n padding: 1px 7px;\n margin-top: -1px;\n margin-right: -7px;\n float: right;\n background: transparent;\n border: none;\n cursor: pointer;\n font-size: 14px;\n color: #0c50c7;\n }\n\n .lh-snippet__snippet {\n overflow: auto;\n border: 1px solid var(--report-border-color-secondary);\n }\n /* Container needed so that all children grow to the width of the scroll container */\n .lh-snippet__snippet-inner {\n display: inline-block;\n min-width: 100%;\n }\n\n .lh-snippet:not(.lh-snippet--expanded) .lh-snippet__show-if-expanded {\n display: none;\n }\n .lh-snippet.lh-snippet--expanded .lh-snippet__show-if-collapsed {\n display: none;\n }\n\n .lh-snippet__line {\n background: white;\n white-space: pre;\n display: flex;\n }\n .lh-snippet__line:not(.lh-snippet__line--message):first-child {\n padding-top: 4px;\n }\n .lh-snippet__line:not(.lh-snippet__line--message):last-child {\n padding-bottom: 4px;\n }\n .lh-snippet__line--content-highlighted {\n background: var(--snippet-highlight-dark);\n }\n .lh-snippet__line--message {\n background: var(--snippet-highlight-light);\n }\n .lh-snippet__line--message .lh-snippet__line-number {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n .lh-snippet__line--message code {\n padding: 10px;\n padding-left: 5px;\n color: var(--color-fail);\n font-family: var(--report-font-family);\n }\n .lh-snippet__line--message code {\n white-space: normal;\n }\n .lh-snippet__line-icon {\n padding-top: 10px;\n display: none;\n }\n .lh-snippet__line--message .lh-snippet__line-icon {\n display: block;\n }\n .lh-snippet__line-icon:before {\n content: "";\n display: inline-block;\n vertical-align: middle;\n margin-right: 4px;\n width: var(--score-icon-size);\n height: var(--score-icon-size);\n background-image: var(--fail-icon-url);\n }\n .lh-snippet__line-number {\n flex-shrink: 0;\n width: 40px;\n text-align: right;\n font-family: monospace;\n padding-right: 5px;\n margin-right: 5px;\n color: var(--color-gray-600);\n user-select: none;\n }\n '),n.append(" ",t," "),a.append(n),a}(e);case"snippetContent":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-snippet__snippet"),t=e.createElement("div","lh-snippet__snippet-inner");return n.append(" ",t," "),a.append(n),a}(e);case"snippetHeader":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-snippet__header"),t=e.createElement("div","lh-snippet__title"),i=e.createElement("div","lh-snippet__node"),o=e.createElement("button","lh-snippet__toggle-expand"),r=e.createElement("span","lh-snippet__btn-label-collapse lh-snippet__show-if-expanded"),s=e.createElement("span","lh-snippet__btn-label-expand lh-snippet__show-if-collapsed");return o.append(" ",r," ",s," "),n.append(" ",t," ",i," ",o," "),a.append(n),a}(e);case"snippetLine":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-snippet__line"),t=e.createElement("div","lh-snippet__line-number"),i=e.createElement("div","lh-snippet__line-icon"),o=e.createElement("code");return n.append(" ",t," ",i," ",o," "),a.append(n),a}(e);case"styles":return function(e){const a=e.createFragment(),n=e.createElement("style");return n.append('/**\n * @license\n * Copyright 2017 The Lighthouse Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS-IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n Naming convention:\n\n If a variable is used for a specific component: --{component}-{property name}-{modifier}\n\n Both {component} and {property name} should be kebab-case. If the target is the entire page,\n use \'report\' for the component. The property name should not be abbreviated. Use the\n property name the variable is intended for - if it\'s used for multiple, a common descriptor\n is fine (ex: \'size\' for a variable applied to \'width\' and \'height\'). If a variable is shared\n across multiple components, either create more variables or just drop the "{component}-"\n part of the name. Append any modifiers at the end (ex: \'big\', \'dark\').\n\n For colors: --color-{hue}-{intensity}\n\n {intensity} is the Material Design tag - 700, A700, etc.\n*/\n.lh-vars {\n /* Palette using Material Design Colors\n * https://www.materialui.co/colors */\n --color-amber-50: #FFF8E1;\n --color-blue-200: #90CAF9;\n --color-blue-900: #0D47A1;\n --color-blue-A700: #2962FF;\n --color-blue-primary: #06f;\n --color-cyan-500: #00BCD4;\n --color-gray-100: #F5F5F5;\n --color-gray-300: #CFCFCF;\n --color-gray-200: #E0E0E0;\n --color-gray-400: #BDBDBD;\n --color-gray-50: #FAFAFA;\n --color-gray-500: #9E9E9E;\n --color-gray-600: #757575;\n --color-gray-700: #616161;\n --color-gray-800: #424242;\n --color-gray-900: #212121;\n --color-gray: #000000;\n --color-green-700: #080;\n --color-green: #0c6;\n --color-lime-400: #D3E156;\n --color-orange-50: #FFF3E0;\n --color-orange-700: #C33300;\n --color-orange: #fa3;\n --color-red-700: #c00;\n --color-red: #f33;\n --color-teal-600: #00897B;\n --color-white: #FFFFFF;\n\n /* Context-specific colors */\n --color-average-secondary: var(--color-orange-700);\n --color-average: var(--color-orange);\n --color-fail-secondary: var(--color-red-700);\n --color-fail: var(--color-red);\n --color-hover: var(--color-gray-50);\n --color-informative: var(--color-blue-900);\n --color-pass-secondary: var(--color-green-700);\n --color-pass: var(--color-green);\n --color-not-applicable: var(--color-gray-600);\n\n /* Component variables */\n --audit-description-padding-left: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right));\n --audit-explanation-line-height: 16px;\n --audit-group-margin-bottom: calc(var(--default-padding) * 6);\n --audit-group-padding-vertical: 8px;\n --audit-margin-horizontal: 5px;\n --audit-padding-vertical: 8px;\n --category-padding: calc(var(--default-padding) * 6) var(--edge-gap-padding) calc(var(--default-padding) * 4);\n --chevron-line-stroke: var(--color-gray-600);\n --chevron-size: 12px;\n --default-padding: 8px;\n --edge-gap-padding: calc(var(--default-padding) * 4);\n --env-item-background-color: var(--color-gray-100);\n --env-item-font-size: 28px;\n --env-item-line-height: 36px;\n --env-item-padding: 10px 0px;\n --env-name-min-width: 220px;\n --footer-padding-vertical: 16px;\n --gauge-circle-size-big: 96px;\n --gauge-circle-size: 48px;\n --gauge-circle-size-sm: 32px;\n --gauge-label-font-size-big: 18px;\n --gauge-label-font-size: var(--report-font-size-secondary);\n --gauge-label-line-height-big: 24px;\n --gauge-label-line-height: var(--report-line-height-secondary);\n --gauge-percentage-font-size-big: 38px;\n --gauge-percentage-font-size: var(--report-font-size-secondary);\n --gauge-wrapper-width: 120px;\n --header-line-height: 24px;\n --highlighter-background-color: var(--report-text-color);\n --icon-square-size: calc(var(--score-icon-size) * 0.88);\n --image-preview-size: 48px;\n --link-color: var(--color-blue-primary);\n --locale-selector-background-color: var(--color-white);\n --metric-toggle-lines-fill: #7F7F7F;\n --metric-value-font-size: calc(var(--report-font-size) * 1.8);\n --metrics-toggle-background-color: var(--color-gray-200);\n --plugin-badge-background-color: var(--color-white);\n --plugin-badge-size-big: calc(var(--gauge-circle-size-big) / 2.7);\n --plugin-badge-size: calc(var(--gauge-circle-size) / 2.7);\n --plugin-icon-size: 65%;\n --pwa-icon-margin: 0 var(--default-padding);\n --pwa-icon-size: var(--topbar-logo-size);\n --report-background-color: #fff;\n --report-border-color-secondary: #ebebeb;\n --report-font-family-monospace: \'Roboto Mono\', \'Menlo\', \'dejavu sans mono\', \'Consolas\', \'Lucida Console\', monospace;\n --report-font-family: Roboto, Helvetica, Arial, sans-serif;\n --report-font-size: 14px;\n --report-font-size-secondary: 12px;\n --report-icon-size: var(--score-icon-background-size);\n --report-line-height: 24px;\n --report-line-height-secondary: 20px;\n --report-monospace-font-size: calc(var(--report-font-size) * 0.85);\n --report-text-color-secondary: var(--color-gray-800);\n --report-text-color: var(--color-gray-900);\n --report-content-max-width: calc(60 * var(--report-font-size)); /* defaults to 840px */\n --report-content-min-width: 360px;\n --report-content-max-width-minus-edge-gap: calc(var(--report-content-max-width) - var(--edge-gap-padding) * 2);\n --score-container-padding: 8px;\n --score-icon-background-size: 24px;\n --score-icon-margin-left: 6px;\n --score-icon-margin-right: 14px;\n --score-icon-margin: 0 var(--score-icon-margin-right) 0 var(--score-icon-margin-left);\n --score-icon-size: 12px;\n --score-icon-size-big: 16px;\n --screenshot-overlay-background: rgba(0, 0, 0, 0.3);\n --section-padding-vertical: calc(var(--default-padding) * 6);\n --snippet-background-color: var(--color-gray-50);\n --snippet-color: #0938C2;\n --sparkline-height: 5px;\n --stackpack-padding-horizontal: 10px;\n --sticky-header-background-color: var(--report-background-color);\n --sticky-header-buffer: calc(var(--topbar-height) + var(--sticky-header-height));\n --sticky-header-height: calc(var(--gauge-circle-size-sm) + var(--score-container-padding) * 2);\n --table-higlight-background-color: hsla(210, 17%, 77%, 0.1);\n --tools-icon-color: var(--color-gray-600);\n --topbar-background-color: var(--color-white);\n --topbar-height: 32px;\n --topbar-logo-size: 24px;\n --topbar-padding: 0 8px;\n --toplevel-warning-background-color: hsla(30, 100%, 75%, 10%);\n --toplevel-warning-message-text-color: var(--color-average-secondary);\n --toplevel-warning-padding: 18px;\n --toplevel-warning-text-color: var(--report-text-color);\n\n /* SVGs */\n --plugin-icon-url-dark: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="%23FFFFFF"><path d="M0 0h24v24H0z" fill="none"/><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/></svg>\');\n --plugin-icon-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="%23757575"><path d="M0 0h24v24H0z" fill="none"/><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/></svg>\');\n\n --pass-icon-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>check</title><path fill="%23178239" d="M24 4C12.95 4 4 12.95 4 24c0 11.04 8.95 20 20 20 11.04 0 20-8.96 20-20 0-11.05-8.96-20-20-20zm-4 30L10 24l2.83-2.83L20 28.34l15.17-15.17L38 16 20 34z"/></svg>\');\n --average-icon-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>info</title><path fill="%23E67700" d="M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm2 30h-4V22h4v12zm0-16h-4v-4h4v4z"/></svg>\');\n --fail-icon-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>warn</title><path fill="%23C7221F" d="M2 42h44L24 4 2 42zm24-6h-4v-4h4v4zm0-8h-4v-8h4v8z"/></svg>\');\n\n --pwa-installable-gray-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="nonzero"><circle fill="%23DAE0E3" cx="12" cy="12" r="12"/><path d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm3.5 7.7h-2.8v2.8h-1.4v-2.8H8.5v-1.4h2.8V8.5h1.4v2.8h2.8v1.4z" fill="%23FFF"/></g></svg>\');\n --pwa-optimized-gray-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect fill="%23DAE0E3" width="24" height="24" rx="12"/><path fill="%23FFF" d="M12 15.07l3.6 2.18-.95-4.1 3.18-2.76-4.2-.36L12 6.17l-1.64 3.86-4.2.36 3.2 2.76-.96 4.1z"/><path d="M5 5h14v14H5z"/></g></svg>\');\n\n --pwa-installable-gray-url-dark: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="nonzero"><circle fill="%23424242" cx="12" cy="12" r="12"/><path d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm3.5 7.7h-2.8v2.8h-1.4v-2.8H8.5v-1.4h2.8V8.5h1.4v2.8h2.8v1.4z" fill="%23FFF"/></g></svg>\');\n --pwa-optimized-gray-url-dark: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect fill="%23424242" width="24" height="24" rx="12"/><path fill="%23FFF" d="M12 15.07l3.6 2.18-.95-4.1 3.18-2.76-4.2-.36L12 6.17l-1.64 3.86-4.2.36 3.2 2.76-.96 4.1z"/><path d="M5 5h14v14H5z"/></g></svg>\');\n\n --pwa-installable-color-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero" fill="none"><circle fill="%230CCE6B" cx="12" cy="12" r="12"/><path d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm3.5 7.7h-2.8v2.8h-1.4v-2.8H8.5v-1.4h2.8V8.5h1.4v2.8h2.8v1.4z" fill="%23FFF"/></g></svg>\');\n --pwa-optimized-color-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect fill="%230CCE6B" width="24" height="24" rx="12"/><path d="M5 5h14v14H5z"/><path fill="%23FFF" d="M12 15.07l3.6 2.18-.95-4.1 3.18-2.76-4.2-.36L12 6.17l-1.64 3.86-4.2.36 3.2 2.76-.96 4.1z"/></g></svg>\');\n\n --swap-locale-icon-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path 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"/></svg>\');\n}\n\n@media not print {\n .lh-dark {\n /* Pallete */\n --color-gray-200: var(--color-gray-800);\n --color-gray-300: #616161;\n --color-gray-400: var(--color-gray-600);\n --color-gray-700: var(--color-gray-400);\n --color-gray-50: #757575;\n --color-gray-600: var(--color-gray-500);\n --color-green-700: var(--color-green);\n --color-orange-700: var(--color-orange);\n --color-red-700: var(--color-red);\n --color-teal-600: var(--color-cyan-500);\n\n /* Context-specific colors */\n --color-hover: rgba(0, 0, 0, 0.2);\n --color-informative: var(--color-blue-200);\n\n /* Component variables */\n --env-item-background-color: #393535;\n --link-color: var(--color-blue-200);\n --locale-selector-background-color: var(--color-gray-200);\n --plugin-badge-background-color: var(--color-gray-800);\n --report-background-color: var(--color-gray-900);\n --report-border-color-secondary: var(--color-gray-200);\n --report-text-color-secondary: var(--color-gray-400);\n --report-text-color: var(--color-gray-100);\n --snippet-color: var(--color-cyan-500);\n --topbar-background-color: var(--color-gray);\n --toplevel-warning-background-color: hsl(33deg 14% 18%);\n --toplevel-warning-message-text-color: var(--color-orange-700);\n --toplevel-warning-text-color: var(--color-gray-100);\n\n /* SVGs */\n --plugin-icon-url: var(--plugin-icon-url-dark);\n --pwa-installable-gray-url: var(--pwa-installable-gray-url-dark);\n --pwa-optimized-gray-url: var(--pwa-optimized-gray-url-dark);\n }\n}\n\n@media only screen and (max-width: 480px) {\n .lh-vars {\n --audit-group-margin-bottom: 20px;\n --edge-gap-padding: var(--default-padding);\n --env-name-min-width: 120px;\n --gauge-circle-size-big: 96px;\n --gauge-circle-size: 72px;\n --gauge-label-font-size-big: 22px;\n --gauge-label-font-size: 14px;\n --gauge-label-line-height-big: 26px;\n --gauge-label-line-height: 20px;\n --gauge-percentage-font-size-big: 34px;\n --gauge-percentage-font-size: 26px;\n --gauge-wrapper-width: 112px;\n --header-padding: 16px 0 16px 0;\n --image-preview-size: 24px;\n --plugin-icon-size: 75%;\n --pwa-icon-margin: 0 7px 0 -3px;\n --report-font-size: 14px;\n --report-line-height: 20px;\n --score-icon-margin-left: 2px;\n --score-icon-size: 10px;\n --topbar-height: 28px;\n --topbar-logo-size: 20px;\n }\n\n /* Not enough space to adequately show the relative savings bars. */\n .lh-sparkline {\n display: none;\n }\n}\n\n.lh-vars.lh-devtools {\n --audit-explanation-line-height: 14px;\n --audit-group-margin-bottom: 20px;\n --audit-group-padding-vertical: 12px;\n --audit-padding-vertical: 4px;\n --category-padding: 12px;\n --default-padding: 12px;\n --env-name-min-width: 120px;\n --footer-padding-vertical: 8px;\n --gauge-circle-size-big: 72px;\n --gauge-circle-size: 64px;\n --gauge-label-font-size-big: 22px;\n --gauge-label-font-size: 14px;\n --gauge-label-line-height-big: 26px;\n --gauge-label-line-height: 20px;\n --gauge-percentage-font-size-big: 34px;\n --gauge-percentage-font-size: 26px;\n --gauge-wrapper-width: 97px;\n --header-line-height: 20px;\n --header-padding: 16px 0 16px 0;\n --screenshot-overlay-background: transparent;\n --plugin-icon-size: 75%;\n --pwa-icon-margin: 0 7px 0 -3px;\n --report-font-family-monospace: \'Menlo\', \'dejavu sans mono\', \'Consolas\', \'Lucida Console\', monospace;\n --report-font-family: \'.SFNSDisplay-Regular\', \'Helvetica Neue\', \'Lucida Grande\', sans-serif;\n --report-font-size: 12px;\n --report-line-height: 20px;\n --score-icon-margin-left: 2px;\n --score-icon-size: 10px;\n --section-padding-vertical: 8px;\n}\n\n.lh-container:not(.lh-topbar + .lh-container) {\n --topbar-height: 0;\n --sticky-header-height: 0;\n --sticky-header-buffer: 0;\n}\n\n.lh-devtools.lh-root {\n height: 100%;\n}\n.lh-devtools.lh-root img {\n /* Override devtools default \'min-width: 0\' so svg without size in a flexbox isn\'t collapsed. */\n min-width: auto;\n}\n.lh-devtools .lh-container {\n overflow-y: scroll;\n height: calc(100% - var(--topbar-height));\n /** The .lh-container is the scroll parent in DevTools so we exclude the topbar from the sticky header buffer. */\n --sticky-header-buffer: calc(var(--sticky-header-height));\n}\n@media print {\n .lh-devtools .lh-container {\n overflow: unset;\n }\n}\n.lh-devtools .lh-sticky-header {\n /* This is normally the height of the topbar, but we want it to stick to the top of our scroll container .lh-container` */\n top: 0;\n}\n.lh-devtools .lh-element-screenshot__overlay {\n position: absolute;\n}\n\n@keyframes fadeIn {\n 0% { opacity: 0;}\n 100% { opacity: 0.6;}\n}\n\n.lh-root *, .lh-root *::before, .lh-root *::after {\n box-sizing: border-box;\n}\n\n.lh-root {\n font-family: var(--report-font-family);\n font-size: var(--report-font-size);\n margin: 0;\n line-height: var(--report-line-height);\n background: var(--report-background-color);\n color: var(--report-text-color);\n}\n\n.lh-root :focus-visible {\n outline: -webkit-focus-ring-color auto 3px;\n}\n.lh-root summary:focus {\n outline: none;\n box-shadow: 0 0 0 1px hsl(217, 89%, 61%);\n}\n\n.lh-root [hidden] {\n display: none !important;\n}\n\n.lh-root pre {\n margin: 0;\n}\n\n.lh-root details > summary {\n cursor: pointer;\n}\n\n.lh-hidden {\n display: none !important;\n}\n\n.lh-container {\n /*\n Text wrapping in the report is so much FUN!\n We have a `word-break: break-word;` globally here to prevent a few common scenarios, namely\n long non-breakable text (usually URLs) found in:\n 1. The footer\n 2. .lh-node (outerHTML)\n 3. .lh-code\n\n With that sorted, the next challenge is appropriate column sizing and text wrapping inside our\n .lh-details tables. Even more fun.\n * We don\'t want table headers ("Potential Savings (ms)") to wrap or their column values, but\n we\'d be happy for the URL column to wrap if the URLs are particularly long.\n * We want the narrow columns to remain narrow, providing the most column width for URL\n * We don\'t want the table to extend past 100% width.\n * Long URLs in the URL column can wrap. Util.getURLDisplayName maxes them out at 64 characters,\n but they do not get any overflow:ellipsis treatment.\n */\n word-break: break-word;\n}\n\n.lh-audit-group a,\n.lh-category-header__description a,\n.lh-audit__description a,\n.lh-warnings a,\n.lh-footer a,\n.lh-table-column--link a {\n color: var(--link-color);\n}\n\n.lh-audit__description, .lh-audit__stackpack {\n --inner-audit-padding-right: var(--stackpack-padding-horizontal);\n padding-left: var(--audit-description-padding-left);\n padding-right: var(--inner-audit-padding-right);\n padding-top: 8px;\n padding-bottom: 8px;\n}\n\n.lh-details {\n margin-top: var(--default-padding);\n margin-bottom: var(--default-padding);\n margin-left: var(--audit-description-padding-left);\n /* whatever the .lh-details side margins are */\n width: 100%;\n}\n\n.lh-audit__stackpack {\n display: flex;\n align-items: center;\n}\n\n.lh-audit__stackpack__img {\n max-width: 30px;\n margin-right: var(--default-padding)\n}\n\n/* Report header */\n\n.lh-report-icon {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n cursor: pointer;\n}\n.lh-report-icon[disabled] {\n opacity: 0.3;\n pointer-events: none;\n}\n\n.lh-report-icon::before {\n content: "";\n margin: 4px;\n background-repeat: no-repeat;\n width: var(--report-icon-size);\n height: var(--report-icon-size);\n opacity: 0.7;\n display: inline-block;\n vertical-align: middle;\n}\n.lh-report-icon:hover::before {\n opacity: 1;\n}\n.lh-dark .lh-report-icon::before {\n filter: invert(1);\n}\n.lh-report-icon--print::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z"/><path fill="none" d="M0 0h24v24H0z"/></svg>\');\n}\n.lh-report-icon--copy::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>\');\n}\n.lh-report-icon--open::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h4v-2H5V8h14v10h-4v2h4c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm-7 6l-4 4h3v6h2v-6h3l-4-4z"/></svg>\');\n}\n.lh-report-icon--download::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>\');\n}\n.lh-report-icon--dark::before {\n background-image:url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 100 125"><path d="M50 23.587c-16.27 0-22.799 12.574-22.799 21.417 0 12.917 10.117 22.451 12.436 32.471h20.726c2.32-10.02 12.436-19.554 12.436-32.471 0-8.843-6.528-21.417-22.799-21.417zM39.637 87.161c0 3.001 1.18 4.181 4.181 4.181h.426l.41 1.231C45.278 94.449 46.042 95 48.019 95h3.963c1.978 0 2.74-.551 3.365-2.427l.409-1.231h.427c3.002 0 4.18-1.18 4.18-4.181V80.91H39.637v6.251zM50 18.265c1.26 0 2.072-.814 2.072-2.073v-9.12C52.072 5.813 51.26 5 50 5c-1.259 0-2.072.813-2.072 2.073v9.12c0 1.259.813 2.072 2.072 2.072zM68.313 23.727c.994.774 2.135.634 2.91-.357l5.614-7.187c.776-.992.636-2.135-.356-2.909-.992-.776-2.135-.636-2.91.357l-5.613 7.186c-.778.993-.636 2.135.355 2.91zM91.157 36.373c-.306-1.222-1.291-1.815-2.513-1.51l-8.85 2.207c-1.222.305-1.814 1.29-1.51 2.512.305 1.223 1.291 1.814 2.513 1.51l8.849-2.206c1.223-.305 1.816-1.291 1.511-2.513zM86.757 60.48l-8.331-3.709c-1.15-.512-2.225-.099-2.736 1.052-.512 1.151-.1 2.224 1.051 2.737l8.33 3.707c1.15.514 2.225.101 2.736-1.05.513-1.149.1-2.223-1.05-2.737zM28.779 23.37c.775.992 1.917 1.131 2.909.357.992-.776 1.132-1.917.357-2.91l-5.615-7.186c-.775-.992-1.917-1.132-2.909-.357s-1.131 1.917-.356 2.909l5.614 7.187zM21.715 39.583c.305-1.223-.288-2.208-1.51-2.513l-8.849-2.207c-1.222-.303-2.208.289-2.513 1.511-.303 1.222.288 2.207 1.511 2.512l8.848 2.206c1.222.304 2.208-.287 2.513-1.509zM21.575 56.771l-8.331 3.711c-1.151.511-1.563 1.586-1.05 2.735.511 1.151 1.586 1.563 2.736 1.052l8.331-3.711c1.151-.511 1.563-1.586 1.05-2.735-.512-1.15-1.585-1.562-2.736-1.052z"/></svg>\');\n}\n.lh-report-icon--treemap::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="black"><path d="M3 5v14h19V5H3zm2 2h15v4H5V7zm0 10v-4h4v4H5zm6 0v-4h9v4h-9z"/></svg>\');\n}\n.lh-report-icon--date::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 11h2v2H7v-2zm14-5v14a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h1V2h2v2h8V2h2v2h1a2 2 0 012 2zM5 8h14V6H5v2zm14 12V10H5v10h14zm-4-7h2v-2h-2v2zm-4 0h2v-2h-2v2z"/></svg>\');\n}\n.lh-report-icon--devices::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h18V4H4a2 2 0 00-2 2v11H0v3h14v-3H4V6zm19 2h-6a1 1 0 00-1 1v10c0 .6.5 1 1 1h6c.6 0 1-.5 1-1V9c0-.6-.5-1-1-1zm-1 9h-4v-7h4v7z"/></svg>\');\n}\n.lh-report-icon--world::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm7 6h-3c-.3-1.3-.8-2.5-1.4-3.6A8 8 0 0 1 18.9 8zm-7-4a14 14 0 0 1 2 4h-4a14 14 0 0 1 2-4zM4.3 14a8.2 8.2 0 0 1 0-4h3.3a16.5 16.5 0 0 0 0 4H4.3zm.8 2h3a14 14 0 0 0 1.3 3.6A8 8 0 0 1 5.1 16zm3-8H5a8 8 0 0 1 4.3-3.6L8 8zM12 20a14 14 0 0 1-2-4h4a14 14 0 0 1-2 4zm2.3-6H9.7a14.7 14.7 0 0 1 0-4h4.6a14.6 14.6 0 0 1 0 4zm.3 5.6c.6-1.2 1-2.4 1.4-3.6h3a8 8 0 0 1-4.4 3.6zm1.8-5.6a16.5 16.5 0 0 0 0-4h3.3a8.2 8.2 0 0 1 0 4h-3.3z"/></svg>\');\n}\n.lh-report-icon--stopwatch::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15 1H9v2h6V1zm-4 13h2V8h-2v6zm8.1-6.6L20.5 6l-1.4-1.4L17.7 6A9 9 0 0 0 3 13a9 9 0 1 0 16-5.6zm-7 12.6a7 7 0 1 1 0-14 7 7 0 0 1 0 14z"/></svg>\');\n}\n.lh-report-icon--networkspeed::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.9 5c-.2 0-.3 0-.4.2v.2L10.1 17a2 2 0 0 0-.2 1 2 2 0 0 0 4 .4l2.4-12.9c0-.3-.2-.5-.5-.5zM1 9l2 2c2.9-2.9 6.8-4 10.5-3.6l1.2-2.7C10 3.8 4.7 5.3 1 9zm20 2 2-2a15.4 15.4 0 0 0-5.6-3.6L17 8.2c1.5.7 2.9 1.6 4.1 2.8zm-4 4 2-2a9.9 9.9 0 0 0-2.7-1.9l-.5 3 1.2.9zM5 13l2 2a7.1 7.1 0 0 1 4-2l1.3-2.9C9.7 10.1 7 11 5 13z"/></svg>\');\n}\n.lh-report-icon--samples-one::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="7" cy="14" r="3"/><path d="M7 18a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5.6 17.6a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/></svg>\');\n}\n.lh-report-icon--samples-many::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 18a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5.6 17.6a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/><circle cx="7" cy="14" r="3"/><circle cx="11" cy="6" r="3"/></svg>\');\n}\n.lh-report-icon--chrome::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-50 -50 562 562"><path d="M256 25.6v25.6a204 204 0 0 1 144.8 60 204 204 0 0 1 60 144.8 204 204 0 0 1-60 144.8 204 204 0 0 1-144.8 60 204 204 0 0 1-144.8-60 204 204 0 0 1-60-144.8 204 204 0 0 1 60-144.8 204 204 0 0 1 144.8-60V0a256 256 0 1 0 0 512 256 256 0 0 0 0-512v25.6z"/><path d="M256 179.2v25.6a51.3 51.3 0 0 1 0 102.4 51.3 51.3 0 0 1 0-102.4v-51.2a102.3 102.3 0 1 0-.1 204.7 102.3 102.3 0 0 0 .1-204.7v25.6z"/><path d="M256 204.8h217.6a25.6 25.6 0 0 0 0-51.2H256a25.6 25.6 0 0 0 0 51.2m44.3 76.8L191.5 470.1a25.6 25.6 0 1 0 44.4 25.6l108.8-188.5a25.6 25.6 0 1 0-44.4-25.6m-88.6 0L102.9 93.2a25.7 25.7 0 0 0-35-9.4 25.7 25.7 0 0 0-9.4 35l108.8 188.5a25.7 25.7 0 0 0 35 9.4 25.9 25.9 0 0 0 9.4-35.1"/></svg>\');\n}\n\n\n\n.lh-buttons {\n display: flex;\n flex-wrap: wrap;\n margin: var(--default-padding) 0;\n}\n.lh-button {\n height: 32px;\n border: 1px solid var(--report-border-color-secondary);\n border-radius: 3px;\n color: var(--link-color);\n background-color: var(--report-background-color);\n margin: 5px;\n}\n\n.lh-button:first-of-type {\n margin-left: 0;\n}\n\n/* Node */\n.lh-node__snippet {\n font-family: var(--report-font-family-monospace);\n color: var(--snippet-color);\n font-size: var(--report-monospace-font-size);\n line-height: 20px;\n}\n\n/* Score */\n\n.lh-audit__score-icon {\n width: var(--score-icon-size);\n height: var(--score-icon-size);\n margin: var(--score-icon-margin);\n}\n\n.lh-audit--pass .lh-audit__display-text {\n color: var(--color-pass-secondary);\n}\n.lh-audit--pass .lh-audit__score-icon,\n.lh-scorescale-range--pass::before {\n border-radius: 100%;\n background: var(--color-pass);\n}\n\n.lh-audit--average .lh-audit__display-text {\n color: var(--color-average-secondary);\n}\n.lh-audit--average .lh-audit__score-icon,\n.lh-scorescale-range--average::before {\n background: var(--color-average);\n width: var(--icon-square-size);\n height: var(--icon-square-size);\n}\n\n.lh-audit--fail .lh-audit__display-text {\n color: var(--color-fail-secondary);\n}\n.lh-audit--fail .lh-audit__score-icon,\n.lh-audit--error .lh-audit__score-icon,\n.lh-scorescale-range--fail::before {\n border-left: calc(var(--score-icon-size) / 2) solid transparent;\n border-right: calc(var(--score-icon-size) / 2) solid transparent;\n border-bottom: var(--score-icon-size) solid var(--color-fail);\n}\n\n.lh-audit--manual .lh-audit__display-text,\n.lh-audit--notapplicable .lh-audit__display-text {\n color: var(--color-gray-600);\n}\n.lh-audit--manual .lh-audit__score-icon,\n.lh-audit--notapplicable .lh-audit__score-icon {\n border: calc(0.2 * var(--score-icon-size)) solid var(--color-gray-400);\n border-radius: 100%;\n background: none;\n}\n\n.lh-audit--informative .lh-audit__display-text {\n color: var(--color-gray-600);\n}\n\n.lh-audit--informative .lh-audit__score-icon {\n border: calc(0.2 * var(--score-icon-size)) solid var(--color-gray-400);\n border-radius: 100%;\n}\n\n.lh-audit__description,\n.lh-audit__stackpack {\n color: var(--report-text-color-secondary);\n}\n.lh-audit__adorn {\n border: 1px solid slategray;\n border-radius: 3px;\n margin: 0 3px;\n padding: 0 2px;\n line-height: 1.1;\n display: inline-block;\n font-size: 90%;\n}\n\n.lh-category-header__description {\n text-align: center;\n color: var(--color-gray-700);\n margin: 0px auto;\n max-width: 400px;\n}\n\n\n.lh-audit__display-text,\n.lh-load-opportunity__sparkline,\n.lh-chevron-container {\n margin: 0 var(--audit-margin-horizontal);\n}\n.lh-chevron-container {\n margin-right: 0;\n}\n\n.lh-audit__title-and-text {\n flex: 1;\n}\n\n.lh-audit__title-and-text code {\n color: var(--snippet-color);\n font-size: var(--report-monospace-font-size);\n}\n\n/* Prepend display text with em dash separator. But not in Opportunities. */\n.lh-audit__display-text:not(:empty):before {\n content: \'—\';\n margin-right: var(--audit-margin-horizontal);\n}\n.lh-audit-group.lh-audit-group--load-opportunities .lh-audit__display-text:not(:empty):before {\n display: none;\n}\n\n/* Expandable Details (Audit Groups, Audits) */\n.lh-audit__header {\n display: flex;\n align-items: center;\n padding: var(--default-padding);\n}\n\n.lh-audit--load-opportunity .lh-audit__header {\n display: block;\n}\n\n\n.lh-metricfilter {\n display: grid;\n justify-content: end;\n align-items: center;\n grid-auto-flow: column;\n gap: 4px;\n color: var(--color-gray-700);\n}\n\n.lh-metricfilter__radio {\n position: absolute;\n left: -9999px;\n}\n.lh-metricfilter input[type=\'radio\']:focus-visible + label {\n outline: -webkit-focus-ring-color auto 1px;\n}\n\n.lh-metricfilter__label {\n display: inline-flex;\n padding: 0 4px;\n height: 16px;\n text-decoration: underline;\n align-items: center;\n cursor: pointer;\n font-size: 90%;\n}\n\n.lh-metricfilter__label--active {\n background: var(--color-blue-primary);\n color: var(--color-white);\n border-radius: 3px;\n text-decoration: none;\n}\n/* Give the \'All\' choice a more muted display */\n.lh-metricfilter__label--active[for="metric-All"] {\n background-color: var(--color-blue-200) !important;\n color: black !important;\n}\n\n.lh-metricfilter__text {\n margin-right: 8px;\n}\n\n/* If audits are filtered, hide the itemcount for Passed Audits… */\n.lh-category--filtered .lh-audit-group .lh-audit-group__itemcount {\n display: none;\n}\n\n\n.lh-audit__header:hover {\n background-color: var(--color-hover);\n}\n\n/* We want to hide the browser\'s default arrow marker on summary elements. Admittedly, it\'s complicated. */\n.lh-root details > summary {\n /* Blink 89+ and Firefox will hide the arrow when display is changed from (new) default of `list-item` to block. https://chromestatus.com/feature/6730096436051968*/\n display: block;\n}\n/* Safari and Blink <=88 require using the -webkit-details-marker selector */\n.lh-root details > summary::-webkit-details-marker {\n display: none;\n}\n\n/* Perf Metric */\n\n.lh-metrics-container {\n display: grid;\n grid-auto-rows: 1fr;\n grid-template-columns: 1fr 1fr;\n grid-column-gap: var(--report-line-height);\n margin-bottom: var(--default-padding);\n}\n\n.lh-metric {\n border-top: 1px solid var(--report-border-color-secondary);\n}\n\n.lh-category:not(.lh--hoisted-meta) .lh-metric:nth-last-child(-n+2) {\n border-bottom: 1px solid var(--report-border-color-secondary);\n}\n\n.lh-metric__innerwrap {\n display: grid;\n /**\n * Icon -- Metric Name\n * -- Metric Value\n */\n grid-template-columns: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right)) 1fr;\n align-items: center;\n padding: var(--default-padding);\n}\n\n.lh-metric__details {\n order: -1;\n}\n\n.lh-metric__title {\n flex: 1;\n}\n\n.lh-calclink {\n padding-left: calc(1ex / 3);\n}\n\n.lh-metric__description {\n display: none;\n grid-column-start: 2;\n grid-column-end: 4;\n color: var(--report-text-color-secondary);\n}\n\n.lh-metric__value {\n font-size: var(--metric-value-font-size);\n margin: calc(var(--default-padding) / 2) 0;\n white-space: nowrap; /* No wrapping between metric value and the icon */\n grid-column-start: 2;\n}\n\n\n@media screen and (max-width: 535px) {\n .lh-metrics-container {\n display: block;\n }\n\n .lh-metric {\n border-bottom: none !important;\n }\n .lh-category:not(.lh--hoisted-meta) .lh-metric:nth-last-child(1) {\n border-bottom: 1px solid var(--report-border-color-secondary) !important;\n }\n\n /* Change the grid to 3 columns for narrow viewport. */\n .lh-metric__innerwrap {\n /**\n * Icon -- Metric Name -- Metric Value\n */\n grid-template-columns: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right)) 2fr 1fr;\n }\n .lh-metric__value {\n justify-self: end;\n grid-column-start: unset;\n }\n}\n\n/* No-JS toggle switch */\n/* Keep this selector sync\'d w/ `magicSelector` in report-ui-features-test.js */\n .lh-metrics-toggle__input:checked ~ .lh-metrics-container .lh-metric__description {\n display: block;\n}\n\n/* TODO get rid of the SVGS and clean up these some more */\n.lh-metrics-toggle__input {\n opacity: 0;\n position: absolute;\n right: 0;\n top: 0px;\n}\n\n.lh-metrics-toggle__input + div > label > .lh-metrics-toggle__labeltext--hide,\n.lh-metrics-toggle__input:checked + div > label > .lh-metrics-toggle__labeltext--show {\n display: none;\n}\n.lh-metrics-toggle__input:checked + div > label > .lh-metrics-toggle__labeltext--hide {\n display: inline;\n}\n.lh-metrics-toggle__input:focus + div > label {\n outline: -webkit-focus-ring-color auto 3px;\n}\n\n.lh-metrics-toggle__label {\n cursor: pointer;\n font-size: var(--report-font-size-secondary);\n line-height: var(--report-line-height-secondary);\n color: var(--color-gray-700);\n}\n\n/* Pushes the metric description toggle button to the right. */\n.lh-audit-group--metrics .lh-audit-group__header {\n display: flex;\n justify-content: space-between;\n}\n\n.lh-metric__icon,\n.lh-scorescale-range::before {\n content: \'\';\n width: var(--score-icon-size);\n height: var(--score-icon-size);\n display: inline-block;\n margin: var(--score-icon-margin);\n}\n\n.lh-metric--pass .lh-metric__value {\n color: var(--color-pass-secondary);\n}\n.lh-metric--pass .lh-metric__icon {\n border-radius: 100%;\n background: var(--color-pass);\n}\n\n.lh-metric--average .lh-metric__value {\n color: var(--color-average-secondary);\n}\n.lh-metric--average .lh-metric__icon {\n background: var(--color-average);\n width: var(--icon-square-size);\n height: var(--icon-square-size);\n}\n\n.lh-metric--fail .lh-metric__value {\n color: var(--color-fail-secondary);\n}\n.lh-metric--fail .lh-metric__icon,\n.lh-metric--error .lh-metric__icon {\n border-left: calc(var(--score-icon-size) / 2) solid transparent;\n border-right: calc(var(--score-icon-size) / 2) solid transparent;\n border-bottom: var(--score-icon-size) solid var(--color-fail);\n}\n\n.lh-metric--error .lh-metric__value,\n.lh-metric--error .lh-metric__description {\n color: var(--color-fail-secondary);\n}\n\n/* Perf load opportunity */\n\n.lh-load-opportunity__cols {\n display: flex;\n align-items: flex-start;\n}\n\n.lh-load-opportunity__header .lh-load-opportunity__col {\n color: var(--color-gray-600);\n display: unset;\n line-height: calc(2.3 * var(--report-font-size));\n}\n\n.lh-load-opportunity__col {\n display: flex;\n}\n\n.lh-load-opportunity__col--one {\n flex: 5;\n align-items: center;\n margin-right: 2px;\n}\n.lh-load-opportunity__col--two {\n flex: 4;\n text-align: right;\n}\n\n.lh-audit--load-opportunity .lh-audit__display-text {\n text-align: right;\n flex: 0 0 7.5ch;\n}\n\n\n/* Sparkline */\n\n.lh-load-opportunity__sparkline {\n flex: 1;\n margin-top: calc((var(--report-line-height) - var(--sparkline-height)) / 2);\n}\n\n.lh-sparkline {\n height: var(--sparkline-height);\n width: 100%;\n}\n\n.lh-sparkline__bar {\n height: 100%;\n float: right;\n}\n\n.lh-audit--pass .lh-sparkline__bar {\n background: var(--color-pass);\n}\n\n.lh-audit--average .lh-sparkline__bar {\n background: var(--color-average);\n}\n\n.lh-audit--fail .lh-sparkline__bar {\n background: var(--color-fail);\n}\n\n/* Filmstrip */\n\n.lh-filmstrip-container {\n /* smaller gap between metrics and filmstrip */\n margin: -8px auto 0 auto;\n}\n\n.lh-filmstrip {\n display: grid;\n justify-content: space-between;\n padding-bottom: var(--default-padding);\n width: 100%;\n grid-template-columns: repeat(auto-fit, 90px);\n}\n\n.lh-filmstrip__frame {\n text-align: right;\n position: relative;\n}\n\n.lh-filmstrip__thumbnail {\n border: 1px solid var(--report-border-color-secondary);\n max-height: 150px;\n max-width: 120px;\n}\n\n/* Audit */\n\n.lh-audit {\n border-bottom: 1px solid var(--report-border-color-secondary);\n}\n\n/* Apply border-top to just the first audit. */\n.lh-audit {\n border-top: 1px solid var(--report-border-color-secondary);\n}\n.lh-audit ~ .lh-audit {\n border-top: none;\n}\n\n\n.lh-audit--error .lh-audit__display-text {\n color: var(--color-fail-secondary);\n}\n\n/* Audit Group */\n\n.lh-audit-group {\n margin-bottom: var(--audit-group-margin-bottom);\n position: relative;\n}\n.lh-audit-group--metrics {\n margin-bottom: calc(var(--audit-group-margin-bottom) / 2);\n}\n\n.lh-audit-group__header::before {\n /* By default, groups don\'t get an icon */\n content: none;\n width: var(--pwa-icon-size);\n height: var(--pwa-icon-size);\n margin: var(--pwa-icon-margin);\n display: inline-block;\n vertical-align: middle;\n}\n\n/* Style the "over budget" columns red. */\n.lh-audit-group--budgets #performance-budget tbody tr td:nth-child(4),\n.lh-audit-group--budgets #performance-budget tbody tr td:nth-child(5),\n.lh-audit-group--budgets #timing-budget tbody tr td:nth-child(3) {\n color: var(--color-red-700);\n}\n\n/* Align the "over budget request count" text to be close to the "over budget bytes" column. */\n.lh-audit-group--budgets .lh-table tbody tr td:nth-child(4){\n text-align: right;\n}\n\n.lh-audit-group--budgets .lh-details--budget {\n width: 100%;\n margin: 0 0 var(--default-padding);\n}\n\n.lh-audit-group--pwa-installable .lh-audit-group__header::before {\n content: \'\';\n background-image: var(--pwa-installable-gray-url);\n}\n.lh-audit-group--pwa-optimized .lh-audit-group__header::before {\n content: \'\';\n background-image: var(--pwa-optimized-gray-url);\n}\n.lh-audit-group--pwa-installable.lh-badged .lh-audit-group__header::before {\n background-image: var(--pwa-installable-color-url);\n}\n.lh-audit-group--pwa-optimized.lh-badged .lh-audit-group__header::before {\n background-image: var(--pwa-optimized-color-url);\n}\n\n.lh-audit-group--metrics .lh-audit-group__summary {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.lh-audit-group__summary {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.lh-audit-group__header .lh-chevron {\n margin-top: calc((var(--report-line-height) - 5px) / 2);\n}\n\n.lh-audit-group__header {\n letter-spacing: 0.8px;\n padding: var(--default-padding);\n padding-left: 0;\n}\n\n.lh-audit-group__header, .lh-audit-group__summary {\n font-size: var(--report-font-size-secondary);\n line-height: var(--report-line-height-secondary);\n color: var(--color-gray-700);\n}\n\n.lh-audit-group__title {\n text-transform: uppercase;\n font-weight: 500;\n}\n\n.lh-audit-group__itemcount {\n color: var(--color-gray-600);\n}\n\n.lh-audit-group__footer {\n color: var(--color-gray-600);\n display: block;\n margin-top: var(--default-padding);\n}\n\n.lh-details,\n.lh-category-header__description,\n.lh-load-opportunity__header,\n.lh-audit-group__footer {\n font-size: var(--report-font-size-secondary);\n line-height: var(--report-line-height-secondary);\n}\n\n.lh-audit-explanation {\n margin: var(--audit-padding-vertical) 0 calc(var(--audit-padding-vertical) / 2) var(--audit-margin-horizontal);\n line-height: var(--audit-explanation-line-height);\n display: inline-block;\n}\n\n.lh-audit--fail .lh-audit-explanation {\n color: var(--color-fail-secondary);\n}\n\n/* Report */\n.lh-list > :not(:last-child) {\n margin-bottom: calc(var(--default-padding) * 2);\n}\n\n.lh-header-container {\n display: block;\n margin: 0 auto;\n position: relative;\n word-wrap: break-word;\n}\n\n.lh-header-container .lh-scores-wrapper {\n border-bottom: 1px solid var(--color-gray-200);\n}\n\n\n.lh-report {\n min-width: var(--report-content-min-width);\n}\n\n.lh-exception {\n font-size: large;\n}\n\n.lh-code {\n white-space: normal;\n margin-top: 0;\n font-size: var(--report-monospace-font-size);\n}\n\n.lh-warnings {\n --item-margin: calc(var(--report-line-height) / 6);\n color: var(--color-average-secondary);\n margin: var(--audit-padding-vertical) 0;\n padding: var(--default-padding)\n var(--default-padding)\n var(--default-padding)\n calc(var(--audit-description-padding-left));\n background-color: var(--toplevel-warning-background-color);\n}\n.lh-warnings span {\n font-weight: bold;\n}\n\n.lh-warnings--toplevel {\n --item-margin: calc(var(--header-line-height) / 4);\n color: var(--toplevel-warning-text-color);\n margin-left: auto;\n margin-right: auto;\n max-width: var(--report-content-max-width-minus-edge-gap);\n padding: var(--toplevel-warning-padding);\n border-radius: 8px;\n}\n\n.lh-warnings__msg {\n color: var(--toplevel-warning-message-text-color);\n margin: 0;\n}\n\n.lh-warnings ul {\n margin: 0;\n}\n.lh-warnings li {\n margin: var(--item-margin) 0;\n}\n.lh-warnings li:last-of-type {\n margin-bottom: 0;\n}\n\n.lh-scores-header {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n}\n.lh-scores-header__solo {\n padding: 0;\n border: 0;\n}\n\n/* Gauge */\n\n.lh-gauge__wrapper--pass {\n color: var(--color-pass-secondary);\n fill: var(--color-pass);\n stroke: var(--color-pass);\n}\n\n.lh-gauge__wrapper--average {\n color: var(--color-average-secondary);\n fill: var(--color-average);\n stroke: var(--color-average);\n}\n\n.lh-gauge__wrapper--fail {\n color: var(--color-fail-secondary);\n fill: var(--color-fail);\n stroke: var(--color-fail);\n}\n\n.lh-gauge__wrapper--not-applicable {\n color: var(--color-not-applicable);\n fill: var(--color-not-applicable);\n stroke: var(--color-not-applicable);\n}\n\n.lh-fraction__wrapper .lh-fraction__content::before {\n content: \'\';\n height: var(--score-icon-size);\n width: var(--score-icon-size);\n margin: var(--score-icon-margin);\n display: inline-block;\n}\n.lh-fraction__wrapper--pass .lh-fraction__content {\n color: var(--color-pass-secondary);\n}\n.lh-fraction__wrapper--pass .lh-fraction__background {\n background-color: var(--color-pass);\n}\n.lh-fraction__wrapper--pass .lh-fraction__content::before {\n background-color: var(--color-pass);\n border-radius: 50%;\n}\n.lh-fraction__wrapper--average .lh-fraction__content {\n color: var(--color-average-secondary);\n}\n.lh-fraction__wrapper--average .lh-fraction__background,\n.lh-fraction__wrapper--average .lh-fraction__content::before {\n background-color: var(--color-average);\n}\n.lh-fraction__wrapper--fail .lh-fraction__content {\n color: var(--color-fail);\n}\n.lh-fraction__wrapper--fail .lh-fraction__background {\n background-color: var(--color-fail);\n}\n.lh-fraction__wrapper--fail .lh-fraction__content::before {\n border-left: calc(var(--score-icon-size) / 2) solid transparent;\n border-right: calc(var(--score-icon-size) / 2) solid transparent;\n border-bottom: var(--score-icon-size) solid var(--color-fail);\n}\n.lh-fraction__wrapper--null .lh-fraction__content {\n color: var(--color-gray-700);\n}\n.lh-fraction__wrapper--null .lh-fraction__background {\n background-color: var(--color-gray-700);\n}\n.lh-fraction__wrapper--null .lh-fraction__content::before {\n border-radius: 50%;\n border: calc(0.2 * var(--score-icon-size)) solid var(--color-gray-700);\n}\n\n.lh-fraction__background {\n position: absolute;\n height: 100%;\n width: 100%;\n border-radius: calc(var(--gauge-circle-size) / 2);\n opacity: 0.1;\n z-index: -1;\n}\n\n.lh-fraction__content-wrapper {\n height: var(--gauge-circle-size);\n display: flex;\n align-items: center;\n}\n\n.lh-fraction__content {\n display: flex;\n position: relative;\n align-items: center;\n justify-content: center;\n font-size: calc(0.3 * var(--gauge-circle-size));\n line-height: calc(0.4 * var(--gauge-circle-size));\n width: max-content;\n min-width: calc(1.5 * var(--gauge-circle-size));\n padding: calc(0.1 * var(--gauge-circle-size)) calc(0.2 * var(--gauge-circle-size));\n --score-icon-size: calc(0.21 * var(--gauge-circle-size));\n --score-icon-margin: 0 calc(0.15 * var(--gauge-circle-size)) 0 0;\n}\n\n.lh-gauge {\n stroke-linecap: round;\n width: var(--gauge-circle-size);\n height: var(--gauge-circle-size);\n}\n\n.lh-category .lh-gauge {\n --gauge-circle-size: var(--gauge-circle-size-big);\n}\n\n.lh-gauge-base {\n opacity: 0.1;\n}\n\n.lh-gauge-arc {\n fill: none;\n transform-origin: 50% 50%;\n animation: load-gauge var(--transition-length) ease both;\n animation-delay: 250ms;\n}\n\n.lh-gauge__svg-wrapper {\n position: relative;\n height: var(--gauge-circle-size);\n}\n.lh-category .lh-gauge__svg-wrapper,\n.lh-category .lh-fraction__wrapper {\n --gauge-circle-size: var(--gauge-circle-size-big);\n}\n\n/* The plugin badge overlay */\n.lh-gauge__wrapper--plugin .lh-gauge__svg-wrapper::before {\n width: var(--plugin-badge-size);\n height: var(--plugin-badge-size);\n background-color: var(--plugin-badge-background-color);\n background-image: var(--plugin-icon-url);\n background-repeat: no-repeat;\n background-size: var(--plugin-icon-size);\n background-position: 58% 50%;\n content: "";\n position: absolute;\n right: -6px;\n bottom: 0px;\n display: block;\n z-index: 100;\n box-shadow: 0 0 4px rgba(0,0,0,.2);\n border-radius: 25%;\n}\n.lh-category .lh-gauge__wrapper--plugin .lh-gauge__svg-wrapper::before {\n width: var(--plugin-badge-size-big);\n height: var(--plugin-badge-size-big);\n}\n\n@keyframes load-gauge {\n from { stroke-dasharray: 0 352; }\n}\n\n.lh-gauge__percentage {\n width: 100%;\n height: var(--gauge-circle-size);\n position: absolute;\n font-family: var(--report-font-family-monospace);\n font-size: calc(var(--gauge-circle-size) * 0.34 + 1.3px);\n line-height: 0;\n text-align: center;\n top: calc(var(--score-container-padding) + var(--gauge-circle-size) / 2);\n}\n\n.lh-category .lh-gauge__percentage {\n --gauge-circle-size: var(--gauge-circle-size-big);\n --gauge-percentage-font-size: var(--gauge-percentage-font-size-big);\n}\n\n.lh-gauge__wrapper,\n.lh-fraction__wrapper {\n position: relative;\n display: flex;\n align-items: center;\n flex-direction: column;\n text-decoration: none;\n padding: var(--score-container-padding);\n\n --transition-length: 1s;\n\n /* Contain the layout style paint & layers during animation*/\n contain: content;\n will-change: opacity; /* Only using for layer promotion */\n}\n\n.lh-gauge__label,\n.lh-fraction__label {\n font-size: var(--gauge-label-font-size);\n font-weight: 500;\n line-height: var(--gauge-label-line-height);\n margin-top: 10px;\n text-align: center;\n color: var(--report-text-color);\n word-break: keep-all;\n}\n\n/* TODO(#8185) use more BEM (.lh-gauge__label--big) instead of relying on descendant selector */\n.lh-category .lh-gauge__label,\n.lh-category .lh-fraction__label {\n --gauge-label-font-size: var(--gauge-label-font-size-big);\n --gauge-label-line-height: var(--gauge-label-line-height-big);\n margin-top: 14px;\n}\n\n.lh-scores-header .lh-gauge__wrapper,\n.lh-scores-header .lh-fraction__wrapper,\n.lh-scores-header .lh-gauge--pwa__wrapper,\n.lh-sticky-header .lh-gauge__wrapper,\n.lh-sticky-header .lh-fraction__wrapper,\n.lh-sticky-header .lh-gauge--pwa__wrapper {\n width: var(--gauge-wrapper-width);\n}\n\n.lh-scorescale {\n display: inline-flex;\n\n gap: calc(var(--default-padding) * 4);\n margin: 16px auto 0 auto;\n font-size: var(--report-font-size-secondary);\n color: var(--color-gray-700);\n\n}\n\n.lh-scorescale-range {\n display: flex;\n align-items: center;\n font-family: var(--report-font-family-monospace);\n white-space: nowrap;\n}\n\n.lh-category-header__finalscreenshot .lh-scorescale {\n border: 0;\n display: flex;\n justify-content: center;\n}\n\n.lh-category-header__finalscreenshot .lh-scorescale-range {\n font-family: unset;\n font-size: 12px;\n}\n\n.lh-scorescale-wrap {\n display: contents;\n}\n\n/* Hide category score gauages if it\'s a single category report */\n.lh-header--solo-category .lh-scores-wrapper {\n display: none;\n}\n\n\n.lh-categories {\n width: 100%;\n}\n\n.lh-category {\n padding: var(--category-padding);\n max-width: var(--report-content-max-width);\n margin: 0 auto;\n\n scroll-margin-top: var(--sticky-header-buffer);\n\n /* Faster recalc style & layout of the report. https://web.dev/content-visibility/ */\n content-visibility: auto;\n contain-intrinsic-size: 1000px;\n}\n\n.lh-category-wrapper {\n border-bottom: 1px solid var(--color-gray-200);\n}\n.lh-category-wrapper:last-of-type {\n border-bottom: 0;\n}\n\n.lh-category-header {\n margin-bottom: var(--section-padding-vertical);\n}\n\n.lh-category-header .lh-score__gauge {\n max-width: 400px;\n width: auto;\n margin: 0px auto;\n}\n\n.lh-category-header__finalscreenshot {\n display: grid;\n grid-template: none / 1fr 1px 1fr;\n justify-items: center;\n align-items: center;\n gap: var(--report-line-height);\n min-height: 288px;\n margin-bottom: var(--default-padding);\n}\n\n.lh-final-ss-image {\n /* constrain the size of the image to not be too large */\n max-height: calc(var(--gauge-circle-size-big) * 2.8);\n max-width: calc(var(--gauge-circle-size-big) * 3.5);\n border: 1px solid var(--color-gray-200);\n padding: 4px;\n border-radius: 3px;\n display: block;\n}\n\n.lh-category-headercol--separator {\n background: var(--color-gray-200);\n width: 1px;\n height: var(--gauge-circle-size-big);\n}\n\n@media screen and (max-width: 780px) {\n .lh-category-header__finalscreenshot {\n grid-template: 1fr 1fr / none\n }\n .lh-category-headercol--separator {\n display: none;\n }\n}\n\n\n/* 964 fits the min-width of the filmstrip */\n@media screen and (max-width: 964px) {\n .lh-report {\n margin-left: 0;\n width: 100%;\n }\n}\n\n@media print {\n body {\n -webkit-print-color-adjust: exact; /* print background colors */\n }\n .lh-container {\n display: block;\n }\n .lh-report {\n margin-left: 0;\n padding-top: 0;\n }\n .lh-categories {\n margin-top: 0;\n }\n}\n\n.lh-table {\n position: relative;\n border-collapse: separate;\n border-spacing: 0;\n /* Can\'t assign padding to table, so shorten the width instead. */\n width: calc(100% - var(--audit-description-padding-left) - var(--stackpack-padding-horizontal));\n border: 1px solid var(--report-border-color-secondary);\n}\n\n.lh-table thead th {\n position: sticky;\n top: calc(var(--sticky-header-buffer) + 1em);\n z-index: 1;\n background-color: var(--report-background-color);\n border-bottom: 1px solid var(--report-border-color-secondary);\n font-weight: normal;\n color: var(--color-gray-600);\n /* See text-wrapping comment on .lh-container. */\n word-break: normal;\n}\n\n.lh-row--even {\n background-color: var(--table-higlight-background-color);\n}\n.lh-row--hidden {\n display: none;\n}\n\n.lh-table th,\n.lh-table td {\n padding: var(--default-padding);\n}\n\n.lh-table tr {\n vertical-align: middle;\n}\n\n/* Looks unnecessary, but mostly for keeping the <th>s left-aligned */\n.lh-table-column--text,\n.lh-table-column--source-location,\n.lh-table-column--url,\n/* .lh-table-column--thumbnail, */\n/* .lh-table-column--empty,*/\n.lh-table-column--code,\n.lh-table-column--node {\n text-align: left;\n}\n\n.lh-table-column--code {\n min-width: 100px;\n}\n\n.lh-table-column--bytes,\n.lh-table-column--timespanMs,\n.lh-table-column--ms,\n.lh-table-column--numeric {\n text-align: right;\n word-break: normal;\n}\n\n\n\n.lh-table .lh-table-column--thumbnail {\n width: var(--image-preview-size);\n}\n\n.lh-table-column--url {\n min-width: 250px;\n}\n\n.lh-table-column--text {\n min-width: 80px;\n}\n\n/* Keep columns narrow if they follow the URL column */\n/* 12% was determined to be a decent narrow width, but wide enough for column headings */\n.lh-table-column--url + th.lh-table-column--bytes,\n.lh-table-column--url + .lh-table-column--bytes + th.lh-table-column--bytes,\n.lh-table-column--url + .lh-table-column--ms,\n.lh-table-column--url + .lh-table-column--ms + th.lh-table-column--bytes,\n.lh-table-column--url + .lh-table-column--bytes + th.lh-table-column--timespanMs {\n width: 12%;\n}\n\n.lh-text__url-host {\n display: inline;\n}\n\n.lh-text__url-host {\n margin-left: calc(var(--report-font-size) / 2);\n opacity: 0.6;\n font-size: 90%\n}\n\n.lh-thumbnail {\n object-fit: cover;\n width: var(--image-preview-size);\n height: var(--image-preview-size);\n display: block;\n}\n\n.lh-unknown pre {\n overflow: scroll;\n border: solid 1px var(--color-gray-200);\n}\n\n.lh-text__url > a {\n color: inherit;\n text-decoration: none;\n}\n\n.lh-text__url > a:hover {\n text-decoration: underline dotted #999;\n}\n\n.lh-sub-item-row {\n margin-left: 20px;\n margin-bottom: 0;\n color: var(--color-gray-700);\n}\n.lh-sub-item-row td {\n padding-top: 4px;\n padding-bottom: 4px;\n padding-left: 20px;\n}\n\n/* Chevron\n https://codepen.io/paulirish/pen/LmzEmK\n */\n.lh-chevron {\n --chevron-angle: 42deg;\n /* Edge doesn\'t support transform: rotate(calc(...)), so we define it here */\n --chevron-angle-right: -42deg;\n width: var(--chevron-size);\n height: var(--chevron-size);\n margin-top: calc((var(--report-line-height) - 12px) / 2);\n}\n\n.lh-chevron__lines {\n transition: transform 0.4s;\n transform: translateY(var(--report-line-height));\n}\n.lh-chevron__line {\n stroke: var(--chevron-line-stroke);\n stroke-width: var(--chevron-size);\n stroke-linecap: square;\n transform-origin: 50%;\n transform: rotate(var(--chevron-angle));\n transition: transform 300ms, stroke 300ms;\n}\n\n.lh-expandable-details .lh-chevron__line-right,\n.lh-expandable-details[open] .lh-chevron__line-left {\n transform: rotate(var(--chevron-angle-right));\n}\n\n.lh-expandable-details[open] .lh-chevron__line-right {\n transform: rotate(var(--chevron-angle));\n}\n\n\n.lh-expandable-details[open] .lh-chevron__lines {\n transform: translateY(calc(var(--chevron-size) * -1));\n}\n\n.lh-expandable-details[open] {\n animation: 300ms openDetails forwards;\n padding-bottom: var(--default-padding);\n}\n\n@keyframes openDetails {\n from {\n outline: 1px solid var(--report-background-color);\n }\n to {\n outline: 1px solid;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .24);\n }\n}\n\n@media screen and (max-width: 780px) {\n /* no black outline if we\'re not confident the entire table can be displayed within bounds */\n .lh-expandable-details[open] {\n animation: none;\n }\n}\n\n.lh-expandable-details[open] summary, details.lh-clump > summary {\n border-bottom: 1px solid var(--report-border-color-secondary);\n}\ndetails.lh-clump[open] > summary {\n border-bottom-width: 0;\n}\n\n\n\ndetails .lh-clump-toggletext--hide,\ndetails[open] .lh-clump-toggletext--show { display: none; }\ndetails[open] .lh-clump-toggletext--hide { display: block;}\n\n\n/* Tooltip */\n.lh-tooltip-boundary {\n position: relative;\n}\n\n.lh-tooltip {\n position: absolute;\n display: none; /* Don\'t retain these layers when not needed */\n opacity: 0;\n background: #ffffff;\n white-space: pre-line; /* Render newlines in the text */\n min-width: 246px;\n max-width: 275px;\n padding: 15px;\n border-radius: 5px;\n text-align: initial;\n line-height: 1.4;\n}\n/* shrink tooltips to not be cutoff on left edge of narrow viewports\n 45vw is chosen to be ~= width of the left column of metrics\n*/\n@media screen and (max-width: 535px) {\n .lh-tooltip {\n min-width: 45vw;\n padding: 3vw;\n }\n}\n\n.lh-tooltip-boundary:hover .lh-tooltip {\n display: block;\n animation: fadeInTooltip 250ms;\n animation-fill-mode: forwards;\n animation-delay: 850ms;\n bottom: 100%;\n z-index: 1;\n will-change: opacity;\n right: 0;\n pointer-events: none;\n}\n\n.lh-tooltip::before {\n content: "";\n border: solid transparent;\n border-bottom-color: #fff;\n border-width: 10px;\n position: absolute;\n bottom: -20px;\n right: 6px;\n transform: rotate(180deg);\n pointer-events: none;\n}\n\n@keyframes fadeInTooltip {\n 0% { opacity: 0; }\n 75% { opacity: 1; }\n 100% { opacity: 1; filter: drop-shadow(1px 0px 1px #aaa) drop-shadow(0px 2px 4px hsla(206, 6%, 25%, 0.15)); pointer-events: auto; }\n}\n\n/* Element screenshot */\n.lh-element-screenshot {\n float: left;\n margin-right: 20px;\n}\n.lh-element-screenshot__content {\n overflow: hidden;\n min-width: 110px;\n display: flex;\n justify-content: center;\n background-color: var(--report-background-color);\n}\n.lh-element-screenshot__image {\n position: relative;\n /* Set by ElementScreenshotRenderer.installFullPageScreenshotCssVariable */\n background-image: var(--element-screenshot-url);\n outline: 2px solid #777;\n background-color: white;\n background-repeat: no-repeat;\n}\n.lh-element-screenshot__mask {\n position: absolute;\n background: #555;\n opacity: 0.8;\n}\n.lh-element-screenshot__element-marker {\n position: absolute;\n outline: 2px solid var(--color-lime-400);\n}\n.lh-element-screenshot__overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 2000; /* .lh-topbar is 1000 */\n background: var(--screenshot-overlay-background);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: zoom-out;\n}\n\n.lh-element-screenshot__overlay .lh-element-screenshot {\n margin-right: 0; /* clearing margin used in thumbnail case */\n outline: 1px solid var(--color-gray-700);\n}\n\n.lh-screenshot-overlay--enabled .lh-element-screenshot {\n cursor: zoom-out;\n}\n.lh-screenshot-overlay--enabled .lh-node .lh-element-screenshot {\n cursor: zoom-in;\n}\n\n\n.lh-meta__items {\n --meta-icon-size: calc(var(--report-icon-size) * 0.667);\n padding: var(--default-padding);\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n background-color: var(--env-item-background-color);\n border-radius: 3px;\n margin: 0 0 var(--default-padding) 0;\n font-size: 12px;\n column-gap: var(--default-padding);\n color: var(--color-gray-700);\n}\n\n.lh-meta__item {\n display: block;\n list-style-type: none;\n position: relative;\n padding: 0 0 0 calc(var(--meta-icon-size) + var(--default-padding) * 2);\n cursor: unset; /* disable pointer cursor from report-icon */\n}\n\n.lh-meta__item.lh-tooltip-boundary {\n text-decoration: dotted underline var(--color-gray-500);\n cursor: help;\n}\n\n.lh-meta__item.lh-report-icon::before {\n position: absolute;\n left: var(--default-padding);\n width: var(--meta-icon-size);\n height: var(--meta-icon-size);\n}\n\n.lh-meta__item.lh-report-icon:hover::before {\n opacity: 0.7;\n}\n\n.lh-meta__item .lh-tooltip {\n color: var(--color-gray-800);\n}\n\n.lh-meta__item .lh-tooltip::before {\n right: auto; /* Set the tooltip arrow to the leftside */\n left: 6px;\n}\n\n/* Change the grid for narrow viewport. */\n@media screen and (max-width: 640px) {\n .lh-meta__items {\n grid-template-columns: 1fr 1fr;\n }\n}\n@media screen and (max-width: 535px) {\n .lh-meta__items {\n display: block;\n }\n}\n\n\n/*# sourceURL=report-styles.css */\n'),a.append(n),a}(e);case"topbar":return function(e){const a=e.createFragment(),n=e.createElement("style");n.append("\n .lh-topbar {\n position: sticky;\n top: 0;\n left: 0;\n right: 0;\n z-index: 1000;\n display: flex;\n align-items: center;\n height: var(--topbar-height);\n padding: var(--topbar-padding);\n font-size: var(--report-font-size-secondary);\n background-color: var(--topbar-background-color);\n border-bottom: 1px solid var(--color-gray-200);\n }\n\n .lh-topbar__logo {\n width: var(--topbar-logo-size);\n height: var(--topbar-logo-size);\n user-select: none;\n flex: none;\n }\n\n .lh-topbar__url {\n margin: var(--topbar-padding);\n text-decoration: none;\n color: var(--report-text-color);\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n\n .lh-tools {\n display: flex;\n align-items: center;\n margin-left: auto;\n will-change: transform;\n min-width: var(--report-icon-size);\n }\n .lh-tools__button {\n width: var(--report-icon-size);\n min-width: 24px;\n height: var(--report-icon-size);\n cursor: pointer;\n margin-right: 5px;\n /* This is actually a button element, but we want to style it like a transparent div. */\n display: flex;\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n font: inherit;\n outline: inherit;\n }\n .lh-tools__button svg {\n fill: var(--tools-icon-color);\n }\n .lh-dark .lh-tools__button svg {\n filter: invert(1);\n }\n .lh-tools__button.lh-active + .lh-tools__dropdown {\n opacity: 1;\n clip: rect(-1px, 194px, 242px, -3px);\n visibility: visible;\n }\n .lh-tools__dropdown {\n position: absolute;\n background-color: var(--report-background-color);\n border: 1px solid var(--report-border-color);\n border-radius: 3px;\n padding: calc(var(--default-padding) / 2) 0;\n cursor: pointer;\n top: 36px;\n right: 0;\n box-shadow: 1px 1px 3px #ccc;\n min-width: 125px;\n clip: rect(0, 164px, 0, 0);\n visibility: hidden;\n opacity: 0;\n transition: all 200ms cubic-bezier(0,0,0.2,1);\n }\n .lh-tools__dropdown a {\n color: currentColor;\n text-decoration: none;\n white-space: nowrap;\n padding: 0 6px;\n line-height: 2;\n }\n .lh-tools__dropdown a:hover,\n .lh-tools__dropdown a:focus {\n background-color: var(--color-gray-200);\n outline: none;\n }\n /* save-gist option hidden in report. */\n .lh-tools__dropdown a[data-action='save-gist'] {\n display: none;\n }\n\n .lh-locale-selector {\n width: 100%;\n color: var(--report-text-color);\n background-color: var(--locale-selector-background-color);\n padding: 2px;\n }\n .lh-tools-locale {\n display: flex;\n align-items: center;\n flex-direction: row-reverse;\n }\n .lh-tools-locale__selector-wrapper {\n transition: opacity 0.15s;\n opacity: 0;\n max-width: 200px;\n }\n .lh-button.lh-tool-locale__button {\n height: var(--topbar-height);\n color: var(--tools-icon-color);\n padding: calc(var(--default-padding) / 2);\n }\n .lh-tool-locale__button.lh-active + .lh-tools-locale__selector-wrapper {\n opacity: 1;\n clip: rect(-1px, 194px, 242px, -3px);\n visibility: visible;\n margin: 0 4px;\n }\n\n @media screen and (max-width: 964px) {\n .lh-tools__dropdown {\n right: 0;\n left: initial;\n }\n }\n @media print {\n .lh-topbar {\n position: static;\n margin-left: 0;\n }\n\n .lh-tools__dropdown {\n display: none;\n }\n }\n "),a.append(n);const t=e.createElement("div","lh-topbar"),i=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");i.setAttribute("role","img"),i.setAttribute("title","Lighthouse logo"),i.setAttribute("fill","none"),i.setAttribute("xmlns","http://www.w3.org/2000/svg"),i.setAttribute("viewBox","0 0 48 48");const o=e.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d","m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z"),o.setAttribute("fill","#F63");const r=e.createElementNS("http://www.w3.org/2000/svg","path");r.setAttribute("d","M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z"),r.setAttribute("fill","#FFA385");const s=e.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("fill","#FF3"),s.setAttribute("d","M20.5 10h7v7h-7z"),i.append(" ",o," ",r," ",s," ");const l=e.createElement("a","lh-topbar__url");l.setAttribute("href",""),l.setAttribute("target","_blank"),l.setAttribute("rel","noopener");const p=e.createElement("div","lh-tools"),u=e.createElement("div","lh-tools-locale lh-hidden"),c=e.createElement("button","lh-button lh-tool-locale__button");c.setAttribute("id","lh-button__swap-locales"),c.setAttribute("title","Show Language Picker"),c.setAttribute("aria-label","Toggle language picker"),c.setAttribute("aria-haspopup","menu"),c.setAttribute("aria-expanded","false"),c.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");const d=e.createElementNS("http://www.w3.org/2000/svg","svg");d.setAttribute("width","20px"),d.setAttribute("height","20px"),d.setAttribute("viewBox","0 0 24 24"),d.setAttribute("fill","currentColor");const m=e.createElementNS("http://www.w3.org/2000/svg","path");m.setAttribute("d","M0 0h24v24H0V0z"),m.setAttribute("fill","none");const h=e.createElementNS("http://www.w3.org/2000/svg","path");h.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"),d.append(m,h),c.append(" ",d," ");const g=e.createElement("div","lh-tools-locale__selector-wrapper");g.setAttribute("id","lh-tools-locale__selector-wrapper"),g.setAttribute("role","menu"),g.setAttribute("aria-labelledby","lh-button__swap-locales"),g.setAttribute("aria-hidden","true"),g.append(" "," "),u.append(" ",c," ",g," ");const v=e.createElement("button","lh-tools__button");v.setAttribute("id","lh-tools-button"),v.setAttribute("title","Tools menu"),v.setAttribute("aria-label","Toggle report tools menu"),v.setAttribute("aria-haspopup","menu"),v.setAttribute("aria-expanded","false"),v.setAttribute("aria-controls","lh-tools-dropdown");const f=e.createElementNS("http://www.w3.org/2000/svg","svg");f.setAttribute("width","100%"),f.setAttribute("height","100%"),f.setAttribute("viewBox","0 0 24 24");const b=e.createElementNS("http://www.w3.org/2000/svg","path");b.setAttribute("d","M0 0h24v24H0z"),b.setAttribute("fill","none");const y=e.createElementNS("http://www.w3.org/2000/svg","path");y.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"),f.append(" ",b," ",y," "),v.append(" ",f," ");const _=e.createElement("div","lh-tools__dropdown");_.setAttribute("id","lh-tools-dropdown"),_.setAttribute("role","menu"),_.setAttribute("aria-labelledby","lh-tools-button");const C=e.createElement("a","lh-report-icon lh-report-icon--print");C.setAttribute("role","menuitem"),C.setAttribute("tabindex","-1"),C.setAttribute("href","#"),C.setAttribute("data-i18n","dropdownPrintSummary"),C.setAttribute("data-action","print-summary");const k=e.createElement("a","lh-report-icon lh-report-icon--print");k.setAttribute("role","menuitem"),k.setAttribute("tabindex","-1"),k.setAttribute("href","#"),k.setAttribute("data-i18n","dropdownPrintExpanded"),k.setAttribute("data-action","print-expanded");const w=e.createElement("a","lh-report-icon lh-report-icon--copy");w.setAttribute("role","menuitem"),w.setAttribute("tabindex","-1"),w.setAttribute("href","#"),w.setAttribute("data-i18n","dropdownCopyJSON"),w.setAttribute("data-action","copy");const S=e.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");S.setAttribute("role","menuitem"),S.setAttribute("tabindex","-1"),S.setAttribute("href","#"),S.setAttribute("data-i18n","dropdownSaveHTML"),S.setAttribute("data-action","save-html");const A=e.createElement("a","lh-report-icon lh-report-icon--download");A.setAttribute("role","menuitem"),A.setAttribute("tabindex","-1"),A.setAttribute("href","#"),A.setAttribute("data-i18n","dropdownSaveJSON"),A.setAttribute("data-action","save-json");const P=e.createElement("a","lh-report-icon lh-report-icon--open");P.setAttribute("role","menuitem"),P.setAttribute("tabindex","-1"),P.setAttribute("href","#"),P.setAttribute("data-i18n","dropdownViewer"),P.setAttribute("data-action","open-viewer");const U=e.createElement("a","lh-report-icon lh-report-icon--open");U.setAttribute("role","menuitem"),U.setAttribute("tabindex","-1"),U.setAttribute("href","#"),U.setAttribute("data-i18n","dropdownSaveGist"),U.setAttribute("data-action","save-gist");const x=e.createElement("a","lh-report-icon lh-report-icon--dark");return x.setAttribute("role","menuitem"),x.setAttribute("tabindex","-1"),x.setAttribute("href","#"),x.setAttribute("data-i18n","dropdownDarkTheme"),x.setAttribute("data-action","toggle-dark"),_.append(" ",C," ",k," ",w," "," ",S," ",A," ",P," ",U," ",x," "),p.append(" ",u," ",v," ",_," "),t.append(" "," ",i," ",l," ",p," "),a.append(t),a}(e);case"warningsToplevel":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-warnings lh-warnings--toplevel"),t=e.createElement("p","lh-warnings__msg"),i=e.createElement("ul");return n.append(" ",t," ",i," "),a.append(n),a}(e)}throw new Error("unexpected component: "+a)}(this,e),this._componentCache.set(e,a);return a.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(e){const a=this.createElement("span");for(const n of le.splitMarkdownLink(e)){const e=n.text.includes("`")?this.convertMarkdownCodeSnippets(n.text):n.text;if(!n.isLink){a.append(e);continue}const t=new URL(n.linkHref);["https://developers.google.com","https://web.dev","https://developer.chrome.com"].includes(t.origin)&&(t.searchParams.set("utm_source","lighthouse"),t.searchParams.set("utm_medium",this._lighthouseChannel));const i=this.createElement("a");i.rel="noopener",i.target="_blank",i.append(e),this.safelySetHref(i,t.href),a.append(i)}return a}safelySetHref(e,a){if((a=a||"").startsWith("#"))return void(e.href=a);let n;try{n=new URL(a)}catch(e){}n&&["https:","http:"].includes(n.protocol)&&(e.href=n.href)}safelySetBlobHref(e,a){if("text/html"!==a.type&&"application/json"!==a.type)throw new Error("Unsupported blob type");const n=URL.createObjectURL(a);e.href=n}convertMarkdownCodeSnippets(e){const a=this.createElement("span");for(const n of le.splitMarkdownCodeSpans(e))if(n.isCode){const e=this.createElement("code");e.textContent=n.text,a.append(e)}else a.append(this._document.createTextNode(n.text));return a}setLighthouseChannel(e){this._lighthouseChannel=e}document(){return this._document}isDevTools(){return!!this._document.querySelector(".lh-devtools")}find(e,a){const n=a.querySelector(e);if(null===n)throw new Error(`query ${e} not found`);return n}findAll(e,a){return Array.from(a.querySelectorAll(e))}fireEventOn(e,a=this._document,n){const t=new CustomEvent(e,n?{detail:n}:void 0);a.dispatchEvent(t)}saveFile(e,a){const n=this.createElement("a");n.download=a,this.safelySetBlobHref(n,e),this._document.body.append(n),n.click(),this._document.body.removeChild(n),setTimeout((()=>URL.revokeObjectURL(n.href)),500)}}
|
|
67
|
+
class ka{constructor(e,a){this._document=e,this._lighthouseChannel="unknown",this._componentCache=new Map,this.rootEl=a}createElement(e,a){const n=this._document.createElement(e);if(a)for(const e of a.split(/\s+/))e&&n.classList.add(e);return n}createElementNS(e,a,n){const t=this._document.createElementNS(e,a);if(n)for(const e of n.split(/\s+/))e&&t.classList.add(e);return t}createFragment(){return this._document.createDocumentFragment()}createTextNode(e){return this._document.createTextNode(e)}createChildOf(e,a,n){const t=this.createElement(a,n);return e.append(t),t}createComponent(e){let a=this._componentCache.get(e);if(a){const e=a.cloneNode(!0);return this.findAll("style",e).forEach((e=>e.remove())),e}a=function(e,a){switch(a){case"3pFilter":return function(e){const a=e.createFragment(),n=e.createElement("style");n.append("\n .lh-3p-filter {\n color: var(--color-gray-600);\n float: right;\n padding: 6px var(--stackpack-padding-horizontal);\n }\n .lh-3p-filter-label, .lh-3p-filter-input {\n vertical-align: middle;\n user-select: none;\n }\n .lh-3p-filter-input:disabled + .lh-3p-ui-string {\n text-decoration: line-through;\n }\n "),a.append(n);const t=e.createElement("div","lh-3p-filter"),i=e.createElement("label","lh-3p-filter-label"),o=e.createElement("input","lh-3p-filter-input");o.setAttribute("type","checkbox"),o.setAttribute("checked","");const r=e.createElement("span","lh-3p-ui-string");r.append("Show 3rd party resources");const s=e.createElement("span","lh-3p-filter-count");return i.append(" ",o," ",r," (",s,") "),t.append(" ",i," "),a.append(t),a}(e);case"audit":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-audit"),t=e.createElement("details","lh-expandable-details"),i=e.createElement("summary"),o=e.createElement("div","lh-audit__header lh-expandable-details__summary"),r=e.createElement("span","lh-audit__score-icon"),s=e.createElement("span","lh-audit__title-and-text"),l=e.createElement("span","lh-audit__title"),p=e.createElement("span","lh-audit__display-text");s.append(" ",l," ",p," ");const u=e.createElement("div","lh-chevron-container");o.append(" ",r," ",s," ",u," "),i.append(" ",o," ");const c=e.createElement("div","lh-audit__description"),d=e.createElement("div","lh-audit__stackpacks");return t.append(" ",i," ",c," ",d," "),n.append(" ",t," "),a.append(n),a}(e);case"categoryHeader":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-category-header"),t=e.createElement("div","lh-score__gauge");t.setAttribute("role","heading"),t.setAttribute("aria-level","2");const i=e.createElement("div","lh-category-header__description");return n.append(" ",t," ",i," "),a.append(n),a}(e);case"chevron":return function(e){const a=e.createFragment(),n=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-chevron");n.setAttribute("viewBox","0 0 100 100");const t=e.createElementNS("http://www.w3.org/2000/svg","g","lh-chevron__lines"),i=e.createElementNS("http://www.w3.org/2000/svg","path","lh-chevron__line lh-chevron__line-left");i.setAttribute("d","M10 50h40");const o=e.createElementNS("http://www.w3.org/2000/svg","path","lh-chevron__line lh-chevron__line-right");return o.setAttribute("d","M90 50H50"),t.append(" ",i," ",o," "),n.append(" ",t," "),a.append(n),a}(e);case"clump":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-audit-group"),t=e.createElement("details","lh-clump"),i=e.createElement("summary"),o=e.createElement("div","lh-audit-group__summary"),r=e.createElement("div","lh-audit-group__header"),s=e.createElement("span","lh-audit-group__title"),l=e.createElement("span","lh-audit-group__itemcount");r.append(" ",s," ",l," "," "," ");const p=e.createElement("div","lh-clump-toggle"),u=e.createElement("span","lh-clump-toggletext--show"),c=e.createElement("span","lh-clump-toggletext--hide");return p.append(" ",u," ",c," "),o.append(" ",r," ",p," "),i.append(" ",o," "),t.append(" ",i," "),n.append(" "," ",t," "),a.append(n),a}(e);case"crc":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-crc-container"),t=e.createElement("style");t.append('\n .lh-crc .lh-tree-marker {\n width: 12px;\n height: 26px;\n display: block;\n float: left;\n background-position: top left;\n }\n .lh-crc .lh-horiz-down {\n background: url(\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><g fill="%23D8D8D8" fill-rule="evenodd"><path d="M16 12v2H-2v-2z"/><path d="M9 12v14H7V12z"/></g></svg>\');\n }\n .lh-crc .lh-right {\n background: url(\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M16 12v2H0v-2z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>\');\n }\n .lh-crc .lh-up-right {\n background: url(\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M7 0h2v14H7zm2 12h7v2H9z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>\');\n }\n .lh-crc .lh-vert-right {\n background: url(\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M7 0h2v27H7zm2 12h7v2H9z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>\');\n }\n .lh-crc .lh-vert {\n background: url(\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M7 0h2v26H7z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>\');\n }\n .lh-crc .lh-crc-tree {\n font-size: 14px;\n width: 100%;\n overflow-x: auto;\n }\n .lh-crc .lh-crc-node {\n height: 26px;\n line-height: 26px;\n white-space: nowrap;\n }\n .lh-crc .lh-crc-node__tree-value {\n margin-left: 10px;\n }\n .lh-crc .lh-crc-node__tree-value div {\n display: inline;\n }\n .lh-crc .lh-crc-node__chain-duration {\n font-weight: 700;\n }\n .lh-crc .lh-crc-initial-nav {\n color: #595959;\n font-style: italic;\n }\n .lh-crc__summary-value {\n margin-bottom: 10px;\n }\n ');const i=e.createElement("div"),o=e.createElement("div","lh-crc__summary-value"),r=e.createElement("span","lh-crc__longest_duration_label"),s=e.createElement("b","lh-crc__longest_duration");o.append(" ",r," ",s," "),i.append(" ",o," ");const l=e.createElement("div","lh-crc"),p=e.createElement("div","lh-crc-initial-nav");return l.append(" ",p," "," "),n.append(" ",t," ",i," ",l," "),a.append(n),a}(e);case"crcChain":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-crc-node"),t=e.createElement("span","lh-crc-node__tree-marker"),i=e.createElement("span","lh-crc-node__tree-value");return n.append(" ",t," ",i," "),a.append(n),a}(e);case"elementScreenshot":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-element-screenshot"),t=e.createElement("div","lh-element-screenshot__content"),i=e.createElement("div","lh-element-screenshot__image"),o=e.createElement("div","lh-element-screenshot__mask"),r=e.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttribute("height","0"),r.setAttribute("width","0");const s=e.createElementNS("http://www.w3.org/2000/svg","defs"),l=e.createElementNS("http://www.w3.org/2000/svg","clipPath");l.setAttribute("clipPathUnits","objectBoundingBox"),s.append(" ",l," "," "),r.append(" ",s," "),o.append(" ",r," ");const p=e.createElement("div","lh-element-screenshot__element-marker");return i.append(" ",o," ",p," "),t.append(" ",i," "),n.append(" ",t," "),a.append(n),a}(e);case"footer":return function(e){const a=e.createFragment(),n=e.createElement("style");n.append("\n .lh-footer {\n padding: var(--footer-padding-vertical) calc(var(--default-padding) * 2);\n max-width: var(--report-content-max-width);\n margin: 0 auto;\n }\n .lh-footer .lh-generated {\n text-align: center;\n }\n "),a.append(n);const t=e.createElement("footer","lh-footer"),i=e.createElement("ul","lh-meta__items");i.append(" ");const o=e.createElement("div","lh-generated"),r=e.createElement("b");r.append("Lighthouse");const s=e.createElement("span","lh-footer__version"),l=e.createElement("a","lh-footer__version_issue");return l.setAttribute("href","https://github.com/GoogleChrome/Lighthouse/issues"),l.setAttribute("target","_blank"),l.setAttribute("rel","noopener"),l.append("File an issue"),o.append(" "," Generated by ",r," ",s," | ",l," "),t.append(" ",i," ",o," "),a.append(t),a}(e);case"fraction":return function(e){const a=e.createFragment(),n=e.createElement("a","lh-fraction__wrapper"),t=e.createElement("div","lh-fraction__content-wrapper"),i=e.createElement("div","lh-fraction__content"),o=e.createElement("div","lh-fraction__background");i.append(" ",o," "),t.append(" ",i," ");const r=e.createElement("div","lh-fraction__label");return n.append(" ",t," ",r," "),a.append(n),a}(e);case"gauge":return function(e){const a=e.createFragment(),n=e.createElement("a","lh-gauge__wrapper"),t=e.createElement("div","lh-gauge__svg-wrapper"),i=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-gauge");i.setAttribute("viewBox","0 0 120 120");const o=e.createElementNS("http://www.w3.org/2000/svg","circle","lh-gauge-base");o.setAttribute("r","56"),o.setAttribute("cx","60"),o.setAttribute("cy","60"),o.setAttribute("stroke-width","8");const r=e.createElementNS("http://www.w3.org/2000/svg","circle","lh-gauge-arc");r.setAttribute("r","56"),r.setAttribute("cx","60"),r.setAttribute("cy","60"),r.setAttribute("stroke-width","8"),i.append(" ",o," ",r," "),t.append(" ",i," ");const s=e.createElement("div","lh-gauge__percentage"),l=e.createElement("div","lh-gauge__label");return n.append(" "," ",t," ",s," "," ",l," "),a.append(n),a}(e);case"gaugePwa":return function(e){const a=e.createFragment(),n=e.createElement("style");n.append("\n .lh-gauge--pwa .lh-gauge--pwa__component {\n display: none;\n }\n .lh-gauge--pwa__wrapper:not(.lh-badged--all) .lh-gauge--pwa__logo > path {\n /* Gray logo unless everything is passing. */\n fill: #B0B0B0;\n }\n\n .lh-gauge--pwa__disc {\n fill: var(--color-gray-200);\n }\n\n .lh-gauge--pwa__logo--primary-color {\n fill: #304FFE;\n }\n\n .lh-gauge--pwa__logo--secondary-color {\n fill: #3D3D3D;\n }\n .lh-dark .lh-gauge--pwa__logo--secondary-color {\n fill: #D8B6B6;\n }\n\n /* No passing groups. */\n .lh-gauge--pwa__wrapper:not([class*='lh-badged--']) .lh-gauge--pwa__na-line {\n display: inline;\n }\n /* Just optimized. Same n/a line as no passing groups. */\n .lh-gauge--pwa__wrapper.lh-badged--pwa-optimized:not(.lh-badged--pwa-installable) .lh-gauge--pwa__na-line {\n display: inline;\n }\n\n /* Just installable. */\n .lh-gauge--pwa__wrapper.lh-badged--pwa-installable .lh-gauge--pwa__installable-badge {\n display: inline;\n }\n\n /* All passing groups. */\n .lh-gauge--pwa__wrapper.lh-badged--all .lh-gauge--pwa__check-circle {\n display: inline;\n }\n "),a.append(n);const t=e.createElement("a","lh-gauge__wrapper lh-gauge--pwa__wrapper"),i=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-gauge lh-gauge--pwa");i.setAttribute("viewBox","0 0 60 60");const o=e.createElementNS("http://www.w3.org/2000/svg","defs"),r=e.createElementNS("http://www.w3.org/2000/svg","linearGradient");r.setAttribute("id","lh-gauge--pwa__check-circle__gradient"),r.setAttribute("x1","50%"),r.setAttribute("y1","0%"),r.setAttribute("x2","50%"),r.setAttribute("y2","100%");const s=e.createElementNS("http://www.w3.org/2000/svg","stop");s.setAttribute("stop-color","#00C852"),s.setAttribute("offset","0%");const l=e.createElementNS("http://www.w3.org/2000/svg","stop");l.setAttribute("stop-color","#009688"),l.setAttribute("offset","100%"),r.append(" ",s," ",l," ");const p=e.createElementNS("http://www.w3.org/2000/svg","linearGradient");p.setAttribute("id","lh-gauge--pwa__installable__shadow-gradient"),p.setAttribute("x1","76.056%"),p.setAttribute("x2","24.111%"),p.setAttribute("y1","82.995%"),p.setAttribute("y2","24.735%");const u=e.createElementNS("http://www.w3.org/2000/svg","stop");u.setAttribute("stop-color","#A5D6A7"),u.setAttribute("offset","0%");const c=e.createElementNS("http://www.w3.org/2000/svg","stop");c.setAttribute("stop-color","#80CBC4"),c.setAttribute("offset","100%"),p.append(" ",u," ",c," ");const d=e.createElementNS("http://www.w3.org/2000/svg","g");d.setAttribute("id","lh-gauge--pwa__installable-badge");const m=e.createElementNS("http://www.w3.org/2000/svg","circle");m.setAttribute("fill","#FFFFFF"),m.setAttribute("cx","10"),m.setAttribute("cy","10"),m.setAttribute("r","10");const h=e.createElementNS("http://www.w3.org/2000/svg","path");h.setAttribute("fill","#009688"),h.setAttribute("d","M10 4.167A5.835 5.835 0 0 0 4.167 10 5.835 5.835 0 0 0 10 15.833 5.835 5.835 0 0 0 15.833 10 5.835 5.835 0 0 0 10 4.167zm2.917 6.416h-2.334v2.334H9.417v-2.334H7.083V9.417h2.334V7.083h1.166v2.334h2.334v1.166z"),d.append(" ",m," ",h," "),o.append(" ",r," ",p," ",d," ");const g=e.createElementNS("http://www.w3.org/2000/svg","g");g.setAttribute("stroke","none"),g.setAttribute("fill-rule","nonzero");const v=e.createElementNS("http://www.w3.org/2000/svg","circle","lh-gauge--pwa__disc");v.setAttribute("cx","30"),v.setAttribute("cy","30"),v.setAttribute("r","30");const f=e.createElementNS("http://www.w3.org/2000/svg","g","lh-gauge--pwa__logo"),b=e.createElementNS("http://www.w3.org/2000/svg","path","lh-gauge--pwa__logo--secondary-color");b.setAttribute("d","M35.66 19.39l.7-1.75h2L37.4 15 38.6 12l3.4 9h-2.51l-.58-1.61z");const y=e.createElementNS("http://www.w3.org/2000/svg","path","lh-gauge--pwa__logo--primary-color");y.setAttribute("d","M33.52 21l3.65-9h-2.42l-2.5 5.82L30.5 12h-1.86l-1.9 5.82-1.35-2.65-1.21 3.72L25.4 21h2.38l1.72-5.2 1.64 5.2z");const _=e.createElementNS("http://www.w3.org/2000/svg","path","lh-gauge--pwa__logo--secondary-color");_.setAttribute("fill-rule","nonzero"),_.setAttribute("d","M20.3 17.91h1.48c.45 0 .85-.05 1.2-.15l.39-1.18 1.07-3.3a2.64 2.64 0 0 0-.28-.37c-.55-.6-1.36-.91-2.42-.91H18v9h2.3V17.9zm1.96-3.84c.22.22.33.5.33.87 0 .36-.1.65-.29.87-.2.23-.59.35-1.15.35h-.86v-2.41h.87c.52 0 .89.1 1.1.32z"),f.append(" ",b," ",y," ",_," ");const C=e.createElementNS("http://www.w3.org/2000/svg","rect","lh-gauge--pwa__component lh-gauge--pwa__na-line");C.setAttribute("fill","#FFFFFF"),C.setAttribute("x","20"),C.setAttribute("y","32"),C.setAttribute("width","20"),C.setAttribute("height","4"),C.setAttribute("rx","2");const k=e.createElementNS("http://www.w3.org/2000/svg","g","lh-gauge--pwa__component lh-gauge--pwa__installable-badge");k.setAttribute("transform","translate(20, 29)");const w=e.createElementNS("http://www.w3.org/2000/svg","path");w.setAttribute("fill","url(#lh-gauge--pwa__installable__shadow-gradient)"),w.setAttribute("d","M33.629 19.487c-4.272 5.453-10.391 9.39-17.415 10.869L3 17.142 17.142 3 33.63 19.487z");const S=e.createElementNS("http://www.w3.org/2000/svg","use");S.setAttribute("href","#lh-gauge--pwa__installable-badge"),k.append(" ",w," ",S," ");const A=e.createElementNS("http://www.w3.org/2000/svg","g","lh-gauge--pwa__component lh-gauge--pwa__check-circle");A.setAttribute("transform","translate(18, 28)");const P=e.createElementNS("http://www.w3.org/2000/svg","circle");P.setAttribute("fill","#FFFFFF"),P.setAttribute("cx","12"),P.setAttribute("cy","12"),P.setAttribute("r","12");const U=e.createElementNS("http://www.w3.org/2000/svg","path");U.setAttribute("fill","url(#lh-gauge--pwa__check-circle__gradient)"),U.setAttribute("d","M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"),A.append(" ",P," ",U," "),g.append(" "," ",v," ",f," "," ",C," "," ",k," "," ",A," "),i.append(" ",o," ",g," ");const x=e.createElement("div","lh-gauge__label");return t.append(" ",i," ",x," "),a.append(t),a}(e);case"heading":return function(e){const a=e.createFragment(),n=e.createElement("style");n.append("\n /* CSS Fireworks. Originally by Eddie Lin\n https://codepen.io/paulirish/pen/yEVMbP\n */\n .lh-pyro {\n display: none;\n z-index: 1;\n pointer-events: none;\n }\n .lh-score100 .lh-pyro {\n display: block;\n }\n .lh-score100 .lh-lighthouse stop:first-child {\n stop-color: hsla(200, 12%, 95%, 0);\n }\n .lh-score100 .lh-lighthouse stop:last-child {\n stop-color: hsla(65, 81%, 76%, 1);\n }\n\n .lh-pyro > .lh-pyro-before, .lh-pyro > .lh-pyro-after {\n position: absolute;\n width: 5px;\n height: 5px;\n border-radius: 2.5px;\n box-shadow: 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff;\n animation: 1s bang ease-out infinite backwards, 1s gravity ease-in infinite backwards, 5s position linear infinite backwards;\n animation-delay: 1s, 1s, 1s;\n }\n\n .lh-pyro > .lh-pyro-after {\n animation-delay: 2.25s, 2.25s, 2.25s;\n animation-duration: 1.25s, 1.25s, 6.25s;\n }\n\n @keyframes bang {\n to {\n box-shadow: -70px -115.67px #47ebbc, -28px -99.67px #eb47a4, 58px -31.67px #7eeb47, 13px -141.67px #eb47c5, -19px 6.33px #7347eb, -2px -74.67px #ebd247, 24px -151.67px #eb47e0, 57px -138.67px #b4eb47, -51px -104.67px #479eeb, 62px 8.33px #ebcf47, -93px 0.33px #d547eb, -16px -118.67px #47bfeb, 53px -84.67px #47eb83, 66px -57.67px #eb47bf, -93px -65.67px #91eb47, 30px -13.67px #86eb47, -2px -59.67px #83eb47, -44px 1.33px #eb47eb, 61px -58.67px #47eb73, 5px -22.67px #47e8eb, -66px -28.67px #ebe247, 42px -123.67px #eb5547, -75px 26.33px #7beb47, 15px -52.67px #a147eb, 36px -51.67px #eb8347, -38px -12.67px #eb5547, -46px -59.67px #47eb81, 78px -114.67px #eb47ba, 15px -156.67px #eb47bf, -36px 1.33px #eb4783, -72px -86.67px #eba147, 31px -46.67px #ebe247, -68px 29.33px #47e2eb, -55px 19.33px #ebe047, -56px 27.33px #4776eb, -13px -91.67px #eb5547, -47px -138.67px #47ebc7, -18px -96.67px #eb47ac, 11px -88.67px #4783eb, -67px -28.67px #47baeb, 53px 10.33px #ba47eb, 11px 19.33px #5247eb, -5px -11.67px #eb4791, -68px -4.67px #47eba7, 95px -37.67px #eb478b, -67px -162.67px #eb5d47, -54px -120.67px #eb6847, 49px -12.67px #ebe047, 88px 8.33px #47ebda, 97px 33.33px #eb8147, 6px -71.67px #ebbc47;\n }\n }\n @keyframes gravity {\n to {\n transform: translateY(80px);\n opacity: 0;\n }\n }\n @keyframes position {\n 0%, 19.9% {\n margin-top: 4%;\n margin-left: 47%;\n }\n 20%, 39.9% {\n margin-top: 7%;\n margin-left: 30%;\n }\n 40%, 59.9% {\n margin-top: 6%;\n margin-left: 70%;\n }\n 60%, 79.9% {\n margin-top: 3%;\n margin-left: 20%;\n }\n 80%, 99.9% {\n margin-top: 3%;\n margin-left: 80%;\n }\n }\n "),a.append(n);const t=e.createElement("div","lh-header-container"),i=e.createElement("div","lh-scores-wrapper-placeholder");return t.append(" ",i," "),a.append(t),a}(e);case"metric":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-metric"),t=e.createElement("div","lh-metric__innerwrap"),i=e.createElement("div","lh-metric__icon"),o=e.createElement("span","lh-metric__title"),r=e.createElement("div","lh-metric__value"),s=e.createElement("div","lh-metric__description");return t.append(" ",i," ",o," ",r," ",s," "),n.append(" ",t," "),a.append(n),a}(e);case"opportunity":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-audit lh-audit--load-opportunity"),t=e.createElement("details","lh-expandable-details"),i=e.createElement("summary"),o=e.createElement("div","lh-audit__header"),r=e.createElement("div","lh-load-opportunity__cols"),s=e.createElement("div","lh-load-opportunity__col lh-load-opportunity__col--one"),l=e.createElement("span","lh-audit__score-icon"),p=e.createElement("div","lh-audit__title");s.append(" ",l," ",p," ");const u=e.createElement("div","lh-load-opportunity__col lh-load-opportunity__col--two"),c=e.createElement("div","lh-load-opportunity__sparkline"),d=e.createElement("div","lh-sparkline"),m=e.createElement("div","lh-sparkline__bar");d.append(m),c.append(" ",d," ");const h=e.createElement("div","lh-audit__display-text"),g=e.createElement("div","lh-chevron-container");u.append(" ",c," ",h," ",g," "),r.append(" ",s," ",u," "),o.append(" ",r," "),i.append(" ",o," ");const v=e.createElement("div","lh-audit__description"),f=e.createElement("div","lh-audit__stackpacks");return t.append(" ",i," ",v," ",f," "),n.append(" ",t," "),a.append(n),a}(e);case"opportunityHeader":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-load-opportunity__header lh-load-opportunity__cols"),t=e.createElement("div","lh-load-opportunity__col lh-load-opportunity__col--one"),i=e.createElement("div","lh-load-opportunity__col lh-load-opportunity__col--two");return n.append(" ",t," ",i," "),a.append(n),a}(e);case"scorescale":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-scorescale"),t=e.createElement("span","lh-scorescale-range lh-scorescale-range--fail");t.append("0–49");const i=e.createElement("span","lh-scorescale-range lh-scorescale-range--average");i.append("50–89");const o=e.createElement("span","lh-scorescale-range lh-scorescale-range--pass");return o.append("90–100"),n.append(" ",t," ",i," ",o," "),a.append(n),a}(e);case"scoresWrapper":return function(e){const a=e.createFragment(),n=e.createElement("style");n.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 "),a.append(n);const t=e.createElement("div","lh-scores-wrapper"),i=e.createElement("div","lh-scores-container"),o=e.createElement("div","lh-pyro"),r=e.createElement("div","lh-pyro-before"),s=e.createElement("div","lh-pyro-after");return o.append(" ",r," ",s," "),i.append(" ",o," "),t.append(" ",i," "),a.append(t),a}(e);case"snippet":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-snippet"),t=e.createElement("style");return t.append('\n :root {\n --snippet-highlight-light: #fbf1f2;\n --snippet-highlight-dark: #ffd6d8;\n }\n\n .lh-snippet__header {\n position: relative;\n overflow: hidden;\n padding: 10px;\n border-bottom: none;\n color: var(--snippet-color);\n background-color: var(--snippet-background-color);\n border: 1px solid var(--report-border-color-secondary);\n }\n .lh-snippet__title {\n font-weight: bold;\n float: left;\n }\n .lh-snippet__node {\n float: left;\n margin-left: 4px;\n }\n .lh-snippet__toggle-expand {\n padding: 1px 7px;\n margin-top: -1px;\n margin-right: -7px;\n float: right;\n background: transparent;\n border: none;\n cursor: pointer;\n font-size: 14px;\n color: #0c50c7;\n }\n\n .lh-snippet__snippet {\n overflow: auto;\n border: 1px solid var(--report-border-color-secondary);\n }\n /* Container needed so that all children grow to the width of the scroll container */\n .lh-snippet__snippet-inner {\n display: inline-block;\n min-width: 100%;\n }\n\n .lh-snippet:not(.lh-snippet--expanded) .lh-snippet__show-if-expanded {\n display: none;\n }\n .lh-snippet.lh-snippet--expanded .lh-snippet__show-if-collapsed {\n display: none;\n }\n\n .lh-snippet__line {\n background: white;\n white-space: pre;\n display: flex;\n }\n .lh-snippet__line:not(.lh-snippet__line--message):first-child {\n padding-top: 4px;\n }\n .lh-snippet__line:not(.lh-snippet__line--message):last-child {\n padding-bottom: 4px;\n }\n .lh-snippet__line--content-highlighted {\n background: var(--snippet-highlight-dark);\n }\n .lh-snippet__line--message {\n background: var(--snippet-highlight-light);\n }\n .lh-snippet__line--message .lh-snippet__line-number {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n .lh-snippet__line--message code {\n padding: 10px;\n padding-left: 5px;\n color: var(--color-fail);\n font-family: var(--report-font-family);\n }\n .lh-snippet__line--message code {\n white-space: normal;\n }\n .lh-snippet__line-icon {\n padding-top: 10px;\n display: none;\n }\n .lh-snippet__line--message .lh-snippet__line-icon {\n display: block;\n }\n .lh-snippet__line-icon:before {\n content: "";\n display: inline-block;\n vertical-align: middle;\n margin-right: 4px;\n width: var(--score-icon-size);\n height: var(--score-icon-size);\n background-image: var(--fail-icon-url);\n }\n .lh-snippet__line-number {\n flex-shrink: 0;\n width: 40px;\n text-align: right;\n font-family: monospace;\n padding-right: 5px;\n margin-right: 5px;\n color: var(--color-gray-600);\n user-select: none;\n }\n '),n.append(" ",t," "),a.append(n),a}(e);case"snippetContent":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-snippet__snippet"),t=e.createElement("div","lh-snippet__snippet-inner");return n.append(" ",t," "),a.append(n),a}(e);case"snippetHeader":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-snippet__header"),t=e.createElement("div","lh-snippet__title"),i=e.createElement("div","lh-snippet__node"),o=e.createElement("button","lh-snippet__toggle-expand"),r=e.createElement("span","lh-snippet__btn-label-collapse lh-snippet__show-if-expanded"),s=e.createElement("span","lh-snippet__btn-label-expand lh-snippet__show-if-collapsed");return o.append(" ",r," ",s," "),n.append(" ",t," ",i," ",o," "),a.append(n),a}(e);case"snippetLine":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-snippet__line"),t=e.createElement("div","lh-snippet__line-number"),i=e.createElement("div","lh-snippet__line-icon"),o=e.createElement("code");return n.append(" ",t," ",i," ",o," "),a.append(n),a}(e);case"styles":return function(e){const a=e.createFragment(),n=e.createElement("style");return n.append('/**\n * @license\n * Copyright 2017 The Lighthouse Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS-IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n Naming convention:\n\n If a variable is used for a specific component: --{component}-{property name}-{modifier}\n\n Both {component} and {property name} should be kebab-case. If the target is the entire page,\n use \'report\' for the component. The property name should not be abbreviated. Use the\n property name the variable is intended for - if it\'s used for multiple, a common descriptor\n is fine (ex: \'size\' for a variable applied to \'width\' and \'height\'). If a variable is shared\n across multiple components, either create more variables or just drop the "{component}-"\n part of the name. Append any modifiers at the end (ex: \'big\', \'dark\').\n\n For colors: --color-{hue}-{intensity}\n\n {intensity} is the Material Design tag - 700, A700, etc.\n*/\n.lh-vars {\n /* Palette using Material Design Colors\n * https://www.materialui.co/colors */\n --color-amber-50: #FFF8E1;\n --color-blue-200: #90CAF9;\n --color-blue-900: #0D47A1;\n --color-blue-A700: #2962FF;\n --color-blue-primary: #06f;\n --color-cyan-500: #00BCD4;\n --color-gray-100: #F5F5F5;\n --color-gray-300: #CFCFCF;\n --color-gray-200: #E0E0E0;\n --color-gray-400: #BDBDBD;\n --color-gray-50: #FAFAFA;\n --color-gray-500: #9E9E9E;\n --color-gray-600: #757575;\n --color-gray-700: #616161;\n --color-gray-800: #424242;\n --color-gray-900: #212121;\n --color-gray: #000000;\n --color-green-700: #080;\n --color-green: #0c6;\n --color-lime-400: #D3E156;\n --color-orange-50: #FFF3E0;\n --color-orange-700: #C33300;\n --color-orange: #fa3;\n --color-red-700: #c00;\n --color-red: #f33;\n --color-teal-600: #00897B;\n --color-white: #FFFFFF;\n\n /* Context-specific colors */\n --color-average-secondary: var(--color-orange-700);\n --color-average: var(--color-orange);\n --color-fail-secondary: var(--color-red-700);\n --color-fail: var(--color-red);\n --color-hover: var(--color-gray-50);\n --color-informative: var(--color-blue-900);\n --color-pass-secondary: var(--color-green-700);\n --color-pass: var(--color-green);\n --color-not-applicable: var(--color-gray-600);\n\n /* Component variables */\n --audit-description-padding-left: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right));\n --audit-explanation-line-height: 16px;\n --audit-group-margin-bottom: calc(var(--default-padding) * 6);\n --audit-group-padding-vertical: 8px;\n --audit-margin-horizontal: 5px;\n --audit-padding-vertical: 8px;\n --category-padding: calc(var(--default-padding) * 6) var(--edge-gap-padding) calc(var(--default-padding) * 4);\n --chevron-line-stroke: var(--color-gray-600);\n --chevron-size: 12px;\n --default-padding: 8px;\n --edge-gap-padding: calc(var(--default-padding) * 4);\n --env-item-background-color: var(--color-gray-100);\n --env-item-font-size: 28px;\n --env-item-line-height: 36px;\n --env-item-padding: 10px 0px;\n --env-name-min-width: 220px;\n --footer-padding-vertical: 16px;\n --gauge-circle-size-big: 96px;\n --gauge-circle-size: 48px;\n --gauge-circle-size-sm: 32px;\n --gauge-label-font-size-big: 18px;\n --gauge-label-font-size: var(--report-font-size-secondary);\n --gauge-label-line-height-big: 24px;\n --gauge-label-line-height: var(--report-line-height-secondary);\n --gauge-percentage-font-size-big: 38px;\n --gauge-percentage-font-size: var(--report-font-size-secondary);\n --gauge-wrapper-width: 120px;\n --header-line-height: 24px;\n --highlighter-background-color: var(--report-text-color);\n --icon-square-size: calc(var(--score-icon-size) * 0.88);\n --image-preview-size: 48px;\n --link-color: var(--color-blue-primary);\n --locale-selector-background-color: var(--color-white);\n --metric-toggle-lines-fill: #7F7F7F;\n --metric-value-font-size: calc(var(--report-font-size) * 1.8);\n --metrics-toggle-background-color: var(--color-gray-200);\n --plugin-badge-background-color: var(--color-white);\n --plugin-badge-size-big: calc(var(--gauge-circle-size-big) / 2.7);\n --plugin-badge-size: calc(var(--gauge-circle-size) / 2.7);\n --plugin-icon-size: 65%;\n --pwa-icon-margin: 0 var(--default-padding);\n --pwa-icon-size: var(--topbar-logo-size);\n --report-background-color: #fff;\n --report-border-color-secondary: #ebebeb;\n --report-font-family-monospace: \'Roboto Mono\', \'Menlo\', \'dejavu sans mono\', \'Consolas\', \'Lucida Console\', monospace;\n --report-font-family: Roboto, Helvetica, Arial, sans-serif;\n --report-font-size: 14px;\n --report-font-size-secondary: 12px;\n --report-icon-size: var(--score-icon-background-size);\n --report-line-height: 24px;\n --report-line-height-secondary: 20px;\n --report-monospace-font-size: calc(var(--report-font-size) * 0.85);\n --report-text-color-secondary: var(--color-gray-800);\n --report-text-color: var(--color-gray-900);\n --report-content-max-width: calc(60 * var(--report-font-size)); /* defaults to 840px */\n --report-content-min-width: 360px;\n --report-content-max-width-minus-edge-gap: calc(var(--report-content-max-width) - var(--edge-gap-padding) * 2);\n --score-container-padding: 8px;\n --score-icon-background-size: 24px;\n --score-icon-margin-left: 6px;\n --score-icon-margin-right: 14px;\n --score-icon-margin: 0 var(--score-icon-margin-right) 0 var(--score-icon-margin-left);\n --score-icon-size: 12px;\n --score-icon-size-big: 16px;\n --screenshot-overlay-background: rgba(0, 0, 0, 0.3);\n --section-padding-vertical: calc(var(--default-padding) * 6);\n --snippet-background-color: var(--color-gray-50);\n --snippet-color: #0938C2;\n --sparkline-height: 5px;\n --stackpack-padding-horizontal: 10px;\n --sticky-header-background-color: var(--report-background-color);\n --sticky-header-buffer: calc(var(--topbar-height) + var(--sticky-header-height));\n --sticky-header-height: calc(var(--gauge-circle-size-sm) + var(--score-container-padding) * 2);\n --table-group-header-background-color: #EEF1F4;\n --table-group-header-text-color: var(--color-gray-700);\n --table-higlight-background-color: #F5F7FA;\n --tools-icon-color: var(--color-gray-600);\n --topbar-background-color: var(--color-white);\n --topbar-height: 32px;\n --topbar-logo-size: 24px;\n --topbar-padding: 0 8px;\n --toplevel-warning-background-color: hsla(30, 100%, 75%, 10%);\n --toplevel-warning-message-text-color: var(--color-average-secondary);\n --toplevel-warning-padding: 18px;\n --toplevel-warning-text-color: var(--report-text-color);\n\n /* SVGs */\n --plugin-icon-url-dark: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="%23FFFFFF"><path d="M0 0h24v24H0z" fill="none"/><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/></svg>\');\n --plugin-icon-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="%23757575"><path d="M0 0h24v24H0z" fill="none"/><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/></svg>\');\n\n --pass-icon-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>check</title><path fill="%23178239" d="M24 4C12.95 4 4 12.95 4 24c0 11.04 8.95 20 20 20 11.04 0 20-8.96 20-20 0-11.05-8.96-20-20-20zm-4 30L10 24l2.83-2.83L20 28.34l15.17-15.17L38 16 20 34z"/></svg>\');\n --average-icon-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>info</title><path fill="%23E67700" d="M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm2 30h-4V22h4v12zm0-16h-4v-4h4v4z"/></svg>\');\n --fail-icon-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>warn</title><path fill="%23C7221F" d="M2 42h44L24 4 2 42zm24-6h-4v-4h4v4zm0-8h-4v-8h4v8z"/></svg>\');\n\n --pwa-installable-gray-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="nonzero"><circle fill="%23DAE0E3" cx="12" cy="12" r="12"/><path d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm3.5 7.7h-2.8v2.8h-1.4v-2.8H8.5v-1.4h2.8V8.5h1.4v2.8h2.8v1.4z" fill="%23FFF"/></g></svg>\');\n --pwa-optimized-gray-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect fill="%23DAE0E3" width="24" height="24" rx="12"/><path fill="%23FFF" d="M12 15.07l3.6 2.18-.95-4.1 3.18-2.76-4.2-.36L12 6.17l-1.64 3.86-4.2.36 3.2 2.76-.96 4.1z"/><path d="M5 5h14v14H5z"/></g></svg>\');\n\n --pwa-installable-gray-url-dark: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="nonzero"><circle fill="%23424242" cx="12" cy="12" r="12"/><path d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm3.5 7.7h-2.8v2.8h-1.4v-2.8H8.5v-1.4h2.8V8.5h1.4v2.8h2.8v1.4z" fill="%23FFF"/></g></svg>\');\n --pwa-optimized-gray-url-dark: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect fill="%23424242" width="24" height="24" rx="12"/><path fill="%23FFF" d="M12 15.07l3.6 2.18-.95-4.1 3.18-2.76-4.2-.36L12 6.17l-1.64 3.86-4.2.36 3.2 2.76-.96 4.1z"/><path d="M5 5h14v14H5z"/></g></svg>\');\n\n --pwa-installable-color-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero" fill="none"><circle fill="%230CCE6B" cx="12" cy="12" r="12"/><path d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm3.5 7.7h-2.8v2.8h-1.4v-2.8H8.5v-1.4h2.8V8.5h1.4v2.8h2.8v1.4z" fill="%23FFF"/></g></svg>\');\n --pwa-optimized-color-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect fill="%230CCE6B" width="24" height="24" rx="12"/><path d="M5 5h14v14H5z"/><path fill="%23FFF" d="M12 15.07l3.6 2.18-.95-4.1 3.18-2.76-4.2-.36L12 6.17l-1.64 3.86-4.2.36 3.2 2.76-.96 4.1z"/></g></svg>\');\n\n --swap-locale-icon-url: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path 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"/></svg>\');\n}\n\n@media not print {\n .lh-dark {\n /* Pallete */\n --color-gray-200: var(--color-gray-800);\n --color-gray-300: #616161;\n --color-gray-400: var(--color-gray-600);\n --color-gray-700: var(--color-gray-400);\n --color-gray-50: #757575;\n --color-gray-600: var(--color-gray-500);\n --color-green-700: var(--color-green);\n --color-orange-700: var(--color-orange);\n --color-red-700: var(--color-red);\n --color-teal-600: var(--color-cyan-500);\n\n /* Context-specific colors */\n --color-hover: rgba(0, 0, 0, 0.2);\n --color-informative: var(--color-blue-200);\n\n /* Component variables */\n --env-item-background-color: #393535;\n --link-color: var(--color-blue-200);\n --locale-selector-background-color: var(--color-gray-200);\n --plugin-badge-background-color: var(--color-gray-800);\n --report-background-color: var(--color-gray-900);\n --report-border-color-secondary: var(--color-gray-200);\n --report-text-color-secondary: var(--color-gray-400);\n --report-text-color: var(--color-gray-100);\n --snippet-color: var(--color-cyan-500);\n --topbar-background-color: var(--color-gray);\n --toplevel-warning-background-color: hsl(33deg 14% 18%);\n --toplevel-warning-message-text-color: var(--color-orange-700);\n --toplevel-warning-text-color: var(--color-gray-100);\n --table-group-header-background-color: rgba(186, 196, 206, 0.15);\n --table-group-header-text-color: var(--color-gray-100);\n --table-higlight-background-color: rgba(186, 196, 206, 0.09);\n\n /* SVGs */\n --plugin-icon-url: var(--plugin-icon-url-dark);\n --pwa-installable-gray-url: var(--pwa-installable-gray-url-dark);\n --pwa-optimized-gray-url: var(--pwa-optimized-gray-url-dark);\n }\n}\n\n@media only screen and (max-width: 480px) {\n .lh-vars {\n --audit-group-margin-bottom: 20px;\n --edge-gap-padding: var(--default-padding);\n --env-name-min-width: 120px;\n --gauge-circle-size-big: 96px;\n --gauge-circle-size: 72px;\n --gauge-label-font-size-big: 22px;\n --gauge-label-font-size: 14px;\n --gauge-label-line-height-big: 26px;\n --gauge-label-line-height: 20px;\n --gauge-percentage-font-size-big: 34px;\n --gauge-percentage-font-size: 26px;\n --gauge-wrapper-width: 112px;\n --header-padding: 16px 0 16px 0;\n --image-preview-size: 24px;\n --plugin-icon-size: 75%;\n --pwa-icon-margin: 0 7px 0 -3px;\n --report-font-size: 14px;\n --report-line-height: 20px;\n --score-icon-margin-left: 2px;\n --score-icon-size: 10px;\n --topbar-height: 28px;\n --topbar-logo-size: 20px;\n }\n\n /* Not enough space to adequately show the relative savings bars. */\n .lh-sparkline {\n display: none;\n }\n}\n\n.lh-vars.lh-devtools {\n --audit-explanation-line-height: 14px;\n --audit-group-margin-bottom: 20px;\n --audit-group-padding-vertical: 12px;\n --audit-padding-vertical: 4px;\n --category-padding: 12px;\n --default-padding: 12px;\n --env-name-min-width: 120px;\n --footer-padding-vertical: 8px;\n --gauge-circle-size-big: 72px;\n --gauge-circle-size: 64px;\n --gauge-label-font-size-big: 22px;\n --gauge-label-font-size: 14px;\n --gauge-label-line-height-big: 26px;\n --gauge-label-line-height: 20px;\n --gauge-percentage-font-size-big: 34px;\n --gauge-percentage-font-size: 26px;\n --gauge-wrapper-width: 97px;\n --header-line-height: 20px;\n --header-padding: 16px 0 16px 0;\n --screenshot-overlay-background: transparent;\n --plugin-icon-size: 75%;\n --pwa-icon-margin: 0 7px 0 -3px;\n --report-font-family-monospace: \'Menlo\', \'dejavu sans mono\', \'Consolas\', \'Lucida Console\', monospace;\n --report-font-family: \'.SFNSDisplay-Regular\', \'Helvetica Neue\', \'Lucida Grande\', sans-serif;\n --report-font-size: 12px;\n --report-line-height: 20px;\n --score-icon-margin-left: 2px;\n --score-icon-size: 10px;\n --section-padding-vertical: 8px;\n}\n\n.lh-container:not(.lh-topbar + .lh-container) {\n --topbar-height: 0;\n --sticky-header-height: 0;\n --sticky-header-buffer: 0;\n}\n\n.lh-devtools.lh-root {\n height: 100%;\n}\n.lh-devtools.lh-root img {\n /* Override devtools default \'min-width: 0\' so svg without size in a flexbox isn\'t collapsed. */\n min-width: auto;\n}\n.lh-devtools .lh-container {\n overflow-y: scroll;\n height: calc(100% - var(--topbar-height));\n /** The .lh-container is the scroll parent in DevTools so we exclude the topbar from the sticky header buffer. */\n --sticky-header-buffer: calc(var(--sticky-header-height));\n}\n@media print {\n .lh-devtools .lh-container {\n overflow: unset;\n }\n}\n.lh-devtools .lh-sticky-header {\n /* This is normally the height of the topbar, but we want it to stick to the top of our scroll container .lh-container` */\n top: 0;\n}\n.lh-devtools .lh-element-screenshot__overlay {\n position: absolute;\n}\n\n@keyframes fadeIn {\n 0% { opacity: 0;}\n 100% { opacity: 0.6;}\n}\n\n.lh-root *, .lh-root *::before, .lh-root *::after {\n box-sizing: border-box;\n}\n\n.lh-root {\n font-family: var(--report-font-family);\n font-size: var(--report-font-size);\n margin: 0;\n line-height: var(--report-line-height);\n background: var(--report-background-color);\n color: var(--report-text-color);\n}\n\n.lh-root :focus-visible {\n outline: -webkit-focus-ring-color auto 3px;\n}\n.lh-root summary:focus {\n outline: none;\n box-shadow: 0 0 0 1px hsl(217, 89%, 61%);\n}\n\n.lh-root [hidden] {\n display: none !important;\n}\n\n.lh-root pre {\n margin: 0;\n}\n\n.lh-root pre,\n.lh-root code {\n font-family: var(--report-font-family-monospace);\n}\n\n.lh-root details > summary {\n cursor: pointer;\n}\n\n.lh-hidden {\n display: none !important;\n}\n\n.lh-container {\n /*\n Text wrapping in the report is so much FUN!\n We have a `word-break: break-word;` globally here to prevent a few common scenarios, namely\n long non-breakable text (usually URLs) found in:\n 1. The footer\n 2. .lh-node (outerHTML)\n 3. .lh-code\n\n With that sorted, the next challenge is appropriate column sizing and text wrapping inside our\n .lh-details tables. Even more fun.\n * We don\'t want table headers ("Potential Savings (ms)") to wrap or their column values, but\n we\'d be happy for the URL column to wrap if the URLs are particularly long.\n * We want the narrow columns to remain narrow, providing the most column width for URL\n * We don\'t want the table to extend past 100% width.\n * Long URLs in the URL column can wrap. Util.getURLDisplayName maxes them out at 64 characters,\n but they do not get any overflow:ellipsis treatment.\n */\n word-break: break-word;\n}\n\n.lh-audit-group a,\n.lh-category-header__description a,\n.lh-audit__description a,\n.lh-warnings a,\n.lh-footer a,\n.lh-table-column--link a {\n color: var(--link-color);\n}\n\n.lh-audit__description, .lh-audit__stackpack {\n --inner-audit-padding-right: var(--stackpack-padding-horizontal);\n padding-left: var(--audit-description-padding-left);\n padding-right: var(--inner-audit-padding-right);\n padding-top: 8px;\n padding-bottom: 8px;\n}\n\n.lh-details {\n margin-top: var(--default-padding);\n margin-bottom: var(--default-padding);\n margin-left: var(--audit-description-padding-left);\n /* whatever the .lh-details side margins are */\n width: 100%;\n}\n\n.lh-audit__stackpack {\n display: flex;\n align-items: center;\n}\n\n.lh-audit__stackpack__img {\n max-width: 30px;\n margin-right: var(--default-padding)\n}\n\n/* Report header */\n\n.lh-report-icon {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n cursor: pointer;\n}\n.lh-report-icon[disabled] {\n opacity: 0.3;\n pointer-events: none;\n}\n\n.lh-report-icon::before {\n content: "";\n margin: 4px;\n background-repeat: no-repeat;\n width: var(--report-icon-size);\n height: var(--report-icon-size);\n opacity: 0.7;\n display: inline-block;\n vertical-align: middle;\n}\n.lh-report-icon:hover::before {\n opacity: 1;\n}\n.lh-dark .lh-report-icon::before {\n filter: invert(1);\n}\n.lh-report-icon--print::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z"/><path fill="none" d="M0 0h24v24H0z"/></svg>\');\n}\n.lh-report-icon--copy::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>\');\n}\n.lh-report-icon--open::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h4v-2H5V8h14v10h-4v2h4c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm-7 6l-4 4h3v6h2v-6h3l-4-4z"/></svg>\');\n}\n.lh-report-icon--download::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>\');\n}\n.lh-report-icon--dark::before {\n background-image:url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 100 125"><path d="M50 23.587c-16.27 0-22.799 12.574-22.799 21.417 0 12.917 10.117 22.451 12.436 32.471h20.726c2.32-10.02 12.436-19.554 12.436-32.471 0-8.843-6.528-21.417-22.799-21.417zM39.637 87.161c0 3.001 1.18 4.181 4.181 4.181h.426l.41 1.231C45.278 94.449 46.042 95 48.019 95h3.963c1.978 0 2.74-.551 3.365-2.427l.409-1.231h.427c3.002 0 4.18-1.18 4.18-4.181V80.91H39.637v6.251zM50 18.265c1.26 0 2.072-.814 2.072-2.073v-9.12C52.072 5.813 51.26 5 50 5c-1.259 0-2.072.813-2.072 2.073v9.12c0 1.259.813 2.072 2.072 2.072zM68.313 23.727c.994.774 2.135.634 2.91-.357l5.614-7.187c.776-.992.636-2.135-.356-2.909-.992-.776-2.135-.636-2.91.357l-5.613 7.186c-.778.993-.636 2.135.355 2.91zM91.157 36.373c-.306-1.222-1.291-1.815-2.513-1.51l-8.85 2.207c-1.222.305-1.814 1.29-1.51 2.512.305 1.223 1.291 1.814 2.513 1.51l8.849-2.206c1.223-.305 1.816-1.291 1.511-2.513zM86.757 60.48l-8.331-3.709c-1.15-.512-2.225-.099-2.736 1.052-.512 1.151-.1 2.224 1.051 2.737l8.33 3.707c1.15.514 2.225.101 2.736-1.05.513-1.149.1-2.223-1.05-2.737zM28.779 23.37c.775.992 1.917 1.131 2.909.357.992-.776 1.132-1.917.357-2.91l-5.615-7.186c-.775-.992-1.917-1.132-2.909-.357s-1.131 1.917-.356 2.909l5.614 7.187zM21.715 39.583c.305-1.223-.288-2.208-1.51-2.513l-8.849-2.207c-1.222-.303-2.208.289-2.513 1.511-.303 1.222.288 2.207 1.511 2.512l8.848 2.206c1.222.304 2.208-.287 2.513-1.509zM21.575 56.771l-8.331 3.711c-1.151.511-1.563 1.586-1.05 2.735.511 1.151 1.586 1.563 2.736 1.052l8.331-3.711c1.151-.511 1.563-1.586 1.05-2.735-.512-1.15-1.585-1.562-2.736-1.052z"/></svg>\');\n}\n.lh-report-icon--treemap::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="black"><path d="M3 5v14h19V5H3zm2 2h15v4H5V7zm0 10v-4h4v4H5zm6 0v-4h9v4h-9z"/></svg>\');\n}\n.lh-report-icon--date::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 11h2v2H7v-2zm14-5v14a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h1V2h2v2h8V2h2v2h1a2 2 0 012 2zM5 8h14V6H5v2zm14 12V10H5v10h14zm-4-7h2v-2h-2v2zm-4 0h2v-2h-2v2z"/></svg>\');\n}\n.lh-report-icon--devices::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h18V4H4a2 2 0 00-2 2v11H0v3h14v-3H4V6zm19 2h-6a1 1 0 00-1 1v10c0 .6.5 1 1 1h6c.6 0 1-.5 1-1V9c0-.6-.5-1-1-1zm-1 9h-4v-7h4v7z"/></svg>\');\n}\n.lh-report-icon--world::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm7 6h-3c-.3-1.3-.8-2.5-1.4-3.6A8 8 0 0 1 18.9 8zm-7-4a14 14 0 0 1 2 4h-4a14 14 0 0 1 2-4zM4.3 14a8.2 8.2 0 0 1 0-4h3.3a16.5 16.5 0 0 0 0 4H4.3zm.8 2h3a14 14 0 0 0 1.3 3.6A8 8 0 0 1 5.1 16zm3-8H5a8 8 0 0 1 4.3-3.6L8 8zM12 20a14 14 0 0 1-2-4h4a14 14 0 0 1-2 4zm2.3-6H9.7a14.7 14.7 0 0 1 0-4h4.6a14.6 14.6 0 0 1 0 4zm.3 5.6c.6-1.2 1-2.4 1.4-3.6h3a8 8 0 0 1-4.4 3.6zm1.8-5.6a16.5 16.5 0 0 0 0-4h3.3a8.2 8.2 0 0 1 0 4h-3.3z"/></svg>\');\n}\n.lh-report-icon--stopwatch::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15 1H9v2h6V1zm-4 13h2V8h-2v6zm8.1-6.6L20.5 6l-1.4-1.4L17.7 6A9 9 0 0 0 3 13a9 9 0 1 0 16-5.6zm-7 12.6a7 7 0 1 1 0-14 7 7 0 0 1 0 14z"/></svg>\');\n}\n.lh-report-icon--networkspeed::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.9 5c-.2 0-.3 0-.4.2v.2L10.1 17a2 2 0 0 0-.2 1 2 2 0 0 0 4 .4l2.4-12.9c0-.3-.2-.5-.5-.5zM1 9l2 2c2.9-2.9 6.8-4 10.5-3.6l1.2-2.7C10 3.8 4.7 5.3 1 9zm20 2 2-2a15.4 15.4 0 0 0-5.6-3.6L17 8.2c1.5.7 2.9 1.6 4.1 2.8zm-4 4 2-2a9.9 9.9 0 0 0-2.7-1.9l-.5 3 1.2.9zM5 13l2 2a7.1 7.1 0 0 1 4-2l1.3-2.9C9.7 10.1 7 11 5 13z"/></svg>\');\n}\n.lh-report-icon--samples-one::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="7" cy="14" r="3"/><path d="M7 18a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5.6 17.6a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/></svg>\');\n}\n.lh-report-icon--samples-many::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 18a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5.6 17.6a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/><circle cx="7" cy="14" r="3"/><circle cx="11" cy="6" r="3"/></svg>\');\n}\n.lh-report-icon--chrome::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-50 -50 562 562"><path d="M256 25.6v25.6a204 204 0 0 1 144.8 60 204 204 0 0 1 60 144.8 204 204 0 0 1-60 144.8 204 204 0 0 1-144.8 60 204 204 0 0 1-144.8-60 204 204 0 0 1-60-144.8 204 204 0 0 1 60-144.8 204 204 0 0 1 144.8-60V0a256 256 0 1 0 0 512 256 256 0 0 0 0-512v25.6z"/><path d="M256 179.2v25.6a51.3 51.3 0 0 1 0 102.4 51.3 51.3 0 0 1 0-102.4v-51.2a102.3 102.3 0 1 0-.1 204.7 102.3 102.3 0 0 0 .1-204.7v25.6z"/><path d="M256 204.8h217.6a25.6 25.6 0 0 0 0-51.2H256a25.6 25.6 0 0 0 0 51.2m44.3 76.8L191.5 470.1a25.6 25.6 0 1 0 44.4 25.6l108.8-188.5a25.6 25.6 0 1 0-44.4-25.6m-88.6 0L102.9 93.2a25.7 25.7 0 0 0-35-9.4 25.7 25.7 0 0 0-9.4 35l108.8 188.5a25.7 25.7 0 0 0 35 9.4 25.9 25.9 0 0 0 9.4-35.1"/></svg>\');\n}\n.lh-report-icon--external::before {\n background-image: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><path d="M3.15 11.9a1.01 1.01 0 0 1-.743-.307 1.01 1.01 0 0 1-.306-.743v-7.7c0-.292.102-.54.306-.744a1.01 1.01 0 0 1 .744-.306H7v1.05H3.15v7.7h7.7V7h1.05v3.85c0 .291-.103.54-.307.743a1.01 1.01 0 0 1-.743.307h-7.7Zm2.494-2.8-.743-.744 5.206-5.206H8.401V2.1h3.5v3.5h-1.05V3.893L5.644 9.1Z"/></svg>\');\n}\n\n.lh-buttons {\n display: flex;\n flex-wrap: wrap;\n margin: var(--default-padding) 0;\n}\n.lh-button {\n height: 32px;\n border: 1px solid var(--report-border-color-secondary);\n border-radius: 3px;\n color: var(--link-color);\n background-color: var(--report-background-color);\n margin: 5px;\n}\n\n.lh-button:first-of-type {\n margin-left: 0;\n}\n\n/* Node */\n.lh-node__snippet {\n font-family: var(--report-font-family-monospace);\n color: var(--snippet-color);\n font-size: var(--report-monospace-font-size);\n line-height: 20px;\n}\n\n/* Score */\n\n.lh-audit__score-icon {\n width: var(--score-icon-size);\n height: var(--score-icon-size);\n margin: var(--score-icon-margin);\n}\n\n.lh-audit--pass .lh-audit__display-text {\n color: var(--color-pass-secondary);\n}\n.lh-audit--pass .lh-audit__score-icon,\n.lh-scorescale-range--pass::before {\n border-radius: 100%;\n background: var(--color-pass);\n}\n\n.lh-audit--average .lh-audit__display-text {\n color: var(--color-average-secondary);\n}\n.lh-audit--average .lh-audit__score-icon,\n.lh-scorescale-range--average::before {\n background: var(--color-average);\n width: var(--icon-square-size);\n height: var(--icon-square-size);\n}\n\n.lh-audit--fail .lh-audit__display-text {\n color: var(--color-fail-secondary);\n}\n.lh-audit--fail .lh-audit__score-icon,\n.lh-audit--error .lh-audit__score-icon,\n.lh-scorescale-range--fail::before {\n border-left: calc(var(--score-icon-size) / 2) solid transparent;\n border-right: calc(var(--score-icon-size) / 2) solid transparent;\n border-bottom: var(--score-icon-size) solid var(--color-fail);\n}\n\n.lh-audit--manual .lh-audit__display-text,\n.lh-audit--notapplicable .lh-audit__display-text {\n color: var(--color-gray-600);\n}\n.lh-audit--manual .lh-audit__score-icon,\n.lh-audit--notapplicable .lh-audit__score-icon {\n border: calc(0.2 * var(--score-icon-size)) solid var(--color-gray-400);\n border-radius: 100%;\n background: none;\n}\n\n.lh-audit--informative .lh-audit__display-text {\n color: var(--color-gray-600);\n}\n\n.lh-audit--informative .lh-audit__score-icon {\n border: calc(0.2 * var(--score-icon-size)) solid var(--color-gray-400);\n border-radius: 100%;\n}\n\n.lh-audit__description,\n.lh-audit__stackpack {\n color: var(--report-text-color-secondary);\n}\n.lh-audit__adorn {\n border: 1px solid var(--color-gray-500);\n border-radius: 3px;\n margin: 0 3px;\n padding: 0 2px;\n line-height: 1.1;\n display: inline-block;\n font-size: 90%;\n color: var(--report-text-color-secondary);\n}\n\n.lh-category-header__description {\n text-align: center;\n color: var(--color-gray-700);\n margin: 0px auto;\n max-width: 400px;\n}\n\n\n.lh-audit__display-text,\n.lh-load-opportunity__sparkline,\n.lh-chevron-container {\n margin: 0 var(--audit-margin-horizontal);\n}\n.lh-chevron-container {\n margin-right: 0;\n}\n\n.lh-audit__title-and-text {\n flex: 1;\n}\n\n.lh-audit__title-and-text code {\n color: var(--snippet-color);\n font-size: var(--report-monospace-font-size);\n}\n\n/* Prepend display text with em dash separator. But not in Opportunities. */\n.lh-audit__display-text:not(:empty):before {\n content: \'—\';\n margin-right: var(--audit-margin-horizontal);\n}\n.lh-audit-group.lh-audit-group--load-opportunities .lh-audit__display-text:not(:empty):before {\n display: none;\n}\n\n/* Expandable Details (Audit Groups, Audits) */\n.lh-audit__header {\n display: flex;\n align-items: center;\n padding: var(--default-padding);\n}\n\n.lh-audit--load-opportunity .lh-audit__header {\n display: block;\n}\n\n\n.lh-metricfilter {\n display: grid;\n justify-content: end;\n align-items: center;\n grid-auto-flow: column;\n gap: 4px;\n color: var(--color-gray-700);\n}\n\n.lh-metricfilter__radio {\n position: absolute;\n left: -9999px;\n}\n.lh-metricfilter input[type=\'radio\']:focus-visible + label {\n outline: -webkit-focus-ring-color auto 1px;\n}\n\n.lh-metricfilter__label {\n display: inline-flex;\n padding: 0 4px;\n height: 16px;\n text-decoration: underline;\n align-items: center;\n cursor: pointer;\n font-size: 90%;\n}\n\n.lh-metricfilter__label--active {\n background: var(--color-blue-primary);\n color: var(--color-white);\n border-radius: 3px;\n text-decoration: none;\n}\n/* Give the \'All\' choice a more muted display */\n.lh-metricfilter__label--active[for="metric-All"] {\n background-color: var(--color-blue-200) !important;\n color: black !important;\n}\n\n.lh-metricfilter__text {\n margin-right: 8px;\n}\n\n/* If audits are filtered, hide the itemcount for Passed Audits… */\n.lh-category--filtered .lh-audit-group .lh-audit-group__itemcount {\n display: none;\n}\n\n\n.lh-audit__header:hover {\n background-color: var(--color-hover);\n}\n\n/* We want to hide the browser\'s default arrow marker on summary elements. Admittedly, it\'s complicated. */\n.lh-root details > summary {\n /* Blink 89+ and Firefox will hide the arrow when display is changed from (new) default of `list-item` to block. https://chromestatus.com/feature/6730096436051968*/\n display: block;\n}\n/* Safari and Blink <=88 require using the -webkit-details-marker selector */\n.lh-root details > summary::-webkit-details-marker {\n display: none;\n}\n\n/* Perf Metric */\n\n.lh-metrics-container {\n display: grid;\n grid-auto-rows: 1fr;\n grid-template-columns: 1fr 1fr;\n grid-column-gap: var(--report-line-height);\n margin-bottom: var(--default-padding);\n}\n\n.lh-metric {\n border-top: 1px solid var(--report-border-color-secondary);\n}\n\n.lh-category:not(.lh--hoisted-meta) .lh-metric:nth-last-child(-n+2) {\n border-bottom: 1px solid var(--report-border-color-secondary);\n}\n\n.lh-metric__innerwrap {\n display: grid;\n /**\n * Icon -- Metric Name\n * -- Metric Value\n */\n grid-template-columns: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right)) 1fr;\n align-items: center;\n padding: var(--default-padding);\n}\n\n.lh-metric__details {\n order: -1;\n}\n\n.lh-metric__title {\n flex: 1;\n}\n\n.lh-calclink {\n padding-left: calc(1ex / 3);\n}\n\n.lh-metric__description {\n display: none;\n grid-column-start: 2;\n grid-column-end: 4;\n color: var(--report-text-color-secondary);\n}\n\n.lh-metric__value {\n font-size: var(--metric-value-font-size);\n margin: calc(var(--default-padding) / 2) 0;\n white-space: nowrap; /* No wrapping between metric value and the icon */\n grid-column-start: 2;\n}\n\n\n@media screen and (max-width: 535px) {\n .lh-metrics-container {\n display: block;\n }\n\n .lh-metric {\n border-bottom: none !important;\n }\n .lh-category:not(.lh--hoisted-meta) .lh-metric:nth-last-child(1) {\n border-bottom: 1px solid var(--report-border-color-secondary) !important;\n }\n\n /* Change the grid to 3 columns for narrow viewport. */\n .lh-metric__innerwrap {\n /**\n * Icon -- Metric Name -- Metric Value\n */\n grid-template-columns: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right)) 2fr 1fr;\n }\n .lh-metric__value {\n justify-self: end;\n grid-column-start: unset;\n }\n}\n\n/* No-JS toggle switch */\n/* Keep this selector sync\'d w/ `magicSelector` in report-ui-features-test.js */\n .lh-metrics-toggle__input:checked ~ .lh-metrics-container .lh-metric__description {\n display: block;\n}\n\n/* TODO get rid of the SVGS and clean up these some more */\n.lh-metrics-toggle__input {\n opacity: 0;\n position: absolute;\n right: 0;\n top: 0px;\n}\n\n.lh-metrics-toggle__input + div > label > .lh-metrics-toggle__labeltext--hide,\n.lh-metrics-toggle__input:checked + div > label > .lh-metrics-toggle__labeltext--show {\n display: none;\n}\n.lh-metrics-toggle__input:checked + div > label > .lh-metrics-toggle__labeltext--hide {\n display: inline;\n}\n.lh-metrics-toggle__input:focus + div > label {\n outline: -webkit-focus-ring-color auto 3px;\n}\n\n.lh-metrics-toggle__label {\n cursor: pointer;\n font-size: var(--report-font-size-secondary);\n line-height: var(--report-line-height-secondary);\n color: var(--color-gray-700);\n}\n\n/* Pushes the metric description toggle button to the right. */\n.lh-audit-group--metrics .lh-audit-group__header {\n display: flex;\n justify-content: space-between;\n}\n\n.lh-metric__icon,\n.lh-scorescale-range::before {\n content: \'\';\n width: var(--score-icon-size);\n height: var(--score-icon-size);\n display: inline-block;\n margin: var(--score-icon-margin);\n}\n\n.lh-metric--pass .lh-metric__value {\n color: var(--color-pass-secondary);\n}\n.lh-metric--pass .lh-metric__icon {\n border-radius: 100%;\n background: var(--color-pass);\n}\n\n.lh-metric--average .lh-metric__value {\n color: var(--color-average-secondary);\n}\n.lh-metric--average .lh-metric__icon {\n background: var(--color-average);\n width: var(--icon-square-size);\n height: var(--icon-square-size);\n}\n\n.lh-metric--fail .lh-metric__value {\n color: var(--color-fail-secondary);\n}\n.lh-metric--fail .lh-metric__icon,\n.lh-metric--error .lh-metric__icon {\n border-left: calc(var(--score-icon-size) / 2) solid transparent;\n border-right: calc(var(--score-icon-size) / 2) solid transparent;\n border-bottom: var(--score-icon-size) solid var(--color-fail);\n}\n\n.lh-metric--error .lh-metric__value,\n.lh-metric--error .lh-metric__description {\n color: var(--color-fail-secondary);\n}\n\n/* Perf load opportunity */\n\n.lh-load-opportunity__cols {\n display: flex;\n align-items: flex-start;\n}\n\n.lh-load-opportunity__header .lh-load-opportunity__col {\n color: var(--color-gray-600);\n display: unset;\n line-height: calc(2.3 * var(--report-font-size));\n}\n\n.lh-load-opportunity__col {\n display: flex;\n}\n\n.lh-load-opportunity__col--one {\n flex: 5;\n align-items: center;\n margin-right: 2px;\n}\n.lh-load-opportunity__col--two {\n flex: 4;\n text-align: right;\n}\n\n.lh-audit--load-opportunity .lh-audit__display-text {\n text-align: right;\n flex: 0 0 7.5ch;\n}\n\n\n/* Sparkline */\n\n.lh-load-opportunity__sparkline {\n flex: 1;\n margin-top: calc((var(--report-line-height) - var(--sparkline-height)) / 2);\n}\n\n.lh-sparkline {\n height: var(--sparkline-height);\n width: 100%;\n}\n\n.lh-sparkline__bar {\n height: 100%;\n float: right;\n}\n\n.lh-audit--pass .lh-sparkline__bar {\n background: var(--color-pass);\n}\n\n.lh-audit--average .lh-sparkline__bar {\n background: var(--color-average);\n}\n\n.lh-audit--fail .lh-sparkline__bar {\n background: var(--color-fail);\n}\n\n/* Filmstrip */\n\n.lh-filmstrip-container {\n /* smaller gap between metrics and filmstrip */\n margin: -8px auto 0 auto;\n}\n\n.lh-filmstrip {\n display: grid;\n justify-content: space-between;\n padding-bottom: var(--default-padding);\n width: 100%;\n grid-template-columns: repeat(auto-fit, 90px);\n}\n\n.lh-filmstrip__frame {\n text-align: right;\n position: relative;\n}\n\n.lh-filmstrip__thumbnail {\n border: 1px solid var(--report-border-color-secondary);\n max-height: 150px;\n max-width: 120px;\n}\n\n/* Audit */\n\n.lh-audit {\n border-bottom: 1px solid var(--report-border-color-secondary);\n}\n\n/* Apply border-top to just the first audit. */\n.lh-audit {\n border-top: 1px solid var(--report-border-color-secondary);\n}\n.lh-audit ~ .lh-audit {\n border-top: none;\n}\n\n\n.lh-audit--error .lh-audit__display-text {\n color: var(--color-fail-secondary);\n}\n\n/* Audit Group */\n\n.lh-audit-group {\n margin-bottom: var(--audit-group-margin-bottom);\n position: relative;\n}\n.lh-audit-group--metrics {\n margin-bottom: calc(var(--audit-group-margin-bottom) / 2);\n}\n\n.lh-audit-group__header::before {\n /* By default, groups don\'t get an icon */\n content: none;\n width: var(--pwa-icon-size);\n height: var(--pwa-icon-size);\n margin: var(--pwa-icon-margin);\n display: inline-block;\n vertical-align: middle;\n}\n\n/* Style the "over budget" columns red. */\n.lh-audit-group--budgets #performance-budget tbody tr td:nth-child(4),\n.lh-audit-group--budgets #performance-budget tbody tr td:nth-child(5),\n.lh-audit-group--budgets #timing-budget tbody tr td:nth-child(3) {\n color: var(--color-red-700);\n}\n\n/* Align the "over budget request count" text to be close to the "over budget bytes" column. */\n.lh-audit-group--budgets .lh-table tbody tr td:nth-child(4){\n text-align: right;\n}\n\n.lh-audit-group--budgets .lh-details--budget {\n width: 100%;\n margin: 0 0 var(--default-padding);\n}\n\n.lh-audit-group--pwa-installable .lh-audit-group__header::before {\n content: \'\';\n background-image: var(--pwa-installable-gray-url);\n}\n.lh-audit-group--pwa-optimized .lh-audit-group__header::before {\n content: \'\';\n background-image: var(--pwa-optimized-gray-url);\n}\n.lh-audit-group--pwa-installable.lh-badged .lh-audit-group__header::before {\n background-image: var(--pwa-installable-color-url);\n}\n.lh-audit-group--pwa-optimized.lh-badged .lh-audit-group__header::before {\n background-image: var(--pwa-optimized-color-url);\n}\n\n.lh-audit-group--metrics .lh-audit-group__summary {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.lh-audit-group__summary {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.lh-audit-group__header .lh-chevron {\n margin-top: calc((var(--report-line-height) - 5px) / 2);\n}\n\n.lh-audit-group__header {\n letter-spacing: 0.8px;\n padding: var(--default-padding);\n padding-left: 0;\n}\n\n.lh-audit-group__header, .lh-audit-group__summary {\n font-size: var(--report-font-size-secondary);\n line-height: var(--report-line-height-secondary);\n color: var(--color-gray-700);\n}\n\n.lh-audit-group__title {\n text-transform: uppercase;\n font-weight: 500;\n}\n\n.lh-audit-group__itemcount {\n color: var(--color-gray-600);\n}\n\n.lh-audit-group__footer {\n color: var(--color-gray-600);\n display: block;\n margin-top: var(--default-padding);\n}\n\n.lh-details,\n.lh-category-header__description,\n.lh-load-opportunity__header,\n.lh-audit-group__footer {\n font-size: var(--report-font-size-secondary);\n line-height: var(--report-line-height-secondary);\n}\n\n.lh-audit-explanation {\n margin: var(--audit-padding-vertical) 0 calc(var(--audit-padding-vertical) / 2) var(--audit-margin-horizontal);\n line-height: var(--audit-explanation-line-height);\n display: inline-block;\n}\n\n.lh-audit--fail .lh-audit-explanation {\n color: var(--color-fail-secondary);\n}\n\n/* Report */\n.lh-list > :not(:last-child) {\n margin-bottom: calc(var(--default-padding) * 2);\n}\n\n.lh-header-container {\n display: block;\n margin: 0 auto;\n position: relative;\n word-wrap: break-word;\n}\n\n.lh-header-container .lh-scores-wrapper {\n border-bottom: 1px solid var(--color-gray-200);\n}\n\n\n.lh-report {\n min-width: var(--report-content-min-width);\n}\n\n.lh-exception {\n font-size: large;\n}\n\n.lh-code {\n white-space: normal;\n margin-top: 0;\n font-size: var(--report-monospace-font-size);\n}\n\n.lh-warnings {\n --item-margin: calc(var(--report-line-height) / 6);\n color: var(--color-average-secondary);\n margin: var(--audit-padding-vertical) 0;\n padding: var(--default-padding)\n var(--default-padding)\n var(--default-padding)\n calc(var(--audit-description-padding-left));\n background-color: var(--toplevel-warning-background-color);\n}\n.lh-warnings span {\n font-weight: bold;\n}\n\n.lh-warnings--toplevel {\n --item-margin: calc(var(--header-line-height) / 4);\n color: var(--toplevel-warning-text-color);\n margin-left: auto;\n margin-right: auto;\n max-width: var(--report-content-max-width-minus-edge-gap);\n padding: var(--toplevel-warning-padding);\n border-radius: 8px;\n}\n\n.lh-warnings__msg {\n color: var(--toplevel-warning-message-text-color);\n margin: 0;\n}\n\n.lh-warnings ul {\n margin: 0;\n}\n.lh-warnings li {\n margin: var(--item-margin) 0;\n}\n.lh-warnings li:last-of-type {\n margin-bottom: 0;\n}\n\n.lh-scores-header {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n}\n.lh-scores-header__solo {\n padding: 0;\n border: 0;\n}\n\n/* Gauge */\n\n.lh-gauge__wrapper--pass {\n color: var(--color-pass-secondary);\n fill: var(--color-pass);\n stroke: var(--color-pass);\n}\n\n.lh-gauge__wrapper--average {\n color: var(--color-average-secondary);\n fill: var(--color-average);\n stroke: var(--color-average);\n}\n\n.lh-gauge__wrapper--fail {\n color: var(--color-fail-secondary);\n fill: var(--color-fail);\n stroke: var(--color-fail);\n}\n\n.lh-gauge__wrapper--not-applicable {\n color: var(--color-not-applicable);\n fill: var(--color-not-applicable);\n stroke: var(--color-not-applicable);\n}\n\n.lh-fraction__wrapper .lh-fraction__content::before {\n content: \'\';\n height: var(--score-icon-size);\n width: var(--score-icon-size);\n margin: var(--score-icon-margin);\n display: inline-block;\n}\n.lh-fraction__wrapper--pass .lh-fraction__content {\n color: var(--color-pass-secondary);\n}\n.lh-fraction__wrapper--pass .lh-fraction__background {\n background-color: var(--color-pass);\n}\n.lh-fraction__wrapper--pass .lh-fraction__content::before {\n background-color: var(--color-pass);\n border-radius: 50%;\n}\n.lh-fraction__wrapper--average .lh-fraction__content {\n color: var(--color-average-secondary);\n}\n.lh-fraction__wrapper--average .lh-fraction__background,\n.lh-fraction__wrapper--average .lh-fraction__content::before {\n background-color: var(--color-average);\n}\n.lh-fraction__wrapper--fail .lh-fraction__content {\n color: var(--color-fail);\n}\n.lh-fraction__wrapper--fail .lh-fraction__background {\n background-color: var(--color-fail);\n}\n.lh-fraction__wrapper--fail .lh-fraction__content::before {\n border-left: calc(var(--score-icon-size) / 2) solid transparent;\n border-right: calc(var(--score-icon-size) / 2) solid transparent;\n border-bottom: var(--score-icon-size) solid var(--color-fail);\n}\n.lh-fraction__wrapper--null .lh-fraction__content {\n color: var(--color-gray-700);\n}\n.lh-fraction__wrapper--null .lh-fraction__background {\n background-color: var(--color-gray-700);\n}\n.lh-fraction__wrapper--null .lh-fraction__content::before {\n border-radius: 50%;\n border: calc(0.2 * var(--score-icon-size)) solid var(--color-gray-700);\n}\n\n.lh-fraction__background {\n position: absolute;\n height: 100%;\n width: 100%;\n border-radius: calc(var(--gauge-circle-size) / 2);\n opacity: 0.1;\n z-index: -1;\n}\n\n.lh-fraction__content-wrapper {\n height: var(--gauge-circle-size);\n display: flex;\n align-items: center;\n}\n\n.lh-fraction__content {\n display: flex;\n position: relative;\n align-items: center;\n justify-content: center;\n font-size: calc(0.3 * var(--gauge-circle-size));\n line-height: calc(0.4 * var(--gauge-circle-size));\n width: max-content;\n min-width: calc(1.5 * var(--gauge-circle-size));\n padding: calc(0.1 * var(--gauge-circle-size)) calc(0.2 * var(--gauge-circle-size));\n --score-icon-size: calc(0.21 * var(--gauge-circle-size));\n --score-icon-margin: 0 calc(0.15 * var(--gauge-circle-size)) 0 0;\n}\n\n.lh-gauge {\n stroke-linecap: round;\n width: var(--gauge-circle-size);\n height: var(--gauge-circle-size);\n}\n\n.lh-category .lh-gauge {\n --gauge-circle-size: var(--gauge-circle-size-big);\n}\n\n.lh-gauge-base {\n opacity: 0.1;\n}\n\n.lh-gauge-arc {\n fill: none;\n transform-origin: 50% 50%;\n animation: load-gauge var(--transition-length) ease both;\n animation-delay: 250ms;\n}\n\n.lh-gauge__svg-wrapper {\n position: relative;\n height: var(--gauge-circle-size);\n}\n.lh-category .lh-gauge__svg-wrapper,\n.lh-category .lh-fraction__wrapper {\n --gauge-circle-size: var(--gauge-circle-size-big);\n}\n\n/* The plugin badge overlay */\n.lh-gauge__wrapper--plugin .lh-gauge__svg-wrapper::before {\n width: var(--plugin-badge-size);\n height: var(--plugin-badge-size);\n background-color: var(--plugin-badge-background-color);\n background-image: var(--plugin-icon-url);\n background-repeat: no-repeat;\n background-size: var(--plugin-icon-size);\n background-position: 58% 50%;\n content: "";\n position: absolute;\n right: -6px;\n bottom: 0px;\n display: block;\n z-index: 100;\n box-shadow: 0 0 4px rgba(0,0,0,.2);\n border-radius: 25%;\n}\n.lh-category .lh-gauge__wrapper--plugin .lh-gauge__svg-wrapper::before {\n width: var(--plugin-badge-size-big);\n height: var(--plugin-badge-size-big);\n}\n\n@keyframes load-gauge {\n from { stroke-dasharray: 0 352; }\n}\n\n.lh-gauge__percentage {\n width: 100%;\n height: var(--gauge-circle-size);\n position: absolute;\n font-family: var(--report-font-family-monospace);\n font-size: calc(var(--gauge-circle-size) * 0.34 + 1.3px);\n line-height: 0;\n text-align: center;\n top: calc(var(--score-container-padding) + var(--gauge-circle-size) / 2);\n}\n\n.lh-category .lh-gauge__percentage {\n --gauge-circle-size: var(--gauge-circle-size-big);\n --gauge-percentage-font-size: var(--gauge-percentage-font-size-big);\n}\n\n.lh-gauge__wrapper,\n.lh-fraction__wrapper {\n position: relative;\n display: flex;\n align-items: center;\n flex-direction: column;\n text-decoration: none;\n padding: var(--score-container-padding);\n\n --transition-length: 1s;\n\n /* Contain the layout style paint & layers during animation*/\n contain: content;\n will-change: opacity; /* Only using for layer promotion */\n}\n\n.lh-gauge__label,\n.lh-fraction__label {\n font-size: var(--gauge-label-font-size);\n font-weight: 500;\n line-height: var(--gauge-label-line-height);\n margin-top: 10px;\n text-align: center;\n color: var(--report-text-color);\n word-break: keep-all;\n}\n\n/* TODO(#8185) use more BEM (.lh-gauge__label--big) instead of relying on descendant selector */\n.lh-category .lh-gauge__label,\n.lh-category .lh-fraction__label {\n --gauge-label-font-size: var(--gauge-label-font-size-big);\n --gauge-label-line-height: var(--gauge-label-line-height-big);\n margin-top: 14px;\n}\n\n.lh-scores-header .lh-gauge__wrapper,\n.lh-scores-header .lh-fraction__wrapper,\n.lh-scores-header .lh-gauge--pwa__wrapper,\n.lh-sticky-header .lh-gauge__wrapper,\n.lh-sticky-header .lh-fraction__wrapper,\n.lh-sticky-header .lh-gauge--pwa__wrapper {\n width: var(--gauge-wrapper-width);\n}\n\n.lh-scorescale {\n display: inline-flex;\n\n gap: calc(var(--default-padding) * 4);\n margin: 16px auto 0 auto;\n font-size: var(--report-font-size-secondary);\n color: var(--color-gray-700);\n\n}\n\n.lh-scorescale-range {\n display: flex;\n align-items: center;\n font-family: var(--report-font-family-monospace);\n white-space: nowrap;\n}\n\n.lh-category-header__finalscreenshot .lh-scorescale {\n border: 0;\n display: flex;\n justify-content: center;\n}\n\n.lh-category-header__finalscreenshot .lh-scorescale-range {\n font-family: unset;\n font-size: 12px;\n}\n\n.lh-scorescale-wrap {\n display: contents;\n}\n\n/* Hide category score gauages if it\'s a single category report */\n.lh-header--solo-category .lh-scores-wrapper {\n display: none;\n}\n\n\n.lh-categories {\n width: 100%;\n}\n\n.lh-category {\n padding: var(--category-padding);\n max-width: var(--report-content-max-width);\n margin: 0 auto;\n\n scroll-margin-top: var(--sticky-header-buffer);\n\n /* Faster recalc style & layout of the report. https://web.dev/content-visibility/ */\n content-visibility: auto;\n contain-intrinsic-size: 1000px;\n}\n\n.lh-category-wrapper {\n border-bottom: 1px solid var(--color-gray-200);\n}\n.lh-category-wrapper:last-of-type {\n border-bottom: 0;\n}\n\n.lh-category-header {\n margin-bottom: var(--section-padding-vertical);\n}\n\n.lh-category-header .lh-score__gauge {\n max-width: 400px;\n width: auto;\n margin: 0px auto;\n}\n\n.lh-category-header__finalscreenshot {\n display: grid;\n grid-template: none / 1fr 1px 1fr;\n justify-items: center;\n align-items: center;\n gap: var(--report-line-height);\n min-height: 288px;\n margin-bottom: var(--default-padding);\n}\n\n.lh-final-ss-image {\n /* constrain the size of the image to not be too large */\n max-height: calc(var(--gauge-circle-size-big) * 2.8);\n max-width: calc(var(--gauge-circle-size-big) * 3.5);\n border: 1px solid var(--color-gray-200);\n padding: 4px;\n border-radius: 3px;\n display: block;\n}\n\n.lh-category-headercol--separator {\n background: var(--color-gray-200);\n width: 1px;\n height: var(--gauge-circle-size-big);\n}\n\n@media screen and (max-width: 780px) {\n .lh-category-header__finalscreenshot {\n grid-template: 1fr 1fr / none\n }\n .lh-category-headercol--separator {\n display: none;\n }\n}\n\n\n/* 964 fits the min-width of the filmstrip */\n@media screen and (max-width: 964px) {\n .lh-report {\n margin-left: 0;\n width: 100%;\n }\n}\n\n@media print {\n body {\n -webkit-print-color-adjust: exact; /* print background colors */\n }\n .lh-container {\n display: block;\n }\n .lh-report {\n margin-left: 0;\n padding-top: 0;\n }\n .lh-categories {\n margin-top: 0;\n }\n}\n\n.lh-table {\n position: relative;\n border-collapse: separate;\n border-spacing: 0;\n /* Can\'t assign padding to table, so shorten the width instead. */\n width: calc(100% - var(--audit-description-padding-left) - var(--stackpack-padding-horizontal));\n border: 1px solid var(--report-border-color-secondary);\n}\n\n.lh-table thead th {\n position: sticky;\n top: calc(var(--sticky-header-buffer) + 1em);\n z-index: 1;\n background-color: var(--report-background-color);\n border-bottom: 1px solid var(--report-border-color-secondary);\n font-weight: normal;\n color: var(--color-gray-600);\n /* See text-wrapping comment on .lh-container. */\n word-break: normal;\n}\n\n.lh-row--group {\n background-color: var(--table-group-header-background-color);\n}\n\n.lh-row--group td {\n font-weight: bold;\n font-size: 1.05em;\n color: var(--table-group-header-text-color);\n}\n\n.lh-row--group td:first-child {\n font-weight: normal;\n}\n\n.lh-row--group .lh-text {\n color: inherit;\n text-decoration: none;\n display: inline-block;\n}\n\n.lh-row--group a.lh-link:hover {\n text-decoration: underline;\n}\n\n.lh-row--group .lh-audit__adorn {\n text-transform: capitalize;\n font-weight: normal;\n padding: 2px 3px 1px 3px;\n}\n\n.lh-row--group .lh-audit__adorn1p {\n color: var(--link-color);\n border-color: var(--link-color);\n}\n\n.lh-row--group .lh-report-icon--external::before {\n content: "";\n background-repeat: no-repeat;\n width: 14px;\n height: 16px;\n opacity: 0.7;\n display: inline-block;\n vertical-align: middle;\n}\n\n.lh-row--group .lh-report-icon--external {\n display: none;\n}\n\n.lh-row--group:hover .lh-report-icon--external {\n display: inline-block;\n}\n\n.lh-dark .lh-report-icon--external::before {\n filter: invert(1);\n}\n\n/** Manages indentation of two-level and three-level nested adjacent rows */\n\n.lh-row--group ~ [data-entity]:not(.lh-row--group) td:first-child {\n padding-left: 20px;\n}\n\n.lh-row--group ~ [data-entity]:not(.lh-row--group) ~ .lh-sub-item-row td:first-child {\n padding-left: 40px;\n}\n\n.lh-row--even {\n background-color: var(--table-group-header-background-color);\n}\n.lh-row--hidden {\n display: none;\n}\n\n.lh-table th,\n.lh-table td {\n padding: var(--default-padding);\n}\n\n.lh-table tr {\n vertical-align: middle;\n}\n\n.lh-table tr:hover {\n background-color: var(--table-higlight-background-color);\n}\n\n/* Looks unnecessary, but mostly for keeping the <th>s left-aligned */\n.lh-table-column--text,\n.lh-table-column--source-location,\n.lh-table-column--url,\n/* .lh-table-column--thumbnail, */\n/* .lh-table-column--empty,*/\n.lh-table-column--code,\n.lh-table-column--node {\n text-align: left;\n}\n\n.lh-table-column--code {\n min-width: 100px;\n}\n\n.lh-table-column--bytes,\n.lh-table-column--timespanMs,\n.lh-table-column--ms,\n.lh-table-column--numeric {\n text-align: right;\n word-break: normal;\n}\n\n\n\n.lh-table .lh-table-column--thumbnail {\n width: var(--image-preview-size);\n}\n\n.lh-table-column--url {\n min-width: 250px;\n}\n\n.lh-table-column--text {\n min-width: 80px;\n}\n\n/* Keep columns narrow if they follow the URL column */\n/* 12% was determined to be a decent narrow width, but wide enough for column headings */\n.lh-table-column--url + th.lh-table-column--bytes,\n.lh-table-column--url + .lh-table-column--bytes + th.lh-table-column--bytes,\n.lh-table-column--url + .lh-table-column--ms,\n.lh-table-column--url + .lh-table-column--ms + th.lh-table-column--bytes,\n.lh-table-column--url + .lh-table-column--bytes + th.lh-table-column--timespanMs {\n width: 12%;\n}\n\n.lh-text__url-host {\n display: inline;\n}\n\n.lh-text__url-host {\n margin-left: calc(var(--report-font-size) / 2);\n opacity: 0.6;\n font-size: 90%\n}\n\n.lh-thumbnail {\n object-fit: cover;\n width: var(--image-preview-size);\n height: var(--image-preview-size);\n display: block;\n}\n\n.lh-unknown pre {\n overflow: scroll;\n border: solid 1px var(--color-gray-200);\n}\n\n.lh-text__url > a {\n color: inherit;\n text-decoration: none;\n}\n\n.lh-text__url > a:hover {\n text-decoration: underline dotted #999;\n}\n\n.lh-sub-item-row {\n margin-left: 20px;\n margin-bottom: 0;\n color: var(--color-gray-700);\n}\n\n.lh-sub-item-row td {\n padding-top: 4px;\n padding-bottom: 4px;\n padding-left: 20px;\n}\n\n/* Chevron\n https://codepen.io/paulirish/pen/LmzEmK\n */\n.lh-chevron {\n --chevron-angle: 42deg;\n /* Edge doesn\'t support transform: rotate(calc(...)), so we define it here */\n --chevron-angle-right: -42deg;\n width: var(--chevron-size);\n height: var(--chevron-size);\n margin-top: calc((var(--report-line-height) - 12px) / 2);\n}\n\n.lh-chevron__lines {\n transition: transform 0.4s;\n transform: translateY(var(--report-line-height));\n}\n.lh-chevron__line {\n stroke: var(--chevron-line-stroke);\n stroke-width: var(--chevron-size);\n stroke-linecap: square;\n transform-origin: 50%;\n transform: rotate(var(--chevron-angle));\n transition: transform 300ms, stroke 300ms;\n}\n\n.lh-expandable-details .lh-chevron__line-right,\n.lh-expandable-details[open] .lh-chevron__line-left {\n transform: rotate(var(--chevron-angle-right));\n}\n\n.lh-expandable-details[open] .lh-chevron__line-right {\n transform: rotate(var(--chevron-angle));\n}\n\n\n.lh-expandable-details[open] .lh-chevron__lines {\n transform: translateY(calc(var(--chevron-size) * -1));\n}\n\n.lh-expandable-details[open] {\n animation: 300ms openDetails forwards;\n padding-bottom: var(--default-padding);\n}\n\n@keyframes openDetails {\n from {\n outline: 1px solid var(--report-background-color);\n }\n to {\n outline: 1px solid;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .24);\n }\n}\n\n@media screen and (max-width: 780px) {\n /* no black outline if we\'re not confident the entire table can be displayed within bounds */\n .lh-expandable-details[open] {\n animation: none;\n }\n}\n\n.lh-expandable-details[open] summary, details.lh-clump > summary {\n border-bottom: 1px solid var(--report-border-color-secondary);\n}\ndetails.lh-clump[open] > summary {\n border-bottom-width: 0;\n}\n\n\n\ndetails .lh-clump-toggletext--hide,\ndetails[open] .lh-clump-toggletext--show { display: none; }\ndetails[open] .lh-clump-toggletext--hide { display: block;}\n\n\n/* Tooltip */\n.lh-tooltip-boundary {\n position: relative;\n}\n\n.lh-tooltip {\n position: absolute;\n display: none; /* Don\'t retain these layers when not needed */\n opacity: 0;\n background: #ffffff;\n white-space: pre-line; /* Render newlines in the text */\n min-width: 246px;\n max-width: 275px;\n padding: 15px;\n border-radius: 5px;\n text-align: initial;\n line-height: 1.4;\n}\n/* shrink tooltips to not be cutoff on left edge of narrow viewports\n 45vw is chosen to be ~= width of the left column of metrics\n*/\n@media screen and (max-width: 535px) {\n .lh-tooltip {\n min-width: 45vw;\n padding: 3vw;\n }\n}\n\n.lh-tooltip-boundary:hover .lh-tooltip {\n display: block;\n animation: fadeInTooltip 250ms;\n animation-fill-mode: forwards;\n animation-delay: 850ms;\n bottom: 100%;\n z-index: 1;\n will-change: opacity;\n right: 0;\n pointer-events: none;\n}\n\n.lh-tooltip::before {\n content: "";\n border: solid transparent;\n border-bottom-color: #fff;\n border-width: 10px;\n position: absolute;\n bottom: -20px;\n right: 6px;\n transform: rotate(180deg);\n pointer-events: none;\n}\n\n@keyframes fadeInTooltip {\n 0% { opacity: 0; }\n 75% { opacity: 1; }\n 100% { opacity: 1; filter: drop-shadow(1px 0px 1px #aaa) drop-shadow(0px 2px 4px hsla(206, 6%, 25%, 0.15)); pointer-events: auto; }\n}\n\n/* Element screenshot */\n.lh-element-screenshot {\n float: left;\n margin-right: 20px;\n}\n.lh-element-screenshot__content {\n overflow: hidden;\n min-width: 110px;\n display: flex;\n justify-content: center;\n background-color: var(--report-background-color);\n}\n.lh-element-screenshot__image {\n position: relative;\n /* Set by ElementScreenshotRenderer.installFullPageScreenshotCssVariable */\n background-image: var(--element-screenshot-url);\n outline: 2px solid #777;\n background-color: white;\n background-repeat: no-repeat;\n}\n.lh-element-screenshot__mask {\n position: absolute;\n background: #555;\n opacity: 0.8;\n}\n.lh-element-screenshot__element-marker {\n position: absolute;\n outline: 2px solid var(--color-lime-400);\n}\n.lh-element-screenshot__overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 2000; /* .lh-topbar is 1000 */\n background: var(--screenshot-overlay-background);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: zoom-out;\n}\n\n.lh-element-screenshot__overlay .lh-element-screenshot {\n margin-right: 0; /* clearing margin used in thumbnail case */\n outline: 1px solid var(--color-gray-700);\n}\n\n.lh-screenshot-overlay--enabled .lh-element-screenshot {\n cursor: zoom-out;\n}\n.lh-screenshot-overlay--enabled .lh-node .lh-element-screenshot {\n cursor: zoom-in;\n}\n\n\n.lh-meta__items {\n --meta-icon-size: calc(var(--report-icon-size) * 0.667);\n padding: var(--default-padding);\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n background-color: var(--env-item-background-color);\n border-radius: 3px;\n margin: 0 0 var(--default-padding) 0;\n font-size: 12px;\n column-gap: var(--default-padding);\n color: var(--color-gray-700);\n}\n\n.lh-meta__item {\n display: block;\n list-style-type: none;\n position: relative;\n padding: 0 0 0 calc(var(--meta-icon-size) + var(--default-padding) * 2);\n cursor: unset; /* disable pointer cursor from report-icon */\n}\n\n.lh-meta__item.lh-tooltip-boundary {\n text-decoration: dotted underline var(--color-gray-500);\n cursor: help;\n}\n\n.lh-meta__item.lh-report-icon::before {\n position: absolute;\n left: var(--default-padding);\n width: var(--meta-icon-size);\n height: var(--meta-icon-size);\n}\n\n.lh-meta__item.lh-report-icon:hover::before {\n opacity: 0.7;\n}\n\n.lh-meta__item .lh-tooltip {\n color: var(--color-gray-800);\n}\n\n.lh-meta__item .lh-tooltip::before {\n right: auto; /* Set the tooltip arrow to the leftside */\n left: 6px;\n}\n\n/* Change the grid for narrow viewport. */\n@media screen and (max-width: 640px) {\n .lh-meta__items {\n grid-template-columns: 1fr 1fr;\n }\n}\n@media screen and (max-width: 535px) {\n .lh-meta__items {\n display: block;\n }\n}\n\n\n/*# sourceURL=report-styles.css */\n'),a.append(n),a}(e);case"topbar":return function(e){const a=e.createFragment(),n=e.createElement("style");n.append("\n .lh-topbar {\n position: sticky;\n top: 0;\n left: 0;\n right: 0;\n z-index: 1000;\n display: flex;\n align-items: center;\n height: var(--topbar-height);\n padding: var(--topbar-padding);\n font-size: var(--report-font-size-secondary);\n background-color: var(--topbar-background-color);\n border-bottom: 1px solid var(--color-gray-200);\n }\n\n .lh-topbar__logo {\n width: var(--topbar-logo-size);\n height: var(--topbar-logo-size);\n user-select: none;\n flex: none;\n }\n\n .lh-topbar__url {\n margin: var(--topbar-padding);\n text-decoration: none;\n color: var(--report-text-color);\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n\n .lh-tools {\n display: flex;\n align-items: center;\n margin-left: auto;\n will-change: transform;\n min-width: var(--report-icon-size);\n }\n .lh-tools__button {\n width: var(--report-icon-size);\n min-width: 24px;\n height: var(--report-icon-size);\n cursor: pointer;\n margin-right: 5px;\n /* This is actually a button element, but we want to style it like a transparent div. */\n display: flex;\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n font: inherit;\n outline: inherit;\n }\n .lh-tools__button svg {\n fill: var(--tools-icon-color);\n }\n .lh-dark .lh-tools__button svg {\n filter: invert(1);\n }\n .lh-tools__button.lh-active + .lh-tools__dropdown {\n opacity: 1;\n clip: rect(-1px, 194px, 242px, -3px);\n visibility: visible;\n }\n .lh-tools__dropdown {\n position: absolute;\n background-color: var(--report-background-color);\n border: 1px solid var(--report-border-color);\n border-radius: 3px;\n padding: calc(var(--default-padding) / 2) 0;\n cursor: pointer;\n top: 36px;\n right: 0;\n box-shadow: 1px 1px 3px #ccc;\n min-width: 125px;\n clip: rect(0, 164px, 0, 0);\n visibility: hidden;\n opacity: 0;\n transition: all 200ms cubic-bezier(0,0,0.2,1);\n }\n .lh-tools__dropdown a {\n color: currentColor;\n text-decoration: none;\n white-space: nowrap;\n padding: 0 6px;\n line-height: 2;\n }\n .lh-tools__dropdown a:hover,\n .lh-tools__dropdown a:focus {\n background-color: var(--color-gray-200);\n outline: none;\n }\n /* save-gist option hidden in report. */\n .lh-tools__dropdown a[data-action='save-gist'] {\n display: none;\n }\n\n .lh-locale-selector {\n width: 100%;\n color: var(--report-text-color);\n background-color: var(--locale-selector-background-color);\n padding: 2px;\n }\n .lh-tools-locale {\n display: flex;\n align-items: center;\n flex-direction: row-reverse;\n }\n .lh-tools-locale__selector-wrapper {\n transition: opacity 0.15s;\n opacity: 0;\n max-width: 200px;\n }\n .lh-button.lh-tool-locale__button {\n height: var(--topbar-height);\n color: var(--tools-icon-color);\n padding: calc(var(--default-padding) / 2);\n }\n .lh-tool-locale__button.lh-active + .lh-tools-locale__selector-wrapper {\n opacity: 1;\n clip: rect(-1px, 194px, 242px, -3px);\n visibility: visible;\n margin: 0 4px;\n }\n\n @media screen and (max-width: 964px) {\n .lh-tools__dropdown {\n right: 0;\n left: initial;\n }\n }\n @media print {\n .lh-topbar {\n position: static;\n margin-left: 0;\n }\n\n .lh-tools__dropdown {\n display: none;\n }\n }\n "),a.append(n);const t=e.createElement("div","lh-topbar"),i=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");i.setAttribute("role","img"),i.setAttribute("title","Lighthouse logo"),i.setAttribute("fill","none"),i.setAttribute("xmlns","http://www.w3.org/2000/svg"),i.setAttribute("viewBox","0 0 48 48");const o=e.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d","m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z"),o.setAttribute("fill","#F63");const r=e.createElementNS("http://www.w3.org/2000/svg","path");r.setAttribute("d","M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z"),r.setAttribute("fill","#FFA385");const s=e.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("fill","#FF3"),s.setAttribute("d","M20.5 10h7v7h-7z"),i.append(" ",o," ",r," ",s," ");const l=e.createElement("a","lh-topbar__url");l.setAttribute("href",""),l.setAttribute("target","_blank"),l.setAttribute("rel","noopener");const p=e.createElement("div","lh-tools"),u=e.createElement("div","lh-tools-locale lh-hidden"),c=e.createElement("button","lh-button lh-tool-locale__button");c.setAttribute("id","lh-button__swap-locales"),c.setAttribute("title","Show Language Picker"),c.setAttribute("aria-label","Toggle language picker"),c.setAttribute("aria-haspopup","menu"),c.setAttribute("aria-expanded","false"),c.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");const d=e.createElementNS("http://www.w3.org/2000/svg","svg");d.setAttribute("width","20px"),d.setAttribute("height","20px"),d.setAttribute("viewBox","0 0 24 24"),d.setAttribute("fill","currentColor");const m=e.createElementNS("http://www.w3.org/2000/svg","path");m.setAttribute("d","M0 0h24v24H0V0z"),m.setAttribute("fill","none");const h=e.createElementNS("http://www.w3.org/2000/svg","path");h.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"),d.append(m,h),c.append(" ",d," ");const g=e.createElement("div","lh-tools-locale__selector-wrapper");g.setAttribute("id","lh-tools-locale__selector-wrapper"),g.setAttribute("role","menu"),g.setAttribute("aria-labelledby","lh-button__swap-locales"),g.setAttribute("aria-hidden","true"),g.append(" "," "),u.append(" ",c," ",g," ");const v=e.createElement("button","lh-tools__button");v.setAttribute("id","lh-tools-button"),v.setAttribute("title","Tools menu"),v.setAttribute("aria-label","Toggle report tools menu"),v.setAttribute("aria-haspopup","menu"),v.setAttribute("aria-expanded","false"),v.setAttribute("aria-controls","lh-tools-dropdown");const f=e.createElementNS("http://www.w3.org/2000/svg","svg");f.setAttribute("width","100%"),f.setAttribute("height","100%"),f.setAttribute("viewBox","0 0 24 24");const b=e.createElementNS("http://www.w3.org/2000/svg","path");b.setAttribute("d","M0 0h24v24H0z"),b.setAttribute("fill","none");const y=e.createElementNS("http://www.w3.org/2000/svg","path");y.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"),f.append(" ",b," ",y," "),v.append(" ",f," ");const _=e.createElement("div","lh-tools__dropdown");_.setAttribute("id","lh-tools-dropdown"),_.setAttribute("role","menu"),_.setAttribute("aria-labelledby","lh-tools-button");const C=e.createElement("a","lh-report-icon lh-report-icon--print");C.setAttribute("role","menuitem"),C.setAttribute("tabindex","-1"),C.setAttribute("href","#"),C.setAttribute("data-i18n","dropdownPrintSummary"),C.setAttribute("data-action","print-summary");const k=e.createElement("a","lh-report-icon lh-report-icon--print");k.setAttribute("role","menuitem"),k.setAttribute("tabindex","-1"),k.setAttribute("href","#"),k.setAttribute("data-i18n","dropdownPrintExpanded"),k.setAttribute("data-action","print-expanded");const w=e.createElement("a","lh-report-icon lh-report-icon--copy");w.setAttribute("role","menuitem"),w.setAttribute("tabindex","-1"),w.setAttribute("href","#"),w.setAttribute("data-i18n","dropdownCopyJSON"),w.setAttribute("data-action","copy");const S=e.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");S.setAttribute("role","menuitem"),S.setAttribute("tabindex","-1"),S.setAttribute("href","#"),S.setAttribute("data-i18n","dropdownSaveHTML"),S.setAttribute("data-action","save-html");const A=e.createElement("a","lh-report-icon lh-report-icon--download");A.setAttribute("role","menuitem"),A.setAttribute("tabindex","-1"),A.setAttribute("href","#"),A.setAttribute("data-i18n","dropdownSaveJSON"),A.setAttribute("data-action","save-json");const P=e.createElement("a","lh-report-icon lh-report-icon--open");P.setAttribute("role","menuitem"),P.setAttribute("tabindex","-1"),P.setAttribute("href","#"),P.setAttribute("data-i18n","dropdownViewer"),P.setAttribute("data-action","open-viewer");const U=e.createElement("a","lh-report-icon lh-report-icon--open");U.setAttribute("role","menuitem"),U.setAttribute("tabindex","-1"),U.setAttribute("href","#"),U.setAttribute("data-i18n","dropdownSaveGist"),U.setAttribute("data-action","save-gist");const x=e.createElement("a","lh-report-icon lh-report-icon--dark");return x.setAttribute("role","menuitem"),x.setAttribute("tabindex","-1"),x.setAttribute("href","#"),x.setAttribute("data-i18n","dropdownDarkTheme"),x.setAttribute("data-action","toggle-dark"),_.append(" ",C," ",k," ",w," "," ",S," ",A," ",P," ",U," ",x," "),p.append(" ",u," ",v," ",_," "),t.append(" "," ",i," ",l," ",p," "),a.append(t),a}(e);case"warningsToplevel":return function(e){const a=e.createFragment(),n=e.createElement("div","lh-warnings lh-warnings--toplevel"),t=e.createElement("p","lh-warnings__msg"),i=e.createElement("ul");return n.append(" ",t," ",i," "),a.append(n),a}(e)}throw new Error("unexpected component: "+a)}(this,e),this._componentCache.set(e,a);return a.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(e){const a=this.createElement("span");for(const n of le.splitMarkdownLink(e)){const e=n.text.includes("`")?this.convertMarkdownCodeSnippets(n.text):n.text;if(!n.isLink){a.append(e);continue}const t=new URL(n.linkHref);["https://developers.google.com","https://web.dev","https://developer.chrome.com"].includes(t.origin)&&(t.searchParams.set("utm_source","lighthouse"),t.searchParams.set("utm_medium",this._lighthouseChannel));const i=this.createElement("a");i.rel="noopener",i.target="_blank",i.append(e),this.safelySetHref(i,t.href),a.append(i)}return a}safelySetHref(e,a){if((a=a||"").startsWith("#"))return void(e.href=a);let n;try{n=new URL(a)}catch(e){}n&&["https:","http:"].includes(n.protocol)&&(e.href=n.href)}safelySetBlobHref(e,a){if("text/html"!==a.type&&"application/json"!==a.type)throw new Error("Unsupported blob type");const n=URL.createObjectURL(a);e.href=n}convertMarkdownCodeSnippets(e){const a=this.createElement("span");for(const n of le.splitMarkdownCodeSpans(e))if(n.isCode){const e=this.createElement("code");e.textContent=n.text,a.append(e)}else a.append(this._document.createTextNode(n.text));return a}setLighthouseChannel(e){this._lighthouseChannel=e}document(){return this._document}isDevTools(){return!!this._document.querySelector(".lh-devtools")}find(e,a){const n=a.querySelector(e);if(null===n)throw new Error(`query ${e} not found`);return n}findAll(e,a){return Array.from(a.querySelectorAll(e))}fireEventOn(e,a=this._document,n){const t=new CustomEvent(e,n?{detail:n}:void 0);a.dispatchEvent(t)}saveFile(e,a){const n=this.createElement("a");n.download=a,this.safelySetBlobHref(n,e),this._document.body.append(n),n.click(),this._document.body.removeChild(n),setTimeout((()=>URL.revokeObjectURL(n.href)),500)}}
|
|
68
68
|
/**
|
|
69
69
|
* @license
|
|
70
70
|
* Copyright 2017 The Lighthouse Authors. All Rights Reserved.
|
|
@@ -117,7 +117,7 @@ class ka{constructor(e,a){this._document=e,this._lighthouseChannel="unknown",thi
|
|
|
117
117
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
118
118
|
* See the License for the specific language governing permissions and
|
|
119
119
|
* limitations under the License.
|
|
120
|
-
*/const xa=["http://","https://","data:"];class
|
|
120
|
+
*/const xa=["http://","https://","data:"],La=["bytes","numeric","ms","timespanMs"];class za{constructor(e,a={}){this._dom=e,this._fullPageScreenshot=a.fullPageScreenshot,this._entities=a.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 Sa.render(this._dom,e,this);case"screenshot":case"debugdata":case"treemap-data":return null;default:return this._renderUnknown(e.type,e)}}_renderBytes(e){const a=ue.i18n.formatBytesToKiB(e.value,e.granularity||.1),n=this._renderText(a);return n.title=ue.i18n.formatBytes(e.value),n}_renderMilliseconds(e){let a;return a="duration"===e.displayUnit?ue.i18n.formatDuration(e.value):ue.i18n.formatMilliseconds(e.value,e.granularity||10),this._renderText(a)}renderTextURL(e){const a=e;let n,t,i;try{const e=le.parseURL(a);n="/"===e.file?e.origin:e.file,t="/"===e.file||""===e.hostname?"":`(${e.hostname})`,i=a}catch(e){n=a}const o=this._dom.createElement("div","lh-text__url");if(o.append(this._renderLink({text:n,url:a})),t){const e=this._renderText(t);e.classList.add("lh-text__url-host"),o.append(e)}return i&&(o.title=a,o.dataset.url=a),o}_renderLink(e){const a=this._dom.createElement("a");if(this._dom.safelySetHref(a,e.url),!a.href){const a=this._renderText(e.text);return a.classList.add("lh-link"),a}return a.rel="noopener",a.target="_blank",a.textContent=e.text,a.classList.add("lh-link"),a}_renderText(e){const a=this._dom.createElement("div","lh-text");return a.textContent=e,a}_renderNumeric(e){const a=ue.i18n.formatNumber(e.value,e.granularity||.1),n=this._dom.createElement("div","lh-numeric");return n.textContent=a,n}_renderThumbnail(e){const a=this._dom.createElement("img","lh-thumbnail"),n=e;return a.src=n,a.title=n,a.alt="",a}_renderUnknown(e,a){console.error(`Unknown details type: ${e}`,a);const 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(a,null,2),n}_renderTableValue(e,a){if(null==e)return null;if("object"==typeof e)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(a.valueType){case"bytes":{const n=Number(e);return this._renderBytes({value:n,granularity:a.granularity})}case"code":{const a=String(e);return this._renderCode(a)}case"ms":{const n={value:Number(e),granularity:a.granularity,displayUnit:a.displayUnit};return this._renderMilliseconds(n)}case"numeric":{const n=Number(e);return this._renderNumeric({value:n,granularity:a.granularity})}case"text":{const a=String(e);return this._renderText(a)}case"thumbnail":{const a=String(e);return this._renderThumbnail(a)}case"timespanMs":{const a=Number(e);return this._renderMilliseconds({value:a})}case"url":{const a=String(e);return xa.some((e=>a.startsWith(e)))?this.renderTextURL(a):this._renderCode(a)}default:return this._renderUnknown(a.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,a){const n=this._dom.createElement("tr");for(const t of a){if(!t||!t.key){this._dom.createChildOf(n,"td","lh-table-column--empty");continue}const a=e[t.key];let i;if(null!=a&&(i=this._renderTableValue(a,t)),i){const e=`lh-table-column--${t.valueType}`;this._dom.createChildOf(n,"td",e).append(i)}else this._dom.createChildOf(n,"td","lh-table-column--empty")}return n}_renderTableRowsFromItem(e,a){const n=this._dom.createFragment();if(n.append(this._renderTableRow(e,a)),!e.subItems)return n;const t=a.map(this._getDerivedSubItemsHeading);if(!t.some(Boolean))return n;for(const a of e.subItems.items){const e=this._renderTableRow(a,t);e.classList.add("lh-sub-item-row"),n.append(e)}return n}_adornEntityGroupRow(e){const a=e.dataset.entity;if(!a)return;const n=this._entities?.find((e=>e.name===a));if(!n)return;const t=this._dom.find("td",e);if(n.category){const e=this._dom.createElement("span");e.classList.add("lh-audit__adorn"),e.textContent=n.category,t.append(" ",e)}if(n.isFirstParty){const e=this._dom.createElement("span");e.classList.add("lh-audit__adorn","lh-audit__adorn1p"),e.textContent=ue.strings.firstPartyChipLabel,t.append(" ",e)}if(n.homepage){const e=this._dom.createElement("a");e.href=n.homepage,e.target="_blank",e.title=ue.strings.openInANewTabTooltip,e.classList.add("lh-report-icon--external"),t.append(" ",e)}}_renderEntityGroupRow(e,a){const n={...a[0]};n.valueType="text";const t=[n,...a.slice(1)],i=this._dom.createFragment();return i.append(this._renderTableRow(e,t)),this._dom.find("tr",i).classList.add("lh-row--group"),i}_getEntityGroupItems(e){const{items:a,headings:n,sortedBy:t}=e;if(!a.length||e.isEntityGrouped||!a.some((e=>e.entity)))return[];const i=new Set(e.skipSumming||[]),o=[];for(const e of n)e.key&&!i.has(e.key)&&La.includes(e.valueType)&&o.push(e.key);const r=n[0].key;if(!r)return[];const s=new Map;for(const e of a){const a="string"==typeof e.entity?e.entity:void 0,n=s.get(a)||{[r]:a||ue.strings.unattributable,entity:a};for(const a of o)n[a]=Number(n[a]||0)+Number(e[a]||0);s.set(a,n)}const l=[...s.values()];return t&&l.sort(me.getTableItemSortComparator(t)),l}_renderTable(e){if(!e.items.length)return this._dom.createElement("span");const a=this._dom.createElement("table","lh-table"),n=this._dom.createChildOf(a,"thead"),t=this._dom.createChildOf(n,"tr");for(const a of e.headings){const e=`lh-table-column--${a.valueType||"text"}`,n=this._dom.createElement("div","lh-text");n.textContent=a.label,this._dom.createChildOf(t,"th",e).append(n)}const i=this._getEntityGroupItems(e),o=this._dom.createChildOf(a,"tbody");if(i.length)for(const a of i){const n="string"==typeof a.entity?a.entity:void 0,t=this._renderEntityGroupRow(a,e.headings);for(const a of e.items.filter((e=>e.entity===n)))t.append(this._renderTableRowsFromItem(a,e.headings));const i=this._dom.findAll("tr",t);n&&i.length&&(i.forEach((e=>e.dataset.entity=n)),this._adornEntityGroupRow(i[0])),o.append(t)}else{let a=!0;for(const n of e.items){const t=this._renderTableRowsFromItem(n,e.headings),i=this._dom.findAll("tr",t),r=i[0];if("string"==typeof n.entity&&(r.dataset.entity=n.entity),e.isEntityGrouped&&n.entity)r.classList.add("lh-row--group"),this._adornEntityGroupRow(r);else for(const e of i)e.classList.add(a?"lh-row--even":"lh-row--odd");a=!a,o.append(t)}}return a}_renderList(e){const a=this._dom.createElement("div","lh-list");return e.items.forEach((e=>{const n=this.render(e);n&&a.append(n)})),a}renderNode(e){const a=this._dom.createElement("span","lh-node");if(e.nodeLabel){const n=this._dom.createElement("div");n.textContent=e.nodeLabel,a.append(n)}if(e.snippet){const n=this._dom.createElement("div");n.classList.add("lh-node__snippet"),n.textContent=e.snippet,a.append(n)}if(e.selector&&(a.title=e.selector),e.path&&a.setAttribute("data-path",e.path),e.selector&&a.setAttribute("data-selector",e.selector),e.snippet&&a.setAttribute("data-snippet",e.snippet),!this._fullPageScreenshot)return a;const n=e.lhId&&this._fullPageScreenshot.nodes[e.lhId];if(!n||0===n.width||0===n.height)return a;const t=Ua.render(this._dom,this._fullPageScreenshot.screenshot,n,{width:147,height:100});return t&&a.prepend(t),a}renderSourceLocation(e){if(!e.url)return null;const a=`${e.url}:${e.line+1}:${e.column}`;let n,t;if(e.original){n=`${e.original.file||"<unmapped>"}:${e.original.line+1}:${e.original.column}`}if("network"===e.urlProvider&&n)t=this._renderLink({url:e.url,text:n}),t.title=`maps to generated location ${a}`;else if("network"!==e.urlProvider||n)if("comment"===e.urlProvider&&n)t=this._renderText(`${n} (from source map)`),t.title=`${a} (from sourceURL)`;else{if("comment"!==e.urlProvider||n)return null;t=this._renderText(`${a} (from sourceURL)`)}else t=this.renderTextURL(e.url),this._dom.find(".lh-link",t).textContent+=`:${e.line+1}:${e.column}`;return t.classList.add("lh-source-location"),t.setAttribute("data-source-url",e.url),t.setAttribute("data-source-line",String(e.line)),t.setAttribute("data-source-column",String(e.column)),t}_renderFilmstrip(e){const a=this._dom.createElement("div","lh-filmstrip");for(const n of e.items){const e=this._dom.createChildOf(a,"div","lh-filmstrip__frame"),t=this._dom.createChildOf(e,"img","lh-filmstrip__thumbnail");t.src=n.data,t.alt="Screenshot"}return a}_renderCode(e){const a=this._dom.createElement("pre","lh-code");return a.textContent=e,a}}
|
|
121
121
|
/**
|
|
122
122
|
* @license
|
|
123
123
|
* Copyright 2018 The Lighthouse Authors. All Rights Reserved.
|
|
@@ -133,7 +133,7 @@ class ka{constructor(e,a){this._document=e,this._lighthouseChannel="unknown",thi
|
|
|
133
133
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
134
134
|
* See the License for the specific language governing permissions and
|
|
135
135
|
* limitations under the License.
|
|
136
|
-
*/class
|
|
136
|
+
*/class Ia extends wa{_renderMetric(e){const a=this.dom.createComponent("metric"),n=this.dom.find(".lh-metric",a);n.id=e.result.id;const t=me.calculateRating(e.result.score,e.result.scoreDisplayMode);n.classList.add(`lh-metric--${t}`);this.dom.find(".lh-metric__title",a).textContent=e.result.title;const i=this.dom.find(".lh-metric__value",a);i.textContent=e.result.displayValue||"";const o=this.dom.find(".lh-metric__description",a);if(o.append(this.dom.convertMarkdownLinkSnippets(e.result.description)),"error"===e.result.scoreDisplayMode){o.textContent="",i.textContent="Error!";this.dom.createChildOf(o,"span").textContent=e.result.errorMessage||"Report error: no metric information"}else"notApplicable"===e.result.scoreDisplayMode&&(i.textContent="--");return n}_renderOpportunity(e,a){const n=this.dom.createComponent("opportunity"),t=this.populateAuditValues(e,n);if(t.id=e.result.id,!e.result.details||"error"===e.result.scoreDisplayMode)return t;const i=e.result.details;if(void 0===i.overallSavingsMs)return t;const o=this.dom.find("span.lh-audit__display-text, div.lh-audit__display-text",t),r=i.overallSavingsMs/a*100+"%";if(this.dom.find("div.lh-sparkline__bar",t).style.width=r,o.textContent=ue.i18n.formatSeconds(i.overallSavingsMs,.01),e.result.displayValue){const a=e.result.displayValue;this.dom.find("div.lh-load-opportunity__sparkline",t).title=a,o.title=a}return t}_getWastedMs(e){if(e.result.details){const a=e.result.details;if("number"!=typeof a.overallSavingsMs)throw new Error("non-opportunity details passed to _getWastedMs");return a.overallSavingsMs}return Number.MIN_VALUE}_getScoringCalculatorHref(e){const a=e.filter((e=>"metrics"===e.group)),n=e.find((e=>"interactive"===e.id)),t=e.find((e=>"first-cpu-idle"===e.id)),i=e.find((e=>"first-meaningful-paint"===e.id));n&&a.push(n),t&&a.push(t),i&&a.push(i);const o=[...a.map((e=>{let a;var n;return"number"==typeof e.result.numericValue?(a="cumulative-layout-shift"===e.id?(n=e.result.numericValue,Math.round(100*n)/100):Math.round(e.result.numericValue),a=a.toString()):a="null",[e.acronym||e.id,a]}))];ue.reportJson&&(o.push(["device",ue.reportJson.configSettings.formFactor]),o.push(["version",ue.reportJson.lighthouseVersion]));const r=new URLSearchParams(o),s=new URL("https://googlechrome.github.io/lighthouse/scorecalc/");return s.hash=r.toString(),s.href}_classifyPerformanceAudit(e){return e.group?null:void 0!==e.result.details?.overallSavingsMs?"load-opportunity":"diagnostic"}render(e,a,n){const t=ue.strings,i=this.dom.createElement("div","lh-category");i.id=e.id,i.append(this.renderCategoryHeader(e,a,n));const o=e.auditRefs.filter((e=>"metrics"===e.group));if(o.length){const[n,r]=this.renderAuditGroup(a.metrics),s=this.dom.createElement("input","lh-metrics-toggle__input"),l=`lh-metrics-toggle${ue.getUniqueSuffix()}`;s.setAttribute("aria-label","Toggle the display of metric descriptions"),s.type="checkbox",s.id=l,n.prepend(s);const p=this.dom.find(".lh-audit-group__header",n),u=this.dom.createChildOf(p,"label","lh-metrics-toggle__label");u.htmlFor=l;const c=this.dom.createChildOf(u,"span","lh-metrics-toggle__labeltext--show"),d=this.dom.createChildOf(u,"span","lh-metrics-toggle__labeltext--hide");c.textContent=ue.strings.expandView,d.textContent=ue.strings.collapseView;const m=this.dom.createElement("div","lh-metrics-container");if(n.insertBefore(m,r),o.forEach((e=>{m.append(this._renderMetric(e))})),i.querySelector(".lh-gauge__wrapper")){const a=this.dom.find(".lh-category-header__description",i),n=this.dom.createChildOf(a,"div","lh-metrics__disclaimer"),o=this.dom.convertMarkdownLinkSnippets(t.varianceDisclaimer);n.append(o);const r=this.dom.createChildOf(n,"a","lh-calclink");r.target="_blank",r.textContent=t.calculatorLink,this.dom.safelySetHref(r,this._getScoringCalculatorHref(e.auditRefs))}n.classList.add("lh-audit-group--metrics"),i.append(n)}const r=this.dom.createChildOf(i,"div","lh-filmstrip-container"),s=e.auditRefs.find((e=>"screenshot-thumbnails"===e.id))?.result;if(s?.details){r.id=s.id;const e=this.detailsRenderer.render(s.details);e&&r.append(e)}const l=e.auditRefs.filter((e=>"load-opportunity"===this._classifyPerformanceAudit(e))).filter((e=>!me.showAsPassed(e.result))).sort(((e,a)=>this._getWastedMs(a)-this._getWastedMs(e))),p=o.filter((e=>!!e.relevantAudits));if(p.length&&this.renderMetricAuditFilter(p,i),l.length){const e=2e3,n=l.map((e=>this._getWastedMs(e))),o=Math.max(...n),r=Math.max(1e3*Math.ceil(o/1e3),e),[s,p]=this.renderAuditGroup(a["load-opportunities"]),u=this.dom.createComponent("opportunityHeader");this.dom.find(".lh-load-opportunity__col--one",u).textContent=t.opportunityResourceColumnLabel,this.dom.find(".lh-load-opportunity__col--two",u).textContent=t.opportunitySavingsColumnLabel;const c=this.dom.find(".lh-load-opportunity__header",u);s.insertBefore(c,p),l.forEach((e=>s.insertBefore(this._renderOpportunity(e,r),p))),s.classList.add("lh-audit-group--load-opportunities"),i.append(s)}const u=e.auditRefs.filter((e=>"diagnostic"===this._classifyPerformanceAudit(e))).filter((e=>!me.showAsPassed(e.result))).sort(((e,a)=>("informative"===e.result.scoreDisplayMode?100:Number(e.result.score))-("informative"===a.result.scoreDisplayMode?100:Number(a.result.score))));if(u.length){const[e,n]=this.renderAuditGroup(a.diagnostics);u.forEach((a=>e.insertBefore(this.renderAudit(a),n))),e.classList.add("lh-audit-group--diagnostics"),i.append(e)}const c=e.auditRefs.filter((e=>this._classifyPerformanceAudit(e)&&me.showAsPassed(e.result)));if(!c.length)return i;const d={auditRefs:c,groupDefinitions:a},m=this.renderClump("passed",d);i.append(m);const h=[];if(["performance-budget","timing-budget"].forEach((a=>{const n=e.auditRefs.find((e=>e.id===a));if(n?.result.details){const e=this.detailsRenderer.render(n.result.details);e&&(e.id=a,e.classList.add("lh-details","lh-details--budget","lh-audit"),h.push(e))}})),h.length>0){const[e,n]=this.renderAuditGroup(a.budgets);h.forEach((a=>e.insertBefore(a,n))),e.classList.add("lh-audit-group--budgets"),i.append(e)}return i}renderMetricAuditFilter(e,a){const n=this.dom.createElement("div","lh-metricfilter");this.dom.createChildOf(n,"span","lh-metricfilter__text").textContent=ue.strings.showRelevantAudits;const t=[{acronym:"All"},...e],i=ue.getUniqueSuffix();for(const e of t){const t=`metric-${e.acronym}-${i}`,o=this.dom.createChildOf(n,"input","lh-metricfilter__radio");o.type="radio",o.name=`metricsfilter-${i}`,o.id=t;const r=this.dom.createChildOf(n,"label","lh-metricfilter__label");r.htmlFor=t,r.title=e.result?.title,r.textContent=e.acronym||e.id,"All"===e.acronym&&(o.checked=!0,r.classList.add("lh-metricfilter__label--active")),a.append(n),o.addEventListener("input",(n=>{for(const e of a.querySelectorAll("label.lh-metricfilter__label"))e.classList.toggle("lh-metricfilter__label--active",e.htmlFor===t);a.classList.toggle("lh-category--filtered","All"!==e.acronym);for(const n of a.querySelectorAll("div.lh-audit"))"All"!==e.acronym?(n.hidden=!0,e.relevantAudits&&e.relevantAudits.includes(n.id)&&(n.hidden=!1)):n.hidden=!1;const i=a.querySelectorAll("div.lh-audit-group, details.lh-audit-group");for(const e of i){e.hidden=!1;const a=Array.from(e.querySelectorAll("div.lh-audit")),n=!!a.length&&a.every((e=>e.hidden));e.hidden=n}}))}}}
|
|
137
137
|
/**
|
|
138
138
|
* @license
|
|
139
139
|
* Copyright 2018 The Lighthouse Authors. All Rights Reserved.
|
|
@@ -149,7 +149,7 @@ class ka{constructor(e,a){this._document=e,this._lighthouseChannel="unknown",thi
|
|
|
149
149
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
150
150
|
* See the License for the specific language governing permissions and
|
|
151
151
|
* limitations under the License.
|
|
152
|
-
*/class
|
|
152
|
+
*/class Na extends wa{render(e,a={}){const n=this.dom.createElement("div","lh-category");n.id=e.id,n.append(this.renderCategoryHeader(e,a));const t=e.auditRefs,i=t.filter((e=>"manual"!==e.result.scoreDisplayMode)),o=this._renderAudits(i,a);n.append(o);const r=t.filter((e=>"manual"===e.result.scoreDisplayMode)),s=this.renderClump("manual",{auditRefs:r,description:e.manualDescription});return n.append(s),n}renderCategoryScore(e,a){if(null===e.score)return super.renderScoreGauge(e,a);const n=this.dom.createComponent("gaugePwa"),t=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");Na._makeSvgReferencesUnique(i);const o=this._getGroupIds(e.auditRefs),r=this._getPassingGroupIds(e.auditRefs);if(r.size===o.size)t.classList.add("lh-badged--all");else for(const e of r)t.classList.add(`lh-badged--${e}`);return this.dom.find(".lh-gauge__label",n).textContent=e.title,t.title=this._getGaugeTooltip(e.auditRefs,a),n}_getGroupIds(e){const a=e.map((e=>e.group)).filter((e=>!!e));return new Set(a)}_getPassingGroupIds(e){const a=this._getGroupIds(e);for(const n of e)!me.showAsPassed(n.result)&&n.group&&a.delete(n.group);return a}_getGaugeTooltip(e,a){const n=this._getGroupIds(e),t=[];for(const i of n){const n=e.filter((e=>e.group===i)),o=n.length,r=n.filter((e=>me.showAsPassed(e.result))).length,s=a[i].title;t.push(`${s}: ${r}/${o}`)}return t.join(", ")}_renderAudits(e,a){const n=this.renderUnexpandableClump(e,a),t=this._getPassingGroupIds(e);for(const e of t){this.dom.find(`.lh-audit-group--${e}`,n).classList.add("lh-badged")}return n}static _makeSvgReferencesUnique(e){const a=e.querySelector("defs");if(!a)return;const n=ue.getUniqueSuffix(),t=a.querySelectorAll("[id]");for(const a of t){const t=a.id,i=`${t}-${n}`;a.id=i;const o=e.querySelectorAll(`use[href="#${t}"]`);for(const e of o)e.setAttribute("href",`#${i}`);const r=e.querySelectorAll(`[fill="url(#${t})"]`);for(const e of r)e.setAttribute("fill",`url(#${i})`)}}}
|
|
153
153
|
/**
|
|
154
154
|
* @license
|
|
155
155
|
* Copyright 2017 The Lighthouse Authors. All Rights Reserved.
|
|
@@ -168,17 +168,17 @@ class ka{constructor(e,a){this._document=e,this._lighthouseChannel="unknown",thi
|
|
|
168
168
|
*
|
|
169
169
|
* Dummy text for ensuring report robustness: <\/script> pre$`post %%LIGHTHOUSE_JSON%%
|
|
170
170
|
* (this is handled by terser)
|
|
171
|
-
*/class
|
|
171
|
+
*/class Ta{constructor(e){this._dom=e,this._opts={}}renderReport(e,a,n){if(!this._dom.rootEl&&a){console.warn("Please adopt the new report API in renderer/api.js.");const e=a.closest(".lh-root");e?this._dom.rootEl=e:(a.classList.add("lh-root","lh-vars"),this._dom.rootEl=a)}else this._dom.rootEl&&a&&(this._dom.rootEl=a);n&&(this._opts=n),this._dom.setLighthouseChannel(e.configSettings.channel||"unknown");const t=me.prepareReportResult(e);return this._dom.rootEl.textContent="",this._dom.rootEl.append(this._renderReport(t)),this._dom.rootEl}_renderReportTopbar(e){const a=this._dom.createComponent("topbar"),n=this._dom.find("a.lh-topbar__url",a);return n.textContent=e.finalDisplayedUrl,n.title=e.finalDisplayedUrl,this._dom.safelySetHref(n,e.finalDisplayedUrl),a}_renderReportHeader(){const e=this._dom.createComponent("heading"),a=this._dom.createComponent("scoresWrapper");return this._dom.find(".lh-scores-wrapper-placeholder",e).replaceWith(a),e}_renderReportFooter(e){const a=this._dom.createComponent("footer");return this._renderMetaBlock(e,a),this._dom.find(".lh-footer__version_issue",a).textContent=ue.strings.footerIssue,this._dom.find(".lh-footer__version",a).textContent=e.lighthouseVersion,a}_renderMetaBlock(e,a){const n=me.getEmulationDescriptions(e.configSettings||{}),t=e.userAgent.match(/(\w*Chrome\/[\d.]+)/),i=Array.isArray(t)?t[1].replace("/"," ").replace("Chrome","Chromium"):"Chromium",o=e.configSettings.channel,r=e.environment.benchmarkIndex.toFixed(0),s=e.environment.credits?.["axe-core"],l=[`${ue.strings.runtimeSettingsBenchmark}: ${r}`,`${ue.strings.runtimeSettingsCPUThrottling}: ${n.cpuThrottling}`];n.screenEmulation&&l.push(`${ue.strings.runtimeSettingsScreenEmulation}: ${n.screenEmulation}`),s&&l.push(`${ue.strings.runtimeSettingsAxeVersion}: ${s}`);const p=[["date",`Captured at ${ue.i18n.formatDateTime(e.fetchTime)}`],["devices",`${n.deviceEmulation} with Lighthouse ${e.lighthouseVersion}`,l.join("\n")],["samples-one",ue.strings.runtimeSingleLoad,ue.strings.runtimeSingleLoadTooltip],["stopwatch",ue.strings.runtimeAnalysisWindow],["networkspeed",`${n.summary}`,`${ue.strings.runtimeSettingsNetworkThrottling}: ${n.networkThrottling}`],["chrome",`Using ${i}`+(o?` with ${o}`:""),`${ue.strings.runtimeSettingsUANetwork}: "${e.environment.networkUserAgent}"`]],u=this._dom.find(".lh-meta__items",a);for(const[e,a,n]of p){const t=this._dom.createChildOf(u,"li","lh-meta__item");if(t.textContent=a,n){t.classList.add("lh-tooltip-boundary");this._dom.createChildOf(t,"div","lh-tooltip").textContent=n}t.classList.add("lh-report-icon",`lh-report-icon--${e}`)}}_renderReportWarnings(e){if(!e.runWarnings||0===e.runWarnings.length)return this._dom.createElement("div");const a=this._dom.createComponent("warningsToplevel");this._dom.find(".lh-warnings__msg",a).textContent=ue.strings.toplevelWarningsMessage;const n=[];for(const a of e.runWarnings){const e=this._dom.createElement("li");e.append(this._dom.convertMarkdownLinkSnippets(a)),n.push(e)}return this._dom.find("ul",a).append(...n),a}_renderScoreGauges(e,a,n){const t=[],i=[],o=[];for(const r of Object.values(e.categories)){const s=n[r.id]||a,l=s.renderCategoryScore(r,e.categoryGroups||{},{gatherMode:e.gatherMode}),p=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",l);p&&(this._dom.safelySetHref(p,`#${r.id}`),p.addEventListener("click",(e=>{if(!p.matches('[href^="#"]'))return;const a=p.getAttribute("href"),n=this._dom.rootEl;if(!a||!n)return;const t=this._dom.find(a,n);e.preventDefault(),t.scrollIntoView()})),this._opts.onPageAnchorRendered?.(p)),me.isPluginCategory(r.id)?o.push(l):s.renderCategoryScore===a.renderCategoryScore?t.push(l):i.push(l)}return[...t,...i,...o]}_renderReport(e){ue.apply({providedStrings:e.i18n.rendererFormattedStrings,i18n:new ra(e.configSettings.locale),reportJson:e});const a=new za(this._dom,{fullPageScreenshot:e.fullPageScreenshot??void 0,entities:e.entities}),n=new wa(this._dom,a),t={performance:new Ia(this._dom,a),pwa:new Na(this._dom,a)},i=this._dom.createElement("div");i.append(this._renderReportHeader());const o=this._dom.createElement("div","lh-container"),r=this._dom.createElement("div","lh-report");let s;r.append(this._renderReportWarnings(e));1===Object.keys(e.categories).length?i.classList.add("lh-header--solo-category"):s=this._dom.createElement("div","lh-scores-header");const l=this._dom.createElement("div");if(l.classList.add("lh-scorescale-wrap"),l.append(this._dom.createComponent("scorescale")),s){const a=this._dom.find(".lh-scores-container",i);s.append(...this._renderScoreGauges(e,n,t)),a.append(s,l);const r=this._dom.createElement("div","lh-sticky-header");r.append(...this._renderScoreGauges(e,n,t)),o.append(r)}const p=this._dom.createElement("div","lh-categories");r.append(p);const u={gatherMode:e.gatherMode};for(const a of Object.values(e.categories)){const i=t[a.id]||n;i.dom.createChildOf(p,"div","lh-category-wrapper").append(i.render(a,e.categoryGroups,u))}n.injectFinalScreenshot(p,e.audits,l);const c=this._dom.createFragment();return this._opts.omitGlobalStyles||c.append(this._dom.createComponent("styles")),this._opts.omitTopbar||c.append(this._renderReportTopbar(e)),c.append(o),r.append(this._renderReportFooter(e)),o.append(i,r),e.fullPageScreenshot&&Ua.installFullPageScreenshot(this._dom.rootEl,e.fullPageScreenshot.screenshot),c}}
|
|
172
172
|
/**
|
|
173
173
|
* @license Copyright 2021 The Lighthouse Authors. All Rights Reserved.
|
|
174
174
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
175
175
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
176
|
-
*/function
|
|
176
|
+
*/function Ra(e,a){const n=e.rootEl;void 0===a?n.classList.toggle("lh-dark"):n.classList.toggle("lh-dark",a)}
|
|
177
177
|
/**
|
|
178
178
|
* @license Copyright 2021 The Lighthouse Authors. All Rights Reserved.
|
|
179
179
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
180
180
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
181
|
-
*/const
|
|
181
|
+
*/const Da="undefined"!=typeof btoa?btoa:e=>Buffer.from(e).toString("base64"),Ea="undefined"!=typeof atob?atob:e=>Buffer.from(e,"base64").toString();const ja={toBase64:async function(e,a){let n=(new TextEncoder).encode(e);if(a.gzip)if("undefined"!=typeof CompressionStream){const e=new CompressionStream("gzip"),a=e.writable.getWriter();a.write(n),a.close();const t=await new Response(e.readable).arrayBuffer();n=new Uint8Array(t)}else{n=window.pako.gzip(e)}let t="";for(let e=0;e<n.length;e+=5e3)t+=String.fromCharCode(...n.subarray(e,e+5e3));return Da(t)},fromBase64:function(e,a){const n=Ea(e),t=Uint8Array.from(n,(e=>e.charCodeAt(0)));if(a.gzip){return window.pako.ungzip(t,{to:"string"})}return(new TextDecoder).decode(t)}};
|
|
182
182
|
/**
|
|
183
183
|
* @license
|
|
184
184
|
* Copyright 2021 The Lighthouse Authors. All Rights Reserved.
|
|
@@ -194,23 +194,23 @@ class ka{constructor(e,a){this._document=e,this._lighthouseChannel="unknown",thi
|
|
|
194
194
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
195
195
|
* See the License for the specific language governing permissions and
|
|
196
196
|
* limitations under the License.
|
|
197
|
-
*/function
|
|
197
|
+
*/function Ma(){const e=window.location.host.endsWith(".vercel.app"),a=new URLSearchParams(window.location.search).has("dev");return e?`https://${window.location.host}/gh-pages`:a?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function Fa(e){const a=e.generatedTime,n=e.fetchTime||a;return`${e.lighthouseVersion}-${e.finalDisplayedUrl}-${n}`}async function Ba(e,a,n){const t=new URL(a),i=Boolean(window.CompressionStream);t.hash=await ja.toBase64(JSON.stringify(e),{gzip:i}),i&&t.searchParams.set("gzip","1"),window.open(t.toString(),n)}async function Oa(e){const a="viewer-"+Fa(e);!function(e,a,n){const t=new URL(a).origin;window.addEventListener("message",(function a(n){n.origin===t&&i&&n.data.opened&&(i.postMessage(e,t),window.removeEventListener("message",a))}));const i=window.open(a,n)}({lhr:e},Ma()+"/viewer/",a)}
|
|
198
198
|
/**
|
|
199
199
|
* @license Copyright 2021 The Lighthouse Authors. All Rights Reserved.
|
|
200
200
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
201
201
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
202
202
|
*/
|
|
203
|
-
class
|
|
203
|
+
class Ha{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())}}onMenuKeydown(e){const a=e.target;switch(e.code){case"ArrowUp":e.preventDefault(),this._getPreviousMenuItem(a).focus();break;case"ArrowDown":e.preventDefault(),this._getNextMenuItem(a).focus();break;case"Home":e.preventDefault(),this._getNextMenuItem().focus();break;case"End":e.preventDefault(),this._getPreviousMenuItem().focus()}}onDocumentKeyDown(e){27===e.keyCode&&this.close()}onMenuFocusOut(e){const a=e.relatedTarget;this._menuEl.contains(a)||this.close()}_getNextSelectableNode(e,a){const n=e.filter((e=>e instanceof HTMLElement&&(!e.hasAttribute("disabled")&&"none"!==window.getComputedStyle(e).display)));let t=a?n.indexOf(a)+1:0;return t>=n.length&&(t=0),n[t]}_getNextMenuItem(e){const a=Array.from(this._menuEl.childNodes);return this._getNextSelectableNode(a,e)}_getPreviousMenuItem(e){const a=Array.from(this._menuEl.childNodes).reverse();return this._getNextSelectableNode(a,e)}}
|
|
204
204
|
/**
|
|
205
205
|
* @license Copyright 2021 The Lighthouse Authors. All Rights Reserved.
|
|
206
206
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
207
207
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
208
|
-
*/class
|
|
208
|
+
*/class Wa{constructor(e,a){this.lhr,this._reportUIFeatures=e,this._dom=a,this._dropDownMenu=new Ha(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",(()=>Ra(this._dom))),this._setupStickyHeader()}onDropDownMenuClick(e){e.preventDefault();const a=e.target;if(a&&a.hasAttribute("data-action")){switch(a.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":{const e=JSON.stringify(this.lhr,null,2);this._reportUIFeatures._saveFile(new Blob([e],{type:"application/json"}));break}case"save-html":{const a=this._reportUIFeatures.getReportHtml();try{this._reportUIFeatures._saveFile(new Blob([a],{type:"text/html"}))}catch(e){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+e.message})}break}case"open-viewer":this._dom.isDevTools()?async function(e){const a="viewer-"+Fa(e),n=Ma()+"/viewer/";await Ba({lhr:e},n,a)}(this.lhr):Oa(this.lhr);break;case"save-gist":this._reportUIFeatures.saveAsGist();break;case"toggle-dark":Ra(this._dom)}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)&&80===e.keyCode&&this._dropDownMenu.close()}expandAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map((e=>e.open=!0))}collapseAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map((e=>e.open=!1))}_print(){this._reportUIFeatures._opts.onPrintOverride?this._reportUIFeatures._opts.onPrintOverride(this._dom.rootEl):self.print()}resetUIState(){this._dropDownMenu.close()}_getScrollParent(e){const{overflowY:a}=window.getComputedStyle(e);return"visible"!==a&&"hidden"!==a?e:e.parentElement?this._getScrollParent(e.parentElement):document}_setUpCollapseDetailsAfterPrinting(){"onbeforeprint"in self?self.addEventListener("afterprint",this.collapseAllDetails):self.matchMedia("print").addListener((e=>{e.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");const e=this._getScrollParent(this._dom.find(".lh-container",this._dom.rootEl));e.addEventListener("scroll",(()=>this._updateStickyHeader()));const a=e instanceof window.Document?document.documentElement:e;new window.ResizeObserver((()=>this._updateStickyHeader())).observe(a)}))))}_updateStickyHeader(){if(!this.stickyHeaderEl)return;const e=this.topbarEl.getBoundingClientRect().bottom>=this.categoriesEl.getBoundingClientRect().top,a=Array.from(this._dom.rootEl.querySelectorAll(".lh-category")).filter((e=>e.getBoundingClientRect().top-window.innerHeight/2<0)),n=a.length>0?a.length-1:0,t=this.stickyHeaderEl.querySelectorAll(".lh-gauge__wrapper, .lh-fraction__wrapper"),i=t[n],o=t[0].getBoundingClientRect().left,r=i.getBoundingClientRect().left-o;this.highlightEl.style.transform=`translate(${r}px)`,this.stickyHeaderEl.classList.toggle("lh-sticky-header--visible",e)}}
|
|
209
209
|
/**
|
|
210
210
|
* @license Copyright 2017 The Lighthouse Authors. All Rights Reserved.
|
|
211
211
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
212
212
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
213
|
-
*/function
|
|
213
|
+
*/function Ga(e,a){const n=a?new Date(a):new Date,t=n.toLocaleTimeString("en-US",{hour12:!1}),i=n.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");i.unshift(i.pop());return`${e}_${i.join("-")}_${t}`.replace(/[/?<>\\:*|"]/g,"-")}class Va{constructor(e,a={}){this.json,this._dom=e,this._opts=a,this._topbar=a.omitTopbar?null:new Wa(this,e),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(e){this.json=e,this._fullPageScreenshot=le.getFullPageScreenshot(e),this._topbar&&(this._topbar.enable(e),this._topbar.resetUIState()),this._setupMediaQueryListeners(),this._setupThirdPartyFilter(),this._setupElementScreenshotOverlay(this._dom.rootEl);const a=this._dom.isDevTools()||this._opts.disableDarkMode||this._opts.disableAutoDarkModeAndFireworks;!a&&window.matchMedia("(prefers-color-scheme: dark)").matches&&Ra(this._dom,!0);const n=["performance","accessibility","best-practices","seo"].every((a=>{const n=e.categories[a];return n&&1===n.score})),t=this._opts.disableFireworks||this._opts.disableAutoDarkModeAndFireworks;n&&!t&&(this._enableFireworks(),a||Ra(this._dom,!0));if(e.categories.performance&&e.categories.performance.auditRefs.some((a=>Boolean("metrics"===a.group&&e.audits[a.id].errorMessage)))){this._dom.find("input.lh-metrics-toggle__input",this._dom.rootEl).checked=!0}this.json.audits["script-treemap-data"]&&this.json.audits["script-treemap-data"].details&&this.addButton({text:ue.strings.viewTreemapLabel,icon:"treemap",onClick:()=>function(e){if(!e.audits["script-treemap-data"].details)throw new Error("no script treemap data found");Ba({lhr:{mainDocumentUrl:e.mainDocumentUrl,finalUrl:e.finalUrl,finalDisplayedUrl:e.finalDisplayedUrl,audits:{"script-treemap-data":e.audits["script-treemap-data"]},configSettings:{locale:e.configSettings.locale}}},Ma()+"/treemap/","treemap-"+Fa(e))}(this.json)}),this._opts.onViewTrace&&this.addButton({text:"simulate"===e.configSettings.throttlingMethod?ue.strings.viewOriginalTraceLabel:ue.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(const e of this._dom.findAll("[data-i18n]",this._dom.rootEl)){const a=e.getAttribute("data-i18n");e.textContent=ue.strings[a]}}addButton(e){const a=this._dom.rootEl.querySelector(".lh-audit-group--metrics");if(!a)return;let n=a.querySelector(".lh-buttons");n||(n=this._dom.createChildOf(a,"div","lh-buttons"));const t=["lh-button"];e.icon&&(t.push("lh-report-icon"),t.push(`lh-report-icon--${e.icon}`));const i=this._dom.createChildOf(n,"button",t.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(){const 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(){const e=["uses-rel-preconnect","third-party-facades"],a=["legacy-javascript"];Array.from(this._dom.rootEl.querySelectorAll("table.lh-table")).filter((e=>e.querySelector("td.lh-table-column--url, td.lh-table-column--source-location"))).filter((a=>{const n=a.closest(".lh-audit");if(!n)throw new Error(".lh-table not within audit");return!e.includes(n.id)})).forEach((e=>{const n=
|
|
214
214
|
/**
|
|
215
215
|
* @license
|
|
216
216
|
* Copyright 2017 The Lighthouse Authors. All Rights Reserved.
|
|
@@ -227,20 +227,20 @@ class Oa{constructor(e){this._dom=e,this._toggleEl,this._menuEl,this.onDocumentK
|
|
|
227
227
|
* See the License for the specific language governing permissions and
|
|
228
228
|
* limitations under the License.
|
|
229
229
|
*/
|
|
230
|
-
function(e){return Array.from(e.tBodies[0].rows)}(e).filter((e=>!e.classList.contains("lh-sub-item-row"))),
|
|
230
|
+
function(e){return Array.from(e.tBodies[0].rows)}(e),t=n.filter((e=>!e.classList.contains("lh-sub-item-row"))),i=this._getThirdPartyRows(t,le.getFinalDisplayedUrl(this.json)),o=n.some((e=>e.classList.contains("lh-row--even"))),r=this._dom.createComponent("3pFilter"),s=this._dom.find("input",r);s.addEventListener("change",(e=>{const a=e.target instanceof HTMLInputElement&&!e.target.checked;let n=!0,r=t[0];for(;r;){const e=a&&i.includes(r);do{r.classList.toggle("lh-row--hidden",e),o&&(r.classList.toggle("lh-row--even",!e&&n),r.classList.toggle("lh-row--odd",!e&&!n)),r=r.nextElementSibling}while(r&&r.classList.contains("lh-sub-item-row"));e||(n=!n)}}));const l=i.filter((e=>!e.classList.contains("lh-row--group"))).length;this._dom.find(".lh-3p-filter-count",r).textContent=`${l}`,this._dom.find(".lh-3p-ui-string",r).textContent=ue.strings.thirdPartyResourcesLabel;const p=i.length===t.length,u=!i.length;if((p||u)&&(this._dom.find("div.lh-3p-filter",r).hidden=!0),!e.parentNode)return;e.parentNode.insertBefore(r,e);const c=e.closest(".lh-audit");if(!c)throw new Error(".lh-table not within audit");a.includes(c.id)&&!p&&s.click()}))}_setupElementScreenshotOverlay(e){this._fullPageScreenshot&&Ua.installOverlayFeature({dom:this._dom,rootEl:e,overlayContainerEl:e,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(e,a){const n=le.getRootDomain(a),t=this.json.entities?.find((e=>!0===e.isFirstParty))?.name,i=[];for(const a of e){if(t){if(!a.dataset.entity||a.dataset.entity===t)continue}else{const e=a.querySelector("div.lh-text__url");if(!e)continue;const t=e.dataset.url;if(!t)continue;if(!(le.getRootDomain(t)!==n))continue}i.push(a)}return i}_saveFile(e){const a=e.type.match("json")?".json":".html",n=(t={finalDisplayedUrl:le.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime},Ga(new URL(t.finalDisplayedUrl).hostname,t.fetchTime)+a);var t;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(e,n):this._dom.saveFile(e,n)}}
|
|
231
231
|
/**
|
|
232
232
|
* @license Copyright 2021 The Lighthouse Authors. All Rights Reserved.
|
|
233
233
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
234
234
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
235
|
-
*/function Ga(){return new ka(document,document.documentElement).createComponent("styles")}const $a=({category:e,href:a,gatherMode:n})=>D("div",{ref:Ne((()=>function(e,a){const n=new ka(document,document.documentElement),t=new La(n);return new wa(n,t).renderCategoryScore(e,{},a)}(e,{gatherMode:n,omitLabel:!0,onPageAnchorRendered:e=>e.href=a})),[e,a]),"data-testid":"CategoryScore"}),Ja=({text:e})=>D("span",{ref:Ne((()=>{return a=e,new ka(document,document.documentElement).convertMarkdownCodeSnippets(a);var a}),[e])});function qa(e,a){switch(e){case"navigation":return a.navigationReport;case"timespan":return a.timespanReport;case"snapshot":return a.snapshotReport}}function Ka(e,a){switch(e){case"pass":return a.ratingPass;case"average":return a.ratingAverage;case"fail":return a.ratingFail;case"error":return a.ratingError}}function Za(e){return e.weight*(1-e.result.score)}function Ya(e){return e.result.details&&"opportunity"===e.result.details.type&&e.result.details.overallSavingsMs||0}const Xa=({audit:e})=>D("div",{className:`SummaryTooltipAudit SummaryTooltipAudit--${me.calculateRating(e.result.score,e.result.scoreDisplayMode)}`,children:D(Ja,{text:e.result.title})}),Qa=({category:e})=>{const a=da();const n=e.auditRefs.filter((function(a){return null!==a.result.score&&"metrics"!==a.group&&("hidden"!==a.group||"performance"!==e.id)&&(a.weight>0||Ya(a)>0)&&!me.showAsPassed(a.result)})).sort(((e,a)=>{const n=Za(e),t=Za(a);return n!==t?t-n:Ya(a)-Ya(e)})).splice(0,2);return n.length?D("div",{className:"SummaryTooltipAudits",children:[D("div",{className:"SummaryTooltipAudits__title",children:a.highestImpact}),n.map((e=>D(Xa,{audit:e},e.id)))]}):null},en=({category:e,gatherMode:a,url:n})=>{const t=da(),i=ma(),{numPassed:o,numPassableAudits:r,numInformative:s,totalWeight:l}=me.calculateCategoryFraction(e),p=ca(),u=me.shouldDisplayAsFraction(a),c=u?o/r:e.score,d=null===c?"error":me.calculateRating(c);return D("div",{className:"SummaryTooltip",children:[D("div",{className:"SummaryTooltip__title",children:qa(a,t)}),D("div",{className:"SummaryTooltip__url",children:n}),D(Te,{}),D("div",{className:"SummaryTooltip__category",children:[D("div",{className:"SummaryTooltip__category-title",children:e.title}),0!==l&&D("div",{className:`SummaryTooltip__rating SummaryTooltip__rating--${d}`,children:[D("span",{children:Ka(d,t)}),!u&&null!==e.score&&D(h,{children:[D("span",{children:" · "}),D("span",{children:p.formatter.formatInteger(100*e.score)})]})]})]}),D("div",{className:"SummaryTooltip__fraction",children:[D("span",{children:i(t.passedAuditCount,{numPassed:o})}),D("span",{children:" / "}),D("span",{children:i(t.passableAuditCount,{numPassableAudits:r})})]}),0!==s&&D("div",{className:"SummaryTooltip__informative",children:i(t.informativeAuditCount,{numInformative:s})}),D(Qa,{category:e})]})},an=({category:e,href:a,gatherMode:n,finalDisplayedUrl:t})=>D("div",{className:"SummaryCategory",children:D("div",e?{className:"SummaryCategory__content",children:[D($a,{category:e,href:a,gatherMode:n}),D(en,{category:e,gatherMode:n,url:t})]}:{className:"SummaryCategory__null","data-testid":"SummaryCategory__null"})}),nn=["performance","accessibility","best-practices","seo"],tn=({lhr:e})=>{const a=da();return D("div",{className:"SummaryNavigationHeader","data-testid":"SummaryNavigationHeader",children:[D(De,{}),D("div",{className:"SummaryNavigationHeader__url",children:D("a",{rel:"noopener",target:"_blank",href:e.finalDisplayedUrl,children:e.finalDisplayedUrl})}),D("div",{className:"SummaryNavigationHeader__category",children:a.categoryPerformance}),D("div",{className:"SummaryNavigationHeader__category",children:a.categoryAccessibility}),D("div",{className:"SummaryNavigationHeader__category",children:a.categoryBestPractices}),D("div",{className:"SummaryNavigationHeader__category",children:a.categorySeo})]})},on=({lhr:e,label:a,hashIndex:n})=>{const t=Y((()=>me.prepareReportResult(e)),[e]),i=da(),o=Le(e.gatherMode,i);return D("div",{className:"SummaryFlowStep",children:["navigation"===e.gatherMode||0===n?D(tn,{lhr:e}):D("div",{className:"SummaryFlowStep__separator",children:[D(De,{}),D(Te,{})]}),D(je,{lhr:e,width:40}),D(De,{mode:e.gatherMode}),D("div",{className:"SummaryFlowStep__label",children:[D("div",{className:"SummaryFlowStep__mode",children:o}),D("a",{className:"SummaryFlowStep__link",href:`#index=${n}`,children:a})]}),nn.map((a=>D(an,{category:t.categories[a],href:`#index=${n}&anchor=${a}`,gatherMode:e.gatherMode,finalDisplayedUrl:e.finalDisplayedUrl},a)))]})},rn=()=>D("div",{className:"SummaryFlow",children:ze().steps.map(((e,a)=>D(on,{lhr:e.lhr,label:e.name,hashIndex:a},e.lhr.fetchTime)))}),sn=()=>{const e=ze(),a=da(),n=ma();let t=0,i=0,o=0;for(const a of e.steps)switch(a.lhr.gatherMode){case"navigation":t++;break;case"timespan":i++;break;case"snapshot":o++}const r=[];t&&r.push(n(a.navigationReportCount,{numNavigation:t})),i&&r.push(n(a.timespanReportCount,{numTimespan:i})),o&&r.push(n(a.snapshotReportCount,{numSnapshot:o}));const s=r.join(" · ");return D("div",{className:"SummaryHeader",children:[D("div",{className:"SummaryHeader__title",children:a.summary}),D("div",{className:"SummaryHeader__subtitle",children:s})]})},ln=({children:e})=>D("div",{className:"SummarySectionHeader",children:[D("div",{className:"SummarySectionHeader__content",children:e}),D(Te,{})]}),pn=()=>{const e=da();return D("div",{className:"Summary","data-testid":"Summary",children:[D(sn,{}),D(Te,{}),D(ln,{children:e.allReports}),D(rn,{})]})};const un=({hashState:e})=>D("div",{ref:Ne((()=>function(e,a={}){const n=document.createElement("article");n.classList.add("lh-root","lh-vars");const t=new ka(n.ownerDocument,n);return new Na(t).renderReport(e,n,a),new Va(t,a).initFeatures(e),n}(e.currentLhr,{disableFireworks:!0,disableDarkMode:!0,omitTopbar:!0,omitGlobalStyles:!0,onPageAnchorRendered:a=>function(e,a){const n=e.cloneNode(!0);if(!n.hash)return n;const t=e.hash.substr(1);n.hash=`#index=${a}&anchor=${t}`,n.onclick=e=>{e.preventDefault();const a=document.getElementById(t);a&&a.scrollIntoView()},e.replaceWith(n)}(a,e.index)})),[e]),"data-testid":"Report"}),cn=e=>{const a=da();return D("div",{className:"HelpDialogColumn",children:[D("div",{className:"HelpDialogColumn__legend",children:[D("div",{className:"HelpDialogColumnTimeline",children:[e.icon,D("div",{className:"HelpDialogColumnTimeline__line"})]}),D("div",{className:"HelpDialogColumn__legend-label",children:e.userFriendlyModeLabel})]}),D("div",{className:"HelpDialogColumn__header",children:[D("div",{className:"HelpDialogColumn__header-title",children:e.lighthouseOfficialModeLabel}),D("p",{children:e.modeDescription})]}),D("div",{className:"HelpDialogColumn__use-cases",children:[D("p",{children:e.useCaseInstruction}),D("ul",{children:e.useCases.map(((e,a)=>D("li",{children:e},a)))})]}),D("div",{className:"HelpDialogColumn__categories",children:[D("p",{children:a.categories}),D("ul",{children:e.availableCategories.map(((e,a)=>D("li",{children:e},a)))})]})]})},dn=({onClose:e})=>{const a=da();return D("div",{className:"HelpDialog",children:[D("div",{className:"HelpDialog__title",children:[D("div",{children:a.helpDialogTitle}),D("div",{style:{flexGrow:1}}),D("button",{className:"HelpDialog__close",onClick:e,children:D(ye,{})})]}),D("div",{className:"HelpDialog__columns",children:[D(cn,{icon:D(ve,{}),userFriendlyModeLabel:a.navigationDescription,lighthouseOfficialModeLabel:a.navigationReport,modeDescription:a.navigationLongDescription,useCaseInstruction:a.helpUseCaseInstructionNavigation,useCases:[a.helpUseCaseNavigation1,a.helpUseCaseNavigation2,a.helpUseCaseNavigation3],availableCategories:[a.categoryPerformance,a.categoryAccessibility,a.categoryBestPractices,a.categorySeo,a.categoryProgressiveWebApp]}),D(cn,{icon:D(fe,{}),userFriendlyModeLabel:a.timespanDescription,lighthouseOfficialModeLabel:a.timespanReport,modeDescription:a.timespanLongDescription,useCaseInstruction:a.helpUseCaseInstructionTimespan,useCases:[a.helpUseCaseTimespan1,a.helpUseCaseTimespan2],availableCategories:[a.categoryPerformance,a.categoryBestPractices]}),D(cn,{icon:D(be,{}),userFriendlyModeLabel:a.snapshotDescription,lighthouseOfficialModeLabel:a.snapshotReport,modeDescription:a.snapshotLongDescription,useCaseInstruction:a.helpUseCaseInstructionSnapshot,useCases:[a.helpUseCaseSnapshot1,a.helpUseCaseSnapshot2],availableCategories:[a.categoryPerformance,a.categoryAccessibility,a.categoryBestPractices,a.categorySeo]})]})]})};function mn(e,a){const n=new Blob([a],{type:"text/html"}),t=function(e){const a=e.steps[0].lhr;return Wa(e.name.replace(/\s/g,"-"),a.fetchTime)}(e)+".html";mn.saveFile(n,t)}mn.saveFile=function(e,a){new ka(document,document.documentElement).saveFile(e,a)};const hn=()=>D("svg",{role:"img",class:"lh-topbar__logo",title:"Lighthouse logo",width:"24",height:"24",fill:"none",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",children:[D("path",{d:"m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z",fill:"#F63"}),D("path",{d:"M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z",fill:"#FFA385"}),D("path",{fill:"#FF3",d:"M20.5 10h7v7h-7z"})]}),gn=({onClick:e,label:a,children:n})=>D("button",{className:"TopbarButton",onClick:e,"aria-label":a,children:n}),vn=({onMenuClick:e})=>{const a=ze(),n=da(),[t,i]=J(!1),{getReportHtml:o,saveAsGist:r}=X(Pe);return D("div",{className:"Topbar",children:[D(gn,{onClick:e,label:"Button that opens and closes the sidebar",children:D(we,{})}),D("div",{className:"Topbar__logo",children:D(hn,{})}),D("div",{className:"Topbar__title",children:n.title}),o&&D(gn,{onClick:()=>{const e=o(a);mn(a,e)},label:"Button that saves the report as HTML",children:n.save}),r&&D(gn,{onClick:()=>r(a),label:"Button that saves the report to a gist",children:n.dropdownSaveGist}),D("div",{style:{flexGrow:1}}),D(gn,{onClick:()=>i((e=>!e)),label:"Button that toggles the help dialog",children:D("div",{className:"Topbar__help-label",children:[D(Se,{}),n.helpLabel]})}),t?D(dn,{onClose:()=>i(!1)}):null]})},fn=({lhr:e,position:a})=>D("div",{className:`HeaderThumbnail HeaderThumbnail--${a}`,children:[D(je,{lhr:e,height:"main"===a?120:80}),D("div",{className:"HeaderThumbnail__icon",children:D(Re,{mode:e.gatherMode})})]}),bn=({hashState:e})=>{const a=ze(),{index:n}=e,t=a.steps[n],i=a.steps[n-1],o=a.steps[n+1],r=da(),s=Le(t.lhr.gatherMode,r);return D("div",{className:"Header",children:[i&&D(h,{children:[a.steps[n-2]&&D("div",{className:"Header__segment"}),D("div",{className:"Header__prev-thumbnail",children:[D(fn,{lhr:i.lhr,position:"prev"}),D("div",{className:"Header__segment"})]}),D("a",{className:"Header__prev-title",href:"#index="+(n-1),children:i.name})]}),D("div",{className:"Header__current-thumbnail",children:D(fn,{lhr:t.lhr,position:"main"})}),D("div",{className:"Header__current-title",children:[t.name,D("div",{className:"Header__current-description",children:s})]}),o&&D(h,{children:[D("div",{className:"Header__next-thumbnail",children:[D("div",{className:"Header__segment"}),D(fn,{lhr:o.lhr,position:"next"})]}),D("a",{className:"Header__next-title",href:`#index=${n+1}`,children:o.name}),a.steps[n+2]&&D("div",{className:"Header__segment"})]})]})},yn=()=>D("div",{ref:Ne(Ga)});const _n=()=>{const e=Ie(),a=Z(null);return K((()=>{const n=function(e){return e&&e.anchor?document.getElementById(e.anchor):null}(e);n?n.scrollIntoView():a.current&&(a.current.scrollTop=0)}),[e]),D("div",{ref:a,className:"Content",children:e?D(h,{children:[D(bn,{hashState:e}),D(un,{hashState:e})]}):D(pn,{})})},Cn=({flowResult:e,options:a})=>{const[n,t]=J(!1),i=Y((()=>a||{}),[a]);return D(Pe.Provider,{value:i,children:D(Ae.Provider,{value:e,children:D(ha,{children:[D(yn,{}),D("div",{className:xe("App",{"App--collapsed":n}),"data-testid":"App",children:[D(vn,{onMenuClick:()=>t((e=>!e))}),D(Ca,{}),D(_n,{})]})]})})})};
|
|
235
|
+
*/function $a(){return new ka(document,document.documentElement).createComponent("styles")}const Ja=({category:e,href:a,gatherMode:n})=>D("div",{ref:Ne((()=>function(e,a){const n=new ka(document,document.documentElement),t=new za(n);return new wa(n,t).renderCategoryScore(e,{},a)}(e,{gatherMode:n,omitLabel:!0,onPageAnchorRendered:e=>e.href=a})),[e,a]),"data-testid":"CategoryScore"}),qa=({text:e})=>D("span",{ref:Ne((()=>{return a=e,new ka(document,document.documentElement).convertMarkdownCodeSnippets(a);var a}),[e])});function Ka(e,a){switch(e){case"navigation":return a.navigationReport;case"timespan":return a.timespanReport;case"snapshot":return a.snapshotReport}}function Za(e,a){switch(e){case"pass":return a.ratingPass;case"average":return a.ratingAverage;case"fail":return a.ratingFail;case"error":return a.ratingError}}function Ya(e){return e.weight*(1-e.result.score)}function Xa(e){return e.result.details&&e.result.details.overallSavingsMs||0}const Qa=({audit:e})=>D("div",{className:`SummaryTooltipAudit SummaryTooltipAudit--${me.calculateRating(e.result.score,e.result.scoreDisplayMode)}`,children:D(qa,{text:e.result.title})}),en=({category:e})=>{const a=da();const n=e.auditRefs.filter((function(a){return null!==a.result.score&&"metrics"!==a.group&&("hidden"!==a.group||"performance"!==e.id)&&(a.weight>0||Xa(a)>0)&&!me.showAsPassed(a.result)})).sort(((e,a)=>{const n=Ya(e),t=Ya(a);return n!==t?t-n:Xa(a)-Xa(e)})).splice(0,2);return n.length?D("div",{className:"SummaryTooltipAudits",children:[D("div",{className:"SummaryTooltipAudits__title",children:a.highestImpact}),n.map((e=>D(Qa,{audit:e},e.id)))]}):null},an=({category:e,gatherMode:a,url:n})=>{const t=da(),i=ma(),{numPassed:o,numPassableAudits:r,numInformative:s,totalWeight:l}=me.calculateCategoryFraction(e),p=ca(),u=me.shouldDisplayAsFraction(a),c=u?o/r:e.score,d=null===c?"error":me.calculateRating(c);return D("div",{className:"SummaryTooltip",children:[D("div",{className:"SummaryTooltip__title",children:Ka(a,t)}),D("div",{className:"SummaryTooltip__url",children:n}),D(Te,{}),D("div",{className:"SummaryTooltip__category",children:[D("div",{className:"SummaryTooltip__category-title",children:e.title}),0!==l&&D("div",{className:`SummaryTooltip__rating SummaryTooltip__rating--${d}`,children:[D("span",{children:Za(d,t)}),!u&&null!==e.score&&D(h,{children:[D("span",{children:" · "}),D("span",{children:p.formatter.formatInteger(100*e.score)})]})]})]}),D("div",{className:"SummaryTooltip__fraction",children:[D("span",{children:i(t.passedAuditCount,{numPassed:o})}),D("span",{children:" / "}),D("span",{children:i(t.passableAuditCount,{numPassableAudits:r})})]}),0!==s&&D("div",{className:"SummaryTooltip__informative",children:i(t.informativeAuditCount,{numInformative:s})}),D(en,{category:e})]})},nn=({category:e,href:a,gatherMode:n,finalDisplayedUrl:t})=>D("div",{className:"SummaryCategory",children:D("div",e?{className:"SummaryCategory__content",children:[D(Ja,{category:e,href:a,gatherMode:n}),D(an,{category:e,gatherMode:n,url:t})]}:{className:"SummaryCategory__null","data-testid":"SummaryCategory__null"})}),tn=["performance","accessibility","best-practices","seo"],on=({lhr:e})=>{const a=da();return D("div",{className:"SummaryNavigationHeader","data-testid":"SummaryNavigationHeader",children:[D(De,{}),D("div",{className:"SummaryNavigationHeader__url",children:D("a",{rel:"noopener",target:"_blank",href:e.finalDisplayedUrl,children:e.finalDisplayedUrl})}),D("div",{className:"SummaryNavigationHeader__category",children:a.categoryPerformance}),D("div",{className:"SummaryNavigationHeader__category",children:a.categoryAccessibility}),D("div",{className:"SummaryNavigationHeader__category",children:a.categoryBestPractices}),D("div",{className:"SummaryNavigationHeader__category",children:a.categorySeo})]})},rn=({lhr:e,label:a,hashIndex:n})=>{const t=Y((()=>me.prepareReportResult(e)),[e]),i=da(),o=Le(e.gatherMode,i);return D("div",{className:"SummaryFlowStep",children:["navigation"===e.gatherMode||0===n?D(on,{lhr:e}):D("div",{className:"SummaryFlowStep__separator",children:[D(De,{}),D(Te,{})]}),D(je,{lhr:e,width:40}),D(De,{mode:e.gatherMode}),D("div",{className:"SummaryFlowStep__label",children:[D("div",{className:"SummaryFlowStep__mode",children:o}),D("a",{className:"SummaryFlowStep__link",href:`#index=${n}`,children:a})]}),tn.map((a=>D(nn,{category:t.categories[a],href:`#index=${n}&anchor=${a}`,gatherMode:e.gatherMode,finalDisplayedUrl:e.finalDisplayedUrl},a)))]})},sn=()=>D("div",{className:"SummaryFlow",children:ze().steps.map(((e,a)=>D(rn,{lhr:e.lhr,label:e.name,hashIndex:a},e.lhr.fetchTime)))}),ln=()=>{const e=ze(),a=da(),n=ma();let t=0,i=0,o=0;for(const a of e.steps)switch(a.lhr.gatherMode){case"navigation":t++;break;case"timespan":i++;break;case"snapshot":o++}const r=[];t&&r.push(n(a.navigationReportCount,{numNavigation:t})),i&&r.push(n(a.timespanReportCount,{numTimespan:i})),o&&r.push(n(a.snapshotReportCount,{numSnapshot:o}));const s=r.join(" · ");return D("div",{className:"SummaryHeader",children:[D("div",{className:"SummaryHeader__title",children:a.summary}),D("div",{className:"SummaryHeader__subtitle",children:s})]})},pn=({children:e})=>D("div",{className:"SummarySectionHeader",children:[D("div",{className:"SummarySectionHeader__content",children:e}),D(Te,{})]}),un=()=>{const e=da();return D("div",{className:"Summary","data-testid":"Summary",children:[D(ln,{}),D(Te,{}),D(pn,{children:e.allReports}),D(sn,{})]})};const cn=({hashState:e})=>D("div",{ref:Ne((()=>function(e,a={}){const n=document.createElement("article");n.classList.add("lh-root","lh-vars");const t=new ka(n.ownerDocument,n);return new Ta(t).renderReport(e,n,a),new Va(t,a).initFeatures(e),n}(e.currentLhr,{disableFireworks:!0,disableDarkMode:!0,omitTopbar:!0,omitGlobalStyles:!0,onPageAnchorRendered:a=>function(e,a){const n=e.cloneNode(!0);if(!n.hash)return n;const t=e.hash.substr(1);n.hash=`#index=${a}&anchor=${t}`,n.onclick=e=>{e.preventDefault();const a=document.getElementById(t);a&&a.scrollIntoView()},e.replaceWith(n)}(a,e.index)})),[e]),"data-testid":"Report"}),dn=e=>{const a=da();return D("div",{className:"HelpDialogColumn",children:[D("div",{className:"HelpDialogColumn__legend",children:[D("div",{className:"HelpDialogColumnTimeline",children:[e.icon,D("div",{className:"HelpDialogColumnTimeline__line"})]}),D("div",{className:"HelpDialogColumn__legend-label",children:e.userFriendlyModeLabel})]}),D("div",{className:"HelpDialogColumn__header",children:[D("div",{className:"HelpDialogColumn__header-title",children:e.lighthouseOfficialModeLabel}),D("p",{children:e.modeDescription})]}),D("div",{className:"HelpDialogColumn__use-cases",children:[D("p",{children:e.useCaseInstruction}),D("ul",{children:e.useCases.map(((e,a)=>D("li",{children:e},a)))})]}),D("div",{className:"HelpDialogColumn__categories",children:[D("p",{children:a.categories}),D("ul",{children:e.availableCategories.map(((e,a)=>D("li",{children:e},a)))})]})]})},mn=({onClose:e})=>{const a=da();return D("div",{className:"HelpDialog",children:[D("div",{className:"HelpDialog__title",children:[D("div",{children:a.helpDialogTitle}),D("div",{style:{flexGrow:1}}),D("button",{className:"HelpDialog__close",onClick:e,children:D(ye,{})})]}),D("div",{className:"HelpDialog__columns",children:[D(dn,{icon:D(ve,{}),userFriendlyModeLabel:a.navigationDescription,lighthouseOfficialModeLabel:a.navigationReport,modeDescription:a.navigationLongDescription,useCaseInstruction:a.helpUseCaseInstructionNavigation,useCases:[a.helpUseCaseNavigation1,a.helpUseCaseNavigation2,a.helpUseCaseNavigation3],availableCategories:[a.categoryPerformance,a.categoryAccessibility,a.categoryBestPractices,a.categorySeo,a.categoryProgressiveWebApp]}),D(dn,{icon:D(fe,{}),userFriendlyModeLabel:a.timespanDescription,lighthouseOfficialModeLabel:a.timespanReport,modeDescription:a.timespanLongDescription,useCaseInstruction:a.helpUseCaseInstructionTimespan,useCases:[a.helpUseCaseTimespan1,a.helpUseCaseTimespan2],availableCategories:[a.categoryPerformance,a.categoryBestPractices]}),D(dn,{icon:D(be,{}),userFriendlyModeLabel:a.snapshotDescription,lighthouseOfficialModeLabel:a.snapshotReport,modeDescription:a.snapshotLongDescription,useCaseInstruction:a.helpUseCaseInstructionSnapshot,useCases:[a.helpUseCaseSnapshot1,a.helpUseCaseSnapshot2],availableCategories:[a.categoryPerformance,a.categoryAccessibility,a.categoryBestPractices,a.categorySeo]})]})]})};function hn(e,a){const n=new Blob([a],{type:"text/html"}),t=function(e){const a=e.steps[0].lhr;return Ga(e.name.replace(/\s/g,"-"),a.fetchTime)}(e)+".html";hn.saveFile(n,t)}hn.saveFile=function(e,a){new ka(document,document.documentElement).saveFile(e,a)};const gn=()=>D("svg",{role:"img",class:"lh-topbar__logo",title:"Lighthouse logo",width:"24",height:"24",fill:"none",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",children:[D("path",{d:"m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z",fill:"#F63"}),D("path",{d:"M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z",fill:"#FFA385"}),D("path",{fill:"#FF3",d:"M20.5 10h7v7h-7z"})]}),vn=({onClick:e,label:a,children:n})=>D("button",{className:"TopbarButton",onClick:e,"aria-label":a,children:n}),fn=({onMenuClick:e})=>{const a=ze(),n=da(),[t,i]=J(!1),{getReportHtml:o,saveAsGist:r}=X(Pe);return D("div",{className:"Topbar",children:[D(vn,{onClick:e,label:"Button that opens and closes the sidebar",children:D(we,{})}),D("div",{className:"Topbar__logo",children:D(gn,{})}),D("div",{className:"Topbar__title",children:n.title}),o&&D(vn,{onClick:()=>{const e=o(a);hn(a,e)},label:"Button that saves the report as HTML",children:n.save}),r&&D(vn,{onClick:()=>r(a),label:"Button that saves the report to a gist",children:n.dropdownSaveGist}),D("div",{style:{flexGrow:1}}),D(vn,{onClick:()=>i((e=>!e)),label:"Button that toggles the help dialog",children:D("div",{className:"Topbar__help-label",children:[D(Se,{}),n.helpLabel]})}),t?D(mn,{onClose:()=>i(!1)}):null]})},bn=({lhr:e,position:a})=>D("div",{className:`HeaderThumbnail HeaderThumbnail--${a}`,children:[D(je,{lhr:e,height:"main"===a?120:80}),D("div",{className:"HeaderThumbnail__icon",children:D(Re,{mode:e.gatherMode})})]}),yn=({hashState:e})=>{const a=ze(),{index:n}=e,t=a.steps[n],i=a.steps[n-1],o=a.steps[n+1],r=da(),s=Le(t.lhr.gatherMode,r);return D("div",{className:"Header",children:[i&&D(h,{children:[a.steps[n-2]&&D("div",{className:"Header__segment"}),D("div",{className:"Header__prev-thumbnail",children:[D(bn,{lhr:i.lhr,position:"prev"}),D("div",{className:"Header__segment"})]}),D("a",{className:"Header__prev-title",href:"#index="+(n-1),children:i.name})]}),D("div",{className:"Header__current-thumbnail",children:D(bn,{lhr:t.lhr,position:"main"})}),D("div",{className:"Header__current-title",children:[t.name,D("div",{className:"Header__current-description",children:s})]}),o&&D(h,{children:[D("div",{className:"Header__next-thumbnail",children:[D("div",{className:"Header__segment"}),D(bn,{lhr:o.lhr,position:"next"})]}),D("a",{className:"Header__next-title",href:`#index=${n+1}`,children:o.name}),a.steps[n+2]&&D("div",{className:"Header__segment"})]})]})},_n=()=>D("div",{ref:Ne($a)});const Cn=()=>{const e=Ie(),a=Z(null);return K((()=>{const n=function(e){return e&&e.anchor?document.getElementById(e.anchor):null}(e);n?n.scrollIntoView():a.current&&(a.current.scrollTop=0)}),[e]),D("div",{ref:a,className:"Content",children:e?D(h,{children:[D(yn,{hashState:e}),D(cn,{hashState:e})]}):D(un,{})})},kn=({flowResult:e,options:a})=>{const[n,t]=J(!1),i=Y((()=>a||{}),[a]);return D(Pe.Provider,{value:i,children:D(Ae.Provider,{value:e,children:D(ha,{children:[D(_n,{}),D("div",{className:xe("App",{"App--collapsed":n}),"data-testid":"App",children:[D(fn,{onMenuClick:()=>t((e=>!e))}),D(Ca,{}),D(Cn,{})]})]})})})};
|
|
236
236
|
/**
|
|
237
237
|
* @license Copyright 2021 The Lighthouse Authors. All Rights Reserved.
|
|
238
238
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
239
239
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
240
240
|
*/
|
|
241
|
-
function
|
|
241
|
+
function wn(n,t,i){t.classList.add("flow-vars","lh-vars","lh-root"),function(n,t,i){var o,r,l;a.__&&a.__(n,t),r=(o="function"==typeof i)?null:i&&i.__k||t.__k,l=[],U(t,n=(!o&&i||t).__k=d(h,null,[n]),r||s,s,void 0!==t.ownerSVGElement,!o&&i?[i]:r?null:t.firstChild?e.call(t.childNodes):null,l,!o&&i?i:r?r.__e:t.firstChild,o),x(l,n)}(d(kn,{flowResult:n,options:i}),t)}
|
|
242
242
|
/**
|
|
243
243
|
* @license Copyright 2021 The Lighthouse Authors. All Rights Reserved.
|
|
244
244
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
245
245
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
246
|
-
*/window.__initLighthouseFlowReport__=function(){const e=document.body.querySelector("main");if(!e)throw Error("Container element not found");
|
|
246
|
+
*/window.__initLighthouseFlowReport__=function(){const e=document.body.querySelector("main");if(!e)throw Error("Container element not found");wn(window.__LIGHTHOUSE_FLOW_JSON__,e,{getReportHtml:()=>document.documentElement.outerHTML})},window.__initLighthouseFlowReport__()}();
|